程序不僅僅包括代碼本身山析,還包括整個(gè)代碼的運(yùn)行環(huán)境,如構(gòu)建的可運(yùn)行鏡像docker環(huán)境掏父,包含程序所依賴(lài)各種服務(wù)的k8s部署整體定義笋轨,所依賴(lài)的CI/CD環(huán)境。不但有代碼而且要有一個(gè)快速部署環(huán)境的定義,使得程序不僅僅是靜態(tài)的代碼而是一個(gè)可以快速部署的動(dòng)態(tài)的服務(wù)爵政。
有效的拆分邏輯(應(yīng)用)仅讽,是軟件開(kāi)發(fā)中關(guān)鍵的問(wèn)題(可維護(hù)性前提)。軟件開(kāi)發(fā)一直在解決程序的解耦問(wèn)題钾挟,從函數(shù)洁灵,到類(lèi),到類(lèi)庫(kù)掺出、組件徽千、包,再到動(dòng)態(tài)層級(jí)的微服務(wù)汤锨。
微服務(wù)并不是一個(gè)新的概念双抽,只是之前由于沒(méi)有很好的技術(shù)和工具,實(shí)現(xiàn)成本太高而沒(méi)有普及闲礼,隨著容器技術(shù)牍汹、CI/CD技術(shù)、k8s柬泽、Service Mesh 等技術(shù)框架的到來(lái)慎菲,微服務(wù)實(shí)施的難點(diǎn)一點(diǎn)點(diǎn)被擊破,微服務(wù)變得越來(lái)越流行锨并。微服務(wù)從整體運(yùn)行環(huán)境來(lái)解耦應(yīng)用(代碼層級(jí)露该,計(jì)算資源部署使用層級(jí) 網(wǎng)絡(luò)傳輸層級(jí))。
代碼不是微服務(wù)琳疏,微服務(wù)是由CI/CD流程工具有决、 分布式運(yùn)行環(huán)境(如k8s)闸拿、Service Mesh服務(wù)(監(jiān)控 log 熔斷 重試 驗(yàn)證)構(gòu)成空盼。
程序設(shè)計(jì)管理 為了解耦,微服務(wù)是更高層面的解耦新荤,微服務(wù)是一種架構(gòu)理念
微揽趾,狹義來(lái)講就是體積小,代碼體積小苛骨,團(tuán)隊(duì)規(guī)模小篱瞎,功能邏輯簡(jiǎn)單痒芝,從代碼功能層級(jí)講內(nèi)聚更高严衬,小團(tuán)隊(duì)更符合敏捷的思想粱挡,執(zhí)行效率更高榕堰。
引入微服務(wù)的點(diǎn)
1.復(fù)雜性逐漸變高
2.技術(shù)債務(wù)逐漸上升
3.部署速度逐漸變慢
4.阻礙技術(shù)創(chuàng)新
5.無(wú)法按需伸縮
微服務(wù)的好處
積木原則 模塊原則 使得程序構(gòu)建更加靈活
微服務(wù)每個(gè)服務(wù)都可以使用不同的開(kāi)發(fā)語(yǔ)言和技術(shù),使得開(kāi)發(fā)模式更靈活康二,團(tuán)隊(duì)更好構(gòu)建沫勿,更好分工,更好合作。
每個(gè)子系統(tǒng)就會(huì)更加內(nèi)聚瘟判,彼此的依賴(lài)耦合能變?nèi)酰缦到y(tǒng)的溝通成本也就能降低。
快速擴(kuò)容網(wǎng)絡(luò)
微服務(wù)帶來(lái)的挑戰(zhàn)
對(duì)公司整體技術(shù)要求提高了如要掌握CI/CD驮吱、docker纸型、K8S毕匀、 istio等相關(guān)技術(shù)皂岔,對(duì)公司架構(gòu)要求更高了躁垛,需要定義微服務(wù)的功能和邊界逊谋。