-
1、打包為輕量級容器:雲原生應用程式是打包為輕量級容器的獨立自治服務的集合。與虛擬機器不同,容器可以快速擴充套件和縮容。由於擴充套件單元轉移到容器,因此優化了基礎架構的利用率。
-
2、使用最佳語言和框架開發:雲原生應用程式的每項服務都是使用最適合該功能的語言和框架開發的。雲原生應用程式是多語言的;服務使用各種語言、執行時和框架。例如,開發人員可以構建基於在Node.js中開發的WebSockets的實時流服務,同時選擇Python和Flask來公開API。開發微服務的細粒度方法使他們能夠為特定工作選擇最佳語言和框架。
-
3、設計為松耦合的微服務:屬於同一應用程式的服務透過應用程式執行時相互發現。它們獨立於其他服務而存在。當正確整合時,彈性基礎架構和應用程式架構可以高效和高效能地進行擴充套件。
-
4、以API為中心進行互動和協作:雲原生服務使用輕量級API,這些API基於表述性狀態轉移(REST)、Google的開源遠端過程呼叫(gRPC)或NATS等協議。REST被用作透過超文字傳輸協議(HTTP)公開API的基本共識。為了提高效能,gRPC通常用於服務之間的內部通訊。NATS具有釋出-訂閱功能,可在應用程式內實現非同步通訊。
-
5、以無狀態和有狀態服務的清晰分離為架構基礎:持久可靠的服務遵循不同的樣式,以確保更高的可用性和彈性。無狀態服務獨立於有狀態服務。永續性成為一個必須越來越多地考慮因素,無狀態和一些人會爭論的微服務儲存環境的因素。
-
6、與伺服器和作業系統依賴關係隔離:雲原生應用程式與任何特定作業系統或單個計算機沒有關聯。它們在更高的抽象級別上執行。唯一的例外是微服務需要某些功能,包括固態驅動器(SSD)和圖形處理單元(GPU),這些功能可能由一部分機器專門提供。
-
7、部署在自服務、彈性、雲基礎架構上:雲原生應用程式部署在虛擬的、共享的和彈性的基礎架構上。它們可以與底層基礎架構保持一致,以動態增長和縮小-根據不同的負載調整自身。
-
8、透過敏捷DevOps流程進行管理:雲原生應用程式的每項服務都經歷一個獨立的生命週期,它們透過敏捷的DevOps流程進行管理。多個持續整合/連續交付(CI/CD)流水線可以協同工作以部署和管理雲原生應用程式。
-
9、自動化功能:雲原生應用程式可以高度自動化。它們與基礎設施即程式碼的概念相得益彰。實際上,僅需要一定程度的自動化來管理這些大型和複雜的應用程式。
-
10、定義的、策略驅動的資源分配:最後,雲原生應用程式與透過一組策略定義的治理模型保持一致。它們遵循諸如中央處理單元(CPU)和儲存配額以及將資源分配給服務的網路策略等策略。例如,在企業方案中,中央IT可以定義策略以為每個部門分配資源。每個部門的開發人員和DevOps團隊都擁有對共享資源的完全訪問權和所有權。