單體應(yīng)用(Monolithic application)是指一個(gè)應(yīng)用程序以一體化的形式部署和運(yùn)行在一個(gè)獨(dú)立的進(jìn)程中,通常包含一個(gè)完整的應(yīng)用程序棧(application stack),包括用戶界面、應(yīng)用邏輯、數(shù)據(jù)存儲(chǔ)和處理等組件。單體應(yīng)用是傳統(tǒng)的應(yīng)用開發(fā)和部署方式,通常使用一個(gè)大型的代碼庫(kù),所有功能都在同一個(gè)代碼庫(kù)中實(shí)現(xiàn),整個(gè)應(yīng)用程序由一個(gè)運(yùn)行時(shí)進(jìn)程執(zhí)行,數(shù)據(jù)庫(kù)和其他資源都是共享的。
理解單體應(yīng)用可以類比成一個(gè)傳統(tǒng)的大型商場(chǎng),所有商品都在一個(gè)建筑物里面,商場(chǎng)有一個(gè)總控制中心來管理各個(gè)部門的運(yùn)營(yíng),不同的部門通過共享資源來協(xié)同工作。同樣地,單體應(yīng)用也是一個(gè)大型的應(yīng)用程序,所有功能都在同一個(gè)代碼庫(kù)中實(shí)現(xiàn),由一個(gè)運(yùn)行時(shí)進(jìn)程來執(zhí)行,不同的模塊通過共享資源來協(xié)同工作。
盡管單體應(yīng)用具有部署簡(jiǎn)單、開發(fā)效率高等優(yōu)點(diǎn),但也存在一些局限性,如擴(kuò)展性差、可靠性差、靈活性差等。隨著業(yè)務(wù)增長(zhǎng)和應(yīng)用規(guī)模擴(kuò)大,單體應(yīng)用的弊端逐漸顯露出來,因此,現(xiàn)在越來越多的應(yīng)用采用了微服務(wù)等分布式架構(gòu)來解決這些問題。