本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

基於容器的應用程式設計原則

如今,幾乎任何應用程式都可以放入容器中並執行。然而,建立雲原生應用程式——即被Kubernetes等雲原生平臺有效自動化和編排的容器化應用程式——需要額外的努力。雲原生應用程式預料到故障;即使基礎設施發生中斷,它們也能可靠地執行和擴充套件。為了提供這些功能,Kubernetes等雲原生平臺對應用程式施加了一系列契約和約束。這些契約確保應用程式符合某些約束,並允許平臺自動化應用程式管理。

我總結了七項原則,供容器化應用程式遵循以實現完全雲原生。

| ----- | | | | 容器設計原則 |

這七項原則涵蓋了構建時和執行時關注點。

構建時

  • 單一關注點:每個容器處理一個單一的關注點並做好它。
  • 自包含:容器只依賴於Linux核心的存在。額外的庫在容器構建時新增。
  • 映象不變性:容器化應用程式旨在保持不變,一旦構建完成,預計在不同環境之間不會改變。

執行時

  • 高可觀察性:每個容器必須實現所有必要的API,以幫助平臺以最佳方式觀察和管理應用程式。
  • 生命週期一致性:容器必須有一種方法來讀取來自平臺的事件,並透過對這些事件做出反應來保持一致。
  • 程序可處置性:容器化應用程式必須儘可能短暫,並隨時準備被另一個容器例項替換。
  • 執行時限制:每個容器必須宣告其資源需求,並將資源使用限制在所指示的需求範圍內。構建時原則確保容器具有正確的粒度、一致性和結構。執行時原則規定了必須實現哪些功能,以便容器化應用程式擁有云原生功能。遵守這些原則有助於確保您的應用程式適用於Kubernetes中的自動化。

白皮書可免費下載

要了解更多關於為Kubernetes設計雲原生應用程式的資訊,請檢視我的Kubernetes Patterns一書。

Twitter:

部落格:http://www.ofbizian.com
領英

Bilgin Ibryam (@bibryam) 是紅帽公司的首席架構師,ASF 的開源提交者,博主,作者和演講者。他是《Camel 設計模式》和《Kubernetes 模式》兩本書的作者。在他的日常工作中,Bilgin 熱衷於指導、培訓和領導團隊在分散式系統、微服務、容器和雲原生應用程式方面取得成功。