什么是 微服務( 四 )


你怎么知道你是否在做正確的微服務設計?如果您的團隊可以在不與其他團隊協調的情況下隨時部署更新,并且如果其他團隊可以類似地部署他們的更改而不影響您,那么恭喜您,您掌握了微服務的訣竅 。
失去微服務提供的好處的最可靠方法是不遵守解耦規則 。如果我們仔細觀察,我們會發現微服務都是關于自治的 。當這種自主權喪失時,團隊必須在開發和部署期間進行協調 。需要完美的集成測試來確保所有微服務協同工作 。
即便如此,詳盡的測試也無法捕捉到所有問題 。當出現問題時,耦合服務是很難調試的 。當問題被發現時,修復它并不總是像回滾更新那么容易 。
緊密的服務依賴關系創建團隊依賴關系 。
這些都是分布式計算帶來的問題 。如果您曾經使用過云服務,您就會知道將服務或機器分布在多個地理位置與在同一站點上運行所有內容不同 。分布式系統具有更高的延遲,可能存在同步問題,并且更難管理和調試 。這種高度耦合的服務架構實際上是一個分布式單體架構,具有兩全其美的優點,也沒有微服務應該帶來的任何好處 。
如果您在不與其他團隊協調或依賴其他微服務的特定版本來部署您的微服務的情況下無法進行部署,那么您只是在分發您的單體應用 。
微服務并沒有取代單體 。兩者都是有效的方法 。事實上,當團隊仍在 探索 他們正在構建的東西時,單體應用可能是最佳選擇 。
單體應用就像是項目的自然起點,因為它易于開發、快速迭代、快速部署、易于調試,并且更能容忍設計錯誤 。在可擴展性成為問題之前,單體應用可以讓您走得更遠 。
微服務是我們開發軟件的最具可擴展性的方式 。但它們不是免費的午餐 。如果您不小心,它們會帶來一些很容易發生沖突的風險 。當團隊正在成長并且您需要保持快速和敏捷時,它們非常有用 。但是你需要對要解決的問題有一個很好的理解,否則你最終會得到一個分布式的單體 。

推薦閱讀