1. 程式人生 > >雲原生應用的10大關鍵屬性

雲原生應用的10大關鍵屬性

交互 持久性 例如 自我 tle padding ctu 持久 縮小

“雲原生(Cloud Native)”是用於描述基於容器的環境的術語。雲原生技術被用於開發應用程序,這些應用程序是使用容器打包的服務構建的、被部署為微服務、並通過靈活的DevOps流程和持續交付工作流在彈性基礎架構上進行管理。

技術分享圖片


在運維團隊手動管理傳統應用程序的基礎架構資源分配的情況下,雲原生應用程序部署在抽象了底層計算、存儲和網絡原語的基礎架構上。處理這種新型應用程序的開發人員和運維人員不直接與基礎架構提供商公開的API交互。相反的,編排器會根據DevOps團隊制定的策略自動進行資源分配。控制器和調度程序是編排引擎的基本組件,負責處理資源分配問題和應用程序的生命周期。


像Kubernetes這樣的雲原生平臺使用扁平網絡,該網絡覆蓋在雲提供商的現有網絡拓撲和原語上。類似地,本地存儲層通常被抽象出來,以暴露與容器集成的邏輯卷。運維人員可以分配開發人員和資源管理員訪問的存儲配額和網絡策略。基礎架構抽象不僅解決了跨雲環境的可移植性需求,還讓開發人員可以利用新興模式來構建和部署應用程序。無論基於物理服務器或虛擬機,私有雲或公共雲的底層基礎架構如何,編排管理器都將成為部署目標。


Kubernetes是一個運行雲原生應用程序工作負載的理想平臺。它已經成為雲的事實上的操作系統,就像Linux是底層機器的操作系統一樣。只要開發人員在設計和開發軟件時,遵循其作為雲原生應用程序的微服務的最佳實踐,DevOps團隊就能夠在Kubernetes中打包和部署它們。以下是開發人員在設計雲原生應用程序時應牢記的雲原生應用程序的10個關鍵屬性。


技術分享圖片


1、打包為輕量級容器:雲原生應用程序是打包為輕量級容器的獨立自治服務的集合。與虛擬機不同,容器可以快速擴縮容。將擴展單元轉移到容器,能夠優化基礎架構利用率。

2、使用最佳語言和框架開發:雲原生應用程序的每項服務都是使用最適合該功能的語言和框架開發的。雲原生應用程序是多語言的,服務會使用各種不同的語言、運行時和框架。例如,開發人員可以構建基於在Node.js中開發的WebSockets的實時流服務,同時選擇Python和Flask來暴露API。開發微服務的細粒度方法使它們能夠為特定任務選擇最佳語言和框架。

3、設計為松耦合的微服務:屬於同一應用程序的服務通過應用程序運行時來發現彼此。它們獨立於其他服務而存在。正確集成時,彈性基礎架構和應用程序架構可以高效地、以高性能來進行擴展。

松耦合的服務讓開發人員可以在處理每個服務時都能夠獨立於其他服務來工作。通過這種分離,開發人員可以專註於每項服務的核心功能,以提供細粒度的功能。這種方法可以實現整個應用程序的有效生命周期管理,因為每個服務都是獨立維護的,並且擁有明確的所有權。

4、以API為中心進行交互和協作:雲原生服務使用輕量級API,這些API基於REST、gRPC或NATS等協議。REST通常被用作通過HTTP公開API的最低公分母。為了提高性能,gRPC通常用於服務之間的內部通信。NATS具有發布-訂閱功能,可在應用程序內實現異步通信。

5、在架構中將無狀態和有狀態服務清晰分離:持久耐用的服務通常遵循不同的模式,以確保更高的可用性和彈性。無狀態服務和有狀態服務是彼此獨立存在的。存儲會影響容器的使用。我們必須越來越多地在有狀態、無狀態、微存儲環境(這一點有些人可能覺得有爭議)等不同語境下考慮持久性這一因素。

6、與服務器和操作系統依賴關系隔離:雲原生應用程序與任何特定操作系統或單個計算機沒有關聯。它們在更高的抽象級別上運行。唯一的例外是微服務需要某些功能,包括固態驅動器(SSD)和圖形處理單元(GPU),這些功能可能由一部分機器專門提供。

7、部署在自服務的彈性雲基礎架構上:雲原生應用程序部署在虛擬的、共享的和彈性的基礎架構上。它們可以與底層基礎架構保持一致,以動態增長和縮小——根據不同的負載來自我調節。

8、通過敏捷DevOps流程進行管理:雲原生應用程序的每項服務都會經歷一個獨立的生命周期,通過敏捷的DevOps流程進行管理。多個持續集成/持續交付(CI / CD)流水線可以協同工作以部署和管理雲原生應用程序。

9、自動化功能:雲原生應用程序可以高度自動化。它們與Infrastructure as Code的概念相得益彰。企業需要一定程度的自動化來管理大型和復雜的應用程序。

10、定義的、策略驅動的資源分配:最後,雲原生應用程序與通過一組策略定義的治理模型一致。它們遵循CPU和存儲配額以及將資源分配給服務的網絡策略等策略。例如,在企業方案中,中央IT可以定義策略來為每個部門分配資源。每個部門的開發人員和DevOps團隊都擁有對其資源共享的完全訪問權和所有權。


雲原生應用的10大關鍵屬性