雲原生應用的十個關鍵屬性
過去,運維團隊是透過手動管理基礎資源的分配,雲原生應用則是部署在抽象底層計算、儲存和原始網路的基礎架構上。處理這種新型應用的開發人員和運維人員不會直接與基礎架構的公開API打交道,相反,基於基礎架構上的中間PaaS層會根據DevOps團隊制定的策略進行自動分配資源,這個中間PaaS層相同於一個編排引擎,它是由控制器和排程器等基本元件組成,用來處理資源分配和應用程式的生命週期。
像Kubernetes這樣的雲原生平臺暴露的是一個扁平網路,該網路覆蓋在雲提供商的現有網路拓撲和原始網路上,這如同原始儲存層是透過暴露其邏輯卷和容器整合一樣,網管可以分配開發人員和資源管理員訪問的儲存配額以及網路策略。這種基礎架構的抽象不僅解決了跨雲環境的可移植性需求,還讓開發人員利用新興模式來構建和部署應用程式。無論基於物理伺服器或虛擬機器、私有云或公共雲的底層基礎架構如何,業務流程管理器都將成為部署的目標。
Kubernetes是設計為執行雲原生應用程式的理想平臺。它已經成為雲的事實上的作業系統,就像Linux是底層機器的作業系統一樣。只要開發人員遵循微服務最佳實踐的設計開發軟體,DevOps團隊就能夠在Kubernetes中打包和部署它們,以下是針對開發人員在設計雲原生應用程式時應牢記的雲原生應用的10個關鍵屬性。
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.部署在自助服務、彈性雲基礎架構上
雲原生應用程式應部署在虛擬、共享和彈性基礎架構上。它們可以與底層基礎架構保持一致,以動態方式增長和縮小 - 根據不同的負載調整自身。
透過敏捷DevOps流程進行管理
雲原生應用程式的每項服務都經歷一個獨立的生命週期,透過敏捷的DevOps流程進行管理。多個持續整合/連續交付(CI / CD)管道可以協同工作以部署和管理雲原生應用程式。
9.自動化功能
雲原生應用程式可以高度自動化。它們與將基礎設施作為程式碼的概念相得益彰。實際上,僅需要一定程度的自動化可以簡化管理大型和複雜的應用程式。
可定義的、能夠實現策略驅動的資源分配
最後,雲原生應用程式與透過一組策略定義的治理模型保持一致。它們遵循諸如中央處理單元(CPU)和儲存配額以及將資源分配給服務的網路策略等策略。例如,在企業方案中,中央IT可以定義策略以為每個部門分配資源,每個部門的開發人員和DevOps團隊都擁有對其資源共享的完全訪問權和所有權。
相關文章
- 十個實用但IE不支援的CSS屬性CSS
- 針對雲原生轉型的6個關鍵資料策略
- 智慧雲原生應用的崛起
- 如何開發一個標準的雲原生應用?
- 雲原生儲存系列文章(一):雲原生應用的基石
- 華為雲Serverless可觀測性解決方案打造高效、可靠的雲原生應用Server
- Oracle約束constraint的三個屬性應用OracleAI
- 暢談雲原生(上):雲原生應用應該是什麼樣子?
- 如何加速雲原生資料應用?這個開源專案備受關注
- 容器產品關鍵能力覆蓋最多,阿里雲打贏雲原生關鍵一戰!阿里
- 【雲原生安全】從分散式追蹤看雲原生應用安全分散式
- 非易失性儲存器NV-SRAM的關鍵屬性
- VMware的雲原生應用技術揭祕
- 聚焦雲原生安全|從分散式追蹤看雲原生應用安全分散式
- typescript的lambads解決this關鍵字找不到屬性TypeScript
- CSS動畫屬性關鍵幀keyframes全解析CSS動畫
- hadoop-叢集管理(4)——關鍵屬性Hadoop
- 關於 Angular 應用 tsconfig.json 中的 target 屬性AngularJSON
- 原生javascript如何設定元素的屬性JavaScript
- Android應用程式的debug屬性Android
- 7 個值得關注的開源雲原生工具
- 用友雲平臺,真正的雲原生架構,加速雲應用落地架構
- Docker技術全景:推動雲原生架構的關鍵力量Docker架構
- 雲原生系列2 部署你的第一個k8s應用K8S
- 關於雲原生應用,這些安全風險瞭解一下
- 應雲而生,幽靈的威脅 - 雲原生應用交付與運維的思考運維
- 關於 Angular 應用 tsconfig.json 中的 lib 屬性AngularJSON
- 青雲雲原生沙龍線上集結,找到屬於你的雲原生實踐之路!
- 大資料分析應用最多的9個關鍵領域大資料
- 解析雲原生2.0架構設計的8大關鍵趨勢架構
- jQuery的動畫效果可以應用與哪些屬性jQuery動畫
- 用程式設定COM+應用程式的屬性。 (轉)
- 雲原生與邊緣計算的碰撞——邊緣原生應用實踐
- HTML5中margin屬性應用HTML
- 實現雲原生應用程式可移植的夢想
- 一週雲事|雲已經成為大部分的關鍵應用程式的基礎
- 雲原生的資料雲,下一個十年的數字化轉型趨勢
- android關於屬性動畫的七個使用案例Android動畫