實施微服務架構前,你得想明白這幾件事
對於任何一家技術企業來說,敏捷性都是至關重要的。面對不斷變化的技術和行業環境,如果一家公司需要花很長時間才能對變革做出反應,那麼結果很可能是將市場份額拱手讓給更敏捷的公司。
而微服務將應用拆分成小業務單元進行開發和部署,使用輕量級協議通訊,通過協同工作實現應用邏輯的架構模式,給予了應用更高的敏捷性、可伸縮性和可用性,而這也正是公司在擴大和推出新業務時所急需的。
聽起來很有價值,事實上微服務架構也的確稱為了眾多前沿公司的可行選擇,但在實施之前,你得想明白這幾件事:
業務是否足夠大
你的業務是否足夠大,有必要讓開發團隊在複雜專案上分頭工作?如果沒有,你可能暫時並不需要微服務架構。就像Martin Fowler所說,微服務架構的生產力成本只適用於大型複雜的軟體專案。
是否需要獨立部署元件
如果你部署的軟體專案有至少兩個domain,每個domain代表完全獨立的業務能力或流程,那麼實施微服務架構將是一個適合的選項。這樣做可以使應用的各個元件開生命週期獨立開來,在更新或部署應用程式時,不會影響其他元件。此外,可以讓每個元件採用不同的編碼語言。當然,微服務架構同時會需求單一元件由專門的開發團隊動態管理,因此你需要確保有足夠的人才和預算來這麼做。
團隊是否有足夠能力
微服務架構意味著,你需要建立專門從事某些專業領域的小型開發團隊,提高新功能開發和增強競爭優勢的能力。
因此團隊是否成熟,是否可以實現CI/CD,是否理解DevOps?如果答案是否定的,著手建立更強大的工程師團隊,或找到可以幫助補充團隊能力的外部資源,例如像Heroku、好雨雲這樣的提供開發、運維、應用交付支援的雲平臺。
公司的roadmap是否實際
指數級的擴張能力讓一些巨頭公司發展成了現在的樣子。例如Airbnb,在不到10年的時間裡,從床位租賃網站發展成為了300億美元規模的資料驅動型marketplace。對於成長型公司來說敏捷十分重要,但不是所有公司都有很大的擴張需求。如果你不需要面對複雜性的問題,那麼其實是沒必要實施微服務架構的。
因此要對公司的發展有一個客觀的判斷,至少是短時間內的成長判斷,最好不要讓開發流程在不需要複雜的時候過於複雜。
最後,當你確定要實施微服務架構,以下幾點經驗值得留意:
- 實施微服務架構後,一定要廣泛使用一旦實現了微服務架構,一定要廣泛使用領域驅動設計(DDD,Domain Driven Design),特別是bounded contexts
- 對於bounded contexts的定義沒有特別的規定,這取決於你使用的domain,當然一般情況下,context map是不錯的選擇
- 每個微服務應代表一個業務能力的,你應該專注於把元件做好,獨立於其他服務
- 確保你的團隊結構跟定製的bounded contexts保持一致。為了更好的享受微服務架構的優勢,你的團隊應該圍繞業務能力建立,而不是建立會增加額外負擔的“橫向”團隊
相關文章
- 在微服務架構中實施分散式事務鎖的幾個方案比較 - Prasanth Gullapalli微服務架構分散式
- 如何拆分你的微服務架構?微服務架構
- 微服務架構最佳實踐微服務架構
- 微服務架構下的服務呼叫與鑑權——某保險公司微服務平臺實施案例分享微服務架構
- 微服務2:微服務全景架構微服務架構
- 保護你微服務架構安全的三個最佳實踐微服務架構
- 微服務架構:構建PHP微服務生態微服務架構PHP
- 微服務架構初探微服務架構
- 微服務 dubbospring 架構微服務Spring架構
- SpringCloud微服務架構開發實戰SpringGCCloud微服務架構
- 微服務架構十條最佳實踐微服務架構
- vivo 海量微服務架構最新實踐微服務架構
- Ocelot+Consul實現微服務架構微服務架構
- 單體架構&微服務架構&中臺服務架構架構微服務
- 架構演進之「微服務架構」架構微服務
- 架構之:微服務架構漫談架構微服務
- 微服務架構(一):什麼是微服務微服務架構
- [雲原生微服務架構](十)微服務架構的基礎知識微服務架構
- 微服務架構知識及工程實踐微服務架構
- 微服務核心架構梳理微服務架構
- 微服務架構初識微服務架構
- 微服務架構詳談微服務架構
- 微服務與架構師微服務架構
- 聊聊微服務架構思想微服務架構
- 軟體架構模式之微服務架構架構模式微服務
- 微服務架構元件分析,看這篇就夠了微服務架構元件
- 微服務思考(02):微服務實施前有哪些問題?微服務
- 微服務架構和設計模式 - DZone微服務微服務架構設計模式
- SpringCloud(1) ——回顧微服務和微服務架構SpringGCCloud微服務架構
- 微服務架構—服務降級微服務架構
- 微服務業務架構的探索微服務架構
- 簡單實現微服務架構的實踐分享微服務架構
- spring微服務架構設計與輕量級微服務架構及最佳部署Spring微服務架構
- 微服務架構學習與思考(05):微服務架構適用場景分析微服務架構
- SOA架構和微服務架構的區別架構微服務
- 使用Conductor實現微服務架構中Saga模式微服務架構模式
- 個推微服務閘道器架構實踐微服務架構
- 面向微服務架構設計理念與實踐微服務架構
- 一起玩轉微服務(4)——如何實施微服務微服務