应用多环境部署的最佳实践
共 2586字,需浏览 6分钟
·
2021-10-29 15:44
前言
日常开发中,开发者通常会有应用多环境部署的需求,一般会在如下场景中出现:
研发流程:企业为了保障服务的稳定性,会在研发流程上要求遵守这样的工作流:测试环境 → 预发环境 → 生产环境。应用需要部署到多个环境中,由各环境的人员进行相关的测试验证工作:研发在测试环境中开发、调试应用,测试同学在预发环境中验收待发布的版本,SRE(网站可靠性工程师) 在生产环境管理应用等等。
稳定性保障:为了保障应用服务的稳定性,架构师通常在构建高可用解决方案时,做一些冗余部署,方便故障出现时,快速切到备用的服务,避免对业务的影响。 - 容灾:将应用部署在多个物理隔离的环境中进行容灾,如部署在同一地域的不同机房、部署在不同的地域。 - 测试:将应用部署在不同类型的环境中进行性能、稳定性等测试,如区分中心云/边缘环境、高配/低配资源环境。 迭代效率:开发者为了避免重复造轮子,提高开发迭代效率。把具有通用能力的应用会部署在多个环境中,便于不同的业务调用。
那么,面对这么多的应用多环境部署需求,如何实现呢?下述将简单分析该需求所面临的问题以及业界开源的解决方案,对于实现细节会陆续推出技术文章分析,并概述腾讯云 TEM 产品的实践,方便读者实践。
问题
简单来看,应用多环境部署是为了解决如下图所示的需求,即将同一个应用部署到多个开发测试环境中。
在实现应用多环境部署的解决方案上,我们需要解决这两个问题:
交付物管理的问题:部署时通常是应用+配置,可通过交付物概念来对其描述,涉及到交付物管理,如配置管理 、应用存储管理等。
分发管理的问题:从应用到环境之间,会涉及到分发管理问题,如环境对接、workflow 管理等。
即:
开源解决方案
对于交付物管理,本质上是管理应用和环境的匹配。
应用管理:基于 Kubernetes 的场景下,通常可使用 Helm 来管理应用,详情参见:https://helm.sh/。
- 通过 Repository 管理交付物的查找、存储等。
- 通过 Chart 统一描述应用的部署方法、不同场景的配置等。 配置管理:也可以采用独立的服务,如 Apollo 等。
对于分发管理,
环境对接:通常会涉及到 多集群管理,业界可参考开源的 Karmada、Open Cluster Management、Clusternet 等项目。 workflow 管理 :业界也有开源的项目,如 Argo、Tekton 等项目,通过声明式的方式描述流程。
使用开源解决方案,虽然可以达成目标,但方案本身也存在一定的弊端:
使用者需要学习不同项目的设计和使用方法,必要时还需要深入源码排查问题。 通过组合开源解决方案,形成完整的针对应用多环境部署的服务,势必会带来很大程度的时间和人力投入。
为了可以快速实践应用多环境部署,也可以考虑使用腾讯云弹性微服务TEM来解决这个问题,只需在操作页面上点点点,即可快速实现!
TEM应用多环境部署解决方案
弹性微服务TEM (Tencent Cloud Elastic Microservice) 是腾讯云推出的面向微服务应用的 Serverless PaaS 平台,实现资源 Serverless 与微服务架构的完美结合,提供一整套开箱即用的微服务解决方案,详情可参见:
https://cloud.tencent.com/product/tem。
TEM 抽象了环境和应用两个模型,通过环境提供多个维度的隔离,如网络、配置、资源等,通过应用来管理用户应用的生命周期,如部署、访问、可观测性等。
下述将按照如下路径实践应用多环境部署:
在环境中进行配置管理和资源管理。 在应用列表中将应用部署到多个环境中。
1. 环境
下述是环境详情页信息示例:
其中:
基本信息:描述环境关联的 VPC、子网等信息 资源管理:管理环境级别的日志、存储、注册中心等资源
访问管理:管理环境中多应用的路由转发
配置管理:提供环境级别的配置管理,可被环境中所有应用复用
TEM 在环境级别提供了两种维度的隔离:
网络隔离 资源隔离
创建环境时用户需要选择 VPC,通过 VPC 实现二层网络隔离。同时可以选择多个子网,在应用部署时,平台会自动将应用实例打散到不同的子网中。若子网属于不同的可用区,即可由平台保障了应用多可用区部署。
在环境中可以绑定资源 (存储/日志/注册中心),应用部署时仅可选择环境中关联的资源,在一定程度上实现了环境间资源的弱隔离:
TEM 提供了环境级别的配置管理,可被环境中所有应用共享。对于需要共享配置的场景,可在环境的配置管理中建立配置,然后在应用部署时引用该配置。同时,也可以在 配置管理中查看到配置被哪些应用引用:
2. 应用
TEM 将创建应用描述和部署应用解耦,用来支持应用多环境部署。
创建应用描述:
创建应用描述后可以暂不部署,如下图,通过「部署至新环境」功能部署应用到指定环境:
重复上述步骤,可以将应用部署到多个环境中。
小结
通过 TEM 提供的环境和应用模型,可以快速体验应用多环境部署中的交付物管理和分发管理。结合 TEM 提供的 API,可以构建灵活的 workflow。与社区提供的开源解决方案相比,TEM 在公有云场景中简化了应用多环境部署面临的问题,在交付物管理 (应用+配置) 提供了简单普适的模型,在分发管理中提供了 Web 操作界面和 API,方便用户体验、与存量系统对接。目前产品在公测期间,欢迎大家使用,TEM 会持续改善应用管理服务,在公有云场景满足应用多环境部署等需求。
扫码立即使用TEM
往期
推荐
《Kratos技术系列|从Kratos设计看Go微服务工程实践》
《Pulsar技术系列 - 深度解读Pulsar Schema》
《Apache Pulsar事务机制原理解析|Apache Pulsar 技术系列》
扫描下方二维码关注本公众号,
了解更多微服务、消息队列的相关信息!
解锁超多鹅厂周边!
点个在看你最好看