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