當一個業務應用程序(一個開發團隊)變得更大,達到一定的規模時,公司就會遇到嚴重的管理和合作瓶頸。此外,如果一個軟件產品基於一個巨大的整體架構,那麼它們也面臨着技術挑戰。在這種情況下,業務需要一個解決方案來修復工作流並增強項目上的協作。
一旦傳統後端整體結構的複雜性要求更高的可伸縮性,那麼微服務體系結構(MSA)就可以解決與傳統後端整體結構相關的問題。
Netflix、亞馬遜(Amazon)和優步(Uber)等大型科技公司展示了向微服務的遷移如何影響了它們的業務。非科技公司也從中受益。沃爾瑪通過微服務重振其在線業務的案例,可能是此類架構對傳統企業變革潛力的一個例子。
根據最近的調查,80%的公司依賴於微服務,並朝着完全的微服務體系結構發展。9%的軟件主要基於分佈式結構,38%將微服務與傳統的整體結合起來,33%計劃在不久的將來進行轉換。
Why:微服務在企業軟件開發中的角色
企業應用程序通常以整體的形式出現,例如MVC。這種通常的做法似乎是合理的,因爲支持要求較低,而且系統在小範圍內工作得很好。因此,如果它可以起作用,公司就不需要改變任何東西。
一旦系統變得太大而無法無縫地作爲一個整體進行維護,微服務就會發揮其業務節省的作用。一個常見的做法是將整體分解成小的獨立部分,每個部分由一個敏捷子團隊部署和維護。這樣你就把團隊協作問題拋在了腦後。
微服務的好處和困難
微服務解決了許多技術和協作問題,但它們並不完美。實際上,企業採用這種體系結構是因爲對於軟件性能至關重要的獨特優勢。但是採用者必須知道在使用這樣的系統時他們將面臨什麼樣的挑戰。
好處:
- Independence of elements:一個系統可以在沒有一個或幾個元素的情況下正常工作。
- 穩定性:首先,使用微服務體系結構,您可以更容易地擴展團隊。其次,更高的可伸縮性會影響開發速度。每個子團隊都有自己的待辦事項列表並獨立交付,所以他們可以以5倍的速度進行開發。
- 靈活性:如果您需要應用或嘗試新技術,microservices將允許您更容易地將其結合起來。
- 降低准入門檻: 您的開發團隊正在成長。因此,您決定切換到微服務來改進工作流。好處是雙向的:新專家可以更快地進入微服務體系結構。
困難:
- 分佈式系統: 多個模塊和數據庫之間有很多連接。因此,必須非常小心地處理請求、事務、數據管理。
- 測試:整體架構使用開箱即用的戰爭。QA專家只需要啓動該文件,以確認monolith與底層數據庫的連接。相反,微服務要求在開始測試之前對每個服務進行驗證。
When: 遷移到Mmicroservice體系結構的正確時機
微型服務的誕生是爲了滿足現代市場的需求。企業必須比競爭對手更好、更快地分析數據、創新和推出新產品和服務。它們需要靈活地滿足客戶不斷變化的需求。遷移到微服務體系結構使他們能夠更容易地做到這一點。
然而,企業通常只在實際需要發生時才接受這種解決方案。在大多數情況下,一個擁有超過25名成員的開發團隊在維護整體結構的同時,開始遭受協作困難。因此,採用微服務的計劃通常來自開發團隊或軟件供應商。
遷移到微服務可能是一個挑戰。但從長遠來看,這是值得的。
How: 遷移到微服務的方法
如何將微服務集成到整體架構中?
有兩種基本方法:
1. 將一個核心整體架構系統分割成微型服務
這種方式既困難又昂貴。完全重新平臺化可能需要長達一年的詳盡工作。由於微服務不是一種普通的體系結構,而且MSA的專業知識也很難獲得,因此這樣的項目需要有才華和技能的專家。
顯然,如果沒有真正的需要,任何企業都不應該採用這種方法。當現有的在線系統變得過於笨重、無法應付負載時,企業往往會決定採取如此激進的措施。因此,他們迫切需要重新開發過時的遺留軟件。
這不是一個容易的決定,因爲它需要大量的投資和人力。因此,如果你覺得你需要打破你的單一業務,建立一個全新的平臺與微服務,確保你有經驗豐富的建築師精通這個主題。
2. 保持整體,並在其周圍建立微型服務
當您的團隊過於龐大,無法維護整體功能並迅速添加新功能時,可能的解決方案是將新功能構建爲微服務。因此,新來者將作爲子團隊工作,而核心~25開發人員將繼續使用monolith。因此,當您在它周圍構建儘可能多的微服務時,這個整體就變成了一個大型宏服務。
即使您正在外包軟件開發,這種方法也不會干擾您的團隊的工作。一般來說,僱傭和配備使用微服務的新程序員更容易。此外,這種體系結構的靈活性增強了協作並促進了遠程團隊的管理。例如,您的現場工程師可能在軟件產品的整體和業務邏輯上工作,而一個外包團隊圍繞它開發多個微服務。
儘管如此,這種方法的陷阱是,如果您將來必須重新構建您的整體,那麼這個過程將是一個比一開始完全使用微服務更大的挑戰。在選擇這個選擇之前,最好三思而後行,選擇一個長期的策略。
現實世界的情況總是與理論不同,微服務案例也不例外。在決定遷移到微服務之前,企業應該始終考慮自己的業務需求、行業威脅和可能性。這兩種實現微服務的方法只是指導您完成此過程的里程碑。您的業務情況是獨特的,需要一個原始的解決方案。然而,改變是不可避免的,你需要準備好接受它。