應用多環(huán)境部署的最佳實踐


前言
日常開發(fā)中,開發(fā)者通常會有應用多環(huán)境部署的需求,一般會在如下場景中出現(xiàn):
研發(fā)流程:企業(yè)為了保障服務的穩(wěn)定性,會在研發(fā)流程上要求遵守這樣的工作流:測試環(huán)境?→ 預發(fā)環(huán)境?→ 生產(chǎn)環(huán)境。應用需要部署到多個環(huán)境中,由各環(huán)境的人員進行相關的測試驗證工作:研發(fā)在測試環(huán)境中開發(fā)、調(diào)試應用,測試同學在預發(fā)環(huán)境中驗收待發(fā)布的版本,SRE(網(wǎng)站可靠性工程師)?在生產(chǎn)環(huán)境管理應用等等。
穩(wěn)定性保障:為了保障應用服務的穩(wěn)定性,架構師通常在構建高可用解決方案時,做一些冗余部署,方便故障出現(xiàn)時,快速切到備用的服務,避免對業(yè)務的影響。 - 容災:將應用部署在多個物理隔離的環(huán)境中進行容災,如部署在同一地域的不同機房、部署在不同的地域。 -?測試:將應用部署在不同類型的環(huán)境中進行性能、穩(wěn)定性等測試,如區(qū)分中心云/邊緣環(huán)境、高配/低配資源環(huán)境。 迭代效率:開發(fā)者為了避免重復造輪子,提高開發(fā)迭代效率。把具有通用能力的應用會部署在多個環(huán)境中,便于不同的業(yè)務調(diào)用。
那么,面對這么多的應用多環(huán)境部署需求,如何實現(xiàn)呢?下述將簡單分析該需求所面臨的問題以及業(yè)界開源的解決方案,對于實現(xiàn)細節(jié)會陸續(xù)推出技術文章分析,并概述騰訊云 TEM 產(chǎn)品的實踐,方便讀者實踐。

問題
簡單來看,應用多環(huán)境部署是為了解決如下圖所示的需求,即將同一個應用部署到多個開發(fā)測試環(huán)境中。

在實現(xiàn)應用多環(huán)境部署的解決方案上,我們需要解決這兩個問題:
交付物管理的問題:部署時通常是應用+配置,可通過交付物概念來對其描述,涉及到交付物管理,如配置管理?、應用存儲管理等。
分發(fā)管理的問題:從應用到環(huán)境之間,會涉及到分發(fā)管理問題,如環(huán)境對接、workflow 管理等。
即:


開源解決方案
對于交付物管理,本質(zhì)上是管理應用和環(huán)境的匹配。
應用管理:基于 Kubernetes 的場景下,通常可使用 Helm 來管理應用,詳情參見:https://helm.sh/。
- 通過 Repository 管理交付物的查找、存儲等。
- 通過 Chart 統(tǒng)一描述應用的部署方法、不同場景的配置等。 配置管理:也可以采用獨立的服務,如 Apollo 等。
對于分發(fā)管理,
環(huán)境對接:通常會涉及到 多集群管理,業(yè)界可參考開源的 Karmada、Open Cluster Management、Clusternet 等項目。 workflow 管理?:業(yè)界也有開源的項目,如 Argo、Tekton 等項目,通過聲明式的方式描述流程。
使用開源解決方案,雖然可以達成目標,但方案本身也存在一定的弊端:
使用者需要學習不同項目的設計和使用方法,必要時還需要深入源碼排查問題。 通過組合開源解決方案,形成完整的針對應用多環(huán)境部署的服務,勢必會帶來很大程度的時間和人力投入。
為了可以快速實踐應用多環(huán)境部署,也可以考慮使用騰訊云彈性微服務TEM來解決這個問題,只需在操作頁面上點點點,即可快速實現(xiàn)!

TEM應用多環(huán)境部署解決方案
彈性微服務TEM (Tencent Cloud Elastic Microservice) 是騰訊云推出的面向微服務應用的 Serverless PaaS 平臺,實現(xiàn)資源 Serverless 與微服務架構的完美結(jié)合,提供一整套開箱即用的微服務解決方案,詳情可參見:
https://cloud.tencent.com/product/tem。
TEM 抽象了環(huán)境和應用兩個模型,通過環(huán)境提供多個維度的隔離,如網(wǎng)絡、配置、資源等,通過應用來管理用戶應用的生命周期,如部署、訪問、可觀測性等。
下述將按照如下路徑實踐應用多環(huán)境部署:
在環(huán)境中進行配置管理和資源管理。 在應用列表中將應用部署到多個環(huán)境中。
1. 環(huán)境
下述是環(huán)境詳情頁信息示例:

其中:
基本信息:描述環(huán)境關聯(lián)的 VPC、子網(wǎng)等信息 資源管理:管理環(huán)境級別的日志、存儲、注冊中心等資源
訪問管理:管理環(huán)境中多應用的路由轉(zhuǎn)發(fā)
配置管理:提供環(huán)境級別的配置管理,可被環(huán)境中所有應用復用
TEM 在環(huán)境級別提供了兩種維度的隔離:
網(wǎng)絡隔離 資源隔離
創(chuàng)建環(huán)境時用戶需要選擇 VPC,通過 VPC 實現(xiàn)二層網(wǎng)絡隔離。同時可以選擇多個子網(wǎng),在應用部署時,平臺會自動將應用實例打散到不同的子網(wǎng)中。若子網(wǎng)屬于不同的可用區(qū),即可由平臺保障了應用多可用區(qū)部署。
在環(huán)境中可以綁定資源 (存儲/日志/注冊中心),應用部署時僅可選擇環(huán)境中關聯(lián)的資源,在一定程度上實現(xiàn)了環(huán)境間資源的弱隔離:

TEM 提供了環(huán)境級別的配置管理,可被環(huán)境中所有應用共享。對于需要共享配置的場景,可在環(huán)境的配置管理中建立配置,然后在應用部署時引用該配置。同時,也可以在 配置管理中查看到配置被哪些應用引用:


2. 應用
TEM 將創(chuàng)建應用描述和部署應用解耦,用來支持應用多環(huán)境部署。
創(chuàng)建應用描述:


創(chuàng)建應用描述后可以暫不部署,如下圖,通過「部署至新環(huán)境」功能部署應用到指定環(huán)境:



重復上述步驟,可以將應用部署到多個環(huán)境中。

小結(jié)
通過 TEM 提供的環(huán)境和應用模型,可以快速體驗應用多環(huán)境部署中的交付物管理和分發(fā)管理。結(jié)合 TEM 提供的 API,可以構建靈活的 workflow。與社區(qū)提供的開源解決方案相比,TEM 在公有云場景中簡化了應用多環(huán)境部署面臨的問題,在交付物管理 (應用+配置) 提供了簡單普適的模型,在分發(fā)管理中提供了 Web 操作界面和 API,方便用戶體驗、與存量系統(tǒng)對接。目前產(chǎn)品在公測期間,歡迎大家使用,TEM 會持續(xù)改善應用管理服務,在公有云場景滿足應用多環(huán)境部署等需求。

掃碼立即使用TEM
往期
推薦
《服務器又崩了?深度解析高可用架構的挑戰(zhàn)和實踐》
《Kratos技術系列|從Kratos設計看Go微服務工程實踐》
《Pulsar技術系列 - 深度解讀Pulsar Schema》
《Apache Pulsar事務機制原理解析|Apache Pulsar 技術系列》

掃描下方二維碼關注本公眾號,
了解更多微服務、消息隊列的相關信息!
解鎖超多鵝廠周邊!


點個在看你最好看
