微服務特點與主要特徵

微服務 (Microservices) 特點

  • 每一個微服務均視爲是一個小型的系統。
  • 微服務各自擁有自己的私有倉儲 (資料庫)。
  • 微服務之間的互動是透過 API 的介接。
  • 每一個微服務是獨立的個體,所以可以爲各自的微服務採用不同的實作技術與系統的建置、部署及維護方式。

主要特徵 (Characteristics)

  • 經由服務 (service) 的元件化 (componentization)。
  • 圍繞業務能力 (business capability) 的組織 (organized)。
  • 分權化的治理 (Decentralized Governance)。
  • 寬鬆耦合 (loose coupling) 的連結性 (connectivity)。
  • 基礎設施的自動化 (Infrastructure Automation)。

經由服務的元件化

  • 元件 (Component) 的定義 – 可獨立替換與升級的軟體單元。
  • 將元件的設計分解至服務 (breaking down into services)。
  • 使用服務作爲元件的主要原因是服務可以獨立部署 (independently deployable)。
  • 使用服務作爲元件的另一個最大的好處是元件的介面 (interface) 非常明確。

圍繞業務能力的組織

  • 基於業務能力而非技術層面來組織開發團隊
    • 業務能力 – ex. 掛號服務、診療服務、病歷管理服務。
    • 技術層面 – ex. UI Team、後端邏輯 Team、資料庫 Team。
  • 每一個負責微服務開發的團隊是跨功能的,涵蓋了開發所需的全部技能 – 用戶體驗、資料庫與專案管理 … 等。
  • 服務組件所需的更明確的分離使得更容易保持團隊邊界清晰。
  • 充分實踐前宏碁創辦人施振榮總裁所倡導的「iO 聯網組織」。

分權化的治理

  • 建構微服務的團隊可以採用不同的標準方法
    • 使用正確的工具在正確的工作上。
    • 不需要在單一技術平台統一標準化。
  • 更爲敏捷化的開發 (agile development)。
  • 可以達成多個微服務開發的平行分工。
  • 每個微服務管理着自己的資料庫 – 它們可以使用自己的永續儲存技術,例如使用關聯資料庫或 NoSQL 資料庫。

寬鬆耦合的連結性

  • 由於微服務的元件化,使得可以保持每個微服務的獨立性 (isolation),服務之間只透過 API 的介接,因而形成良好的寬鬆耦合 (loose coupling) 效果。
  • 透過 HTTP REST 而達成服務之間輕量化的溝通。

基礎設施的自動化

  • 基礎設施自動化技術在過去幾年發生了重大的演化;AWS, Azure 等雲端 (Cloud) 平台提供了雲託管、運算、儲存與備援等機制,大幅降低操作微服務的建構、部署的複雜性。
  • 開發微服務的團隊可以使用這些基礎設施的自動化機制,得以輕易實現 CI (Continuous Integration) / CD (Continuous Deployment) 的持續整合與持續部署的自動化。

文章導覽

   

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。