现代云原生设计理念
前文傳送門
什么是云原生?
現代設計理念
你會如何設計云原生應用程序?
需要遵循哪些原則、模式和最佳實踐?
需要特別關注哪些底層/操作?
十二要素應用程序
目前被普遍認可的基于云的方法論是"十二要素應用程序",它給出了開發人員要遵循的一組原則和實踐,幫助構建針對現代云環境優化的應用程序。
盡管適用于任何基于Web的應用程序,但許多從業者都將“十二要素”視為構建云原生應用程序的堅實基礎。基于這些原則構建的系統可以快速部署和擴展,并可以添加功能以對市場變化做出快速反應。
重申“十二要素”方法論:
| Code Base | 代碼倉庫中一套代碼,多處部署 |
| Dependencies | 每個微服務顯式聲明并打包自己的依賴項、變更項 |
| Configurations | 在環境中外掛配置 |
| Backing Services | 將支撐性服務(數據存儲,緩存,消息代理)看做附加資源,通過可尋址的URL公開 |
| Build, Release, Run | 嚴格區分構建和運行階段,現代CI/CD技術實現了這一原則。 |
| Processes | 將應用程序作為一個或多個無狀態進程執行 |
| Port Binding | 通過端口綁定暴露服務 |
| Concurrency | 對進程模型進行橫向擴展 |
| Disposability | 快速啟動和正常關閉可最大程度地提高魯棒性 |
| Dev/Prod Parity | 保持開發、生產盡可能相似 |
| Logging | 將日志視為事件流,使用事件聚合器將事件傳遞到數據挖掘/日志管理工具 |
| Admin Processes | 用一次性動作 執行管理任務 |
凱文·霍夫曼(Kevin Hoffman)詳細介紹了最初的12個要素(寫于2011年)。此外,他針對現代云應用程序提出另外三個要素。
| API First | 使一切成為服務(如果你的代碼將被前端、網關或其他服務使用) |
| Telemetry | 在程序設計中包含遙測、健康檢查 |
| Authentication/Authorization | 一開始就實現身份認證和鑒權 |
關鍵的設計考量
除了十二要素方法提供的指導之外,還必須注意幾個關鍵的設計考量。
????Communication 通信
前端如何與后端服務通信???
? ? ? ? ?是直接通信嗎?還是提煉出后端網關 (提供靈活性、管控力和安全性) ?
后端服務之間如何通信?
? ? ? ? ?直接Http調用 (可能導致耦合,影響性能和敏捷性) ??還是考慮使用queue/Topic技術解耦消息?
第4章“云原生通信模式”詳細介紹了通信。
????Resiliency 彈性
微服務架構將系統從進程內網絡通信轉移到進程外網絡通信。??
在分布式體系結構中,
當服務B不響應來自服務A的網絡請求,會發生什么???
?當服務C臨時不可用,其他調用C的服務被阻塞又該怎么辦?
第6章“云原生彈性”詳細介紹了彈性。
????Distributed Data 分布式數據
按照設計預期,每個微服務都內嵌自己的數據,通過公開接口暴露。
如果是這樣,如何實現跨多個服務的數據查詢/事務?
分布式數據將在第5章“云原生數據模式”中詳細介紹。
????Identity 身份
您的服務將如何識別誰在訪問它以及他們擁有哪些權限?
身份將在第8章“身份”中詳細介紹。
Ref
https://tanzu.vmware.com/content/blog/beyond-the-twelve-factor-app
https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/definition
????后臺回復 cloud-native, 獲取微軟官方《云原生.pdf》下載鏈接??????
更多干貨及最佳實踐分享
關注并星標我們~。。~
總結
- 上一篇: 您好,dotnet tool
- 下一篇: 腾讯牛逼,我酸了!!