如何使用Azure Cosmos DB和Pulumi構(gòu)建全球分布式應用程序

來源:Microsoft Azure
作者:Rimma Nehme
時間:2020-08-05
2037
Pulumi通過一個獨特的平臺,重塑了人們?nèi)绾螛?gòu)建現(xiàn)代云應用程序,該平臺將深度系統(tǒng)和基礎(chǔ)架構(gòu)創(chuàng)新與優(yōu)雅的編程模型和開發(fā)人員工具相結(jié)合。

Pulumi通過一個獨特的平臺,重塑了人們?nèi)绾螛?gòu)建現(xiàn)代云應用程序,該平臺將深度系統(tǒng)和基礎(chǔ)架構(gòu)創(chuàng)新與優(yōu)雅的編程模型和開發(fā)人員工具相結(jié)合。

我們生活在奇妙的時代,不同大陸的人們和企業(yè)可以光速互動。眾多行業(yè)和應用程序面向全球用戶:電子商務網(wǎng)站,多人在線游戲,聯(lián)網(wǎng)的IoT設備,協(xié)作工作和休閑體驗等等。所有這些應用程序都需要最終用戶附近的計算和數(shù)據(jù)基礎(chǔ)架構(gòu),以最大程度地減少延遲并保持用戶體驗的吸引力?,F(xiàn)代云使這些方案成為可能。

Azure基礎(chǔ)架構(gòu)

Azure Cosmos DB提供了一個交鑰匙型數(shù)據(jù)分發(fā)到任意數(shù)量的區(qū)域,這意味著可以在運行生產(chǎn)工作負載的同時添加或刪除位置。Azure負責數(shù)據(jù)復制,彈性和效率,同時提供用于讀取和寫入操作的API,延遲少于10毫秒。

相反,計算服務(虛擬機,容器實例,Azure App服務,Azure功能和托管的Azure Kubernetes服務)位于單個Azure區(qū)域中。為了充分利用數(shù)據(jù)庫的地理冗余,用戶應將其應用程序部署到每個目標區(qū)域。

ia_1700000003.png

該圖顯示了全球分布的應用程序。

應用程序區(qū)域必須與Azure Cosmos DB區(qū)域保持同步,才能享受低延遲的好處。運營團隊必須管理應用程序和服務池,以提供正確的位置以及自動擴展配置,有效的網(wǎng)絡連接,安全性和可維護性。

為了幫助管理復雜性,采用了將基礎(chǔ)結(jié)構(gòu)作為代碼的方法。

基礎(chǔ)架構(gòu)即代碼

盡管Azure門戶是所有Azure服務的絕佳選擇,但不應將其直接用于供應生產(chǎn)應用程序。相反,我們應該努力用可以執(zhí)行以創(chuàng)建所有必需的云資源的程序來描述基礎(chǔ)架構(gòu)。

傳統(tǒng)上,這可以通過自動化腳本(例如PowerShell Cmdlet或調(diào)用Azure CLI的bash腳本)來實現(xiàn)。但是,這種方法費力且容易出錯。使環(huán)境從當前狀態(tài)達到理想狀態(tài)通常并非易事。腳本中間的故障通常需要手動干預才能修復環(huán)境,從而導致停機。

所需狀態(tài)配置是基礎(chǔ)結(jié)構(gòu)定義的另一種樣式。用戶以聲明的方式描述基礎(chǔ)結(jié)構(gòu)的所需最終狀態(tài),工具負責將環(huán)境從其當前狀態(tài)轉(zhuǎn)換為具有所需狀態(tài)的奇偶校驗。這樣的程序?qū)τ谘莼透欁兓匀弧?/span>

Azure資源管理器模板是Azure領(lǐng)域中定制的期望狀態(tài)配置工具。狀態(tài)被描述為一個JSON模板,列出了所有資源和屬性。但是,大型JSON模板很難手動編寫。他們的學習曲線很高,并且很快變得龐大,復雜,冗長且重復。開發(fā)人員發(fā)現(xiàn)自己缺少諸如迭代或自定義函數(shù)之類的簡單編程語言的可能性。

Pulumi通過使用通用編程語言來描述所需的云基礎(chǔ)架構(gòu)狀態(tài)來解決此問題。使用JavaScript,TypeScript或Python可以將代碼量減少很多倍,同時將諸如函數(shù)和組件之類的結(jié)構(gòu)引入DevOps工具箱。

Pulumi的全球應用

為了說明這一點,Azure開發(fā)了TypeScript程序來在Azure中置備分布式應用程序。

目標方案需要大量資源才能在多個Azure區(qū)域中分布應用程序,包括:

在多個區(qū)域中配置Azure Cosmos數(shù)據(jù)庫帳戶

將應用程序?qū)拥母北静渴鸬矫總€這些區(qū)域

將每個應用程序連接到Azure Cosmos DB本地副本

添加流量管理器以將用戶請求路由到最近的應用程序端點

ia_1700000004.png

該圖顯示了使用Azure和Pulumi的全局應用程序的流程。

但是,我們可以依靠Pulumi的CosmosApp組件代替手動編寫此代碼,如如何使用Azure Cosmos DB和Pulumi構(gòu)建全球分布式應用程序中所述。該組件創(chuàng)建分布式Azure Cosmos DB資源以及前端路由組件,同時允許可插入的計算層實現(xiàn)。

可以在可重用組件中找到示例代碼,以使用Azure Cosmos DB創(chuàng)建全局分布的應用程序。

Pulumi CLI執(zhí)行代碼,將其轉(zhuǎn)換為要創(chuàng)建的資源樹,然后將所有代碼部署到Azure:

ia_1700000005.png

屏幕截圖顯示了Pulumi的CLI執(zhí)行代碼。

命令成功執(zhí)行后,應用程序?qū)⒃谖疫x擇的三個區(qū)域中啟動并運行。

基礎(chǔ)架構(gòu)即代碼有助于在全球和可擴展的云應用程序領(lǐng)域中實現(xiàn)現(xiàn)代DevOps實踐。

Pulumi允許您使用通用編程語言來定義基礎(chǔ)結(jié)構(gòu)。它將最佳的工具和實踐從軟件開發(fā)領(lǐng)域帶到基礎(chǔ)架構(gòu)管理領(lǐng)域。

嘗試使用具有無服務器功能,容器或虛擬機的CosmosApp(可在GitHub上使用TypeScript,C#)來開始使用Pulumi和Azure。

立即登錄,閱讀全文
原文鏈接:點擊前往 >
文章來源:Microsoft Azure
版權(quán)說明:本文內(nèi)容來自于Microsoft Azure,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家