应用多环境部署的最佳实践

共 2586字,需浏览 6分钟

 ·

2021-10-29 15:44


前言


日常开发中,开发者通常会有应用多环境部署的需求,一般会在如下场景中出现:

  • 研发流程:企业为了保障服务的稳定性,会在研发流程上要求遵守这样的工作流:测试环境 → 预发环境 → 生产环境。应用需要部署到多个环境中,由各环境的人员进行相关的测试验证工作:研发在测试环境中开发、调试应用,测试同学在预发环境中验收待发布的版本,SRE(网站可靠性工程师) 在生产环境管理应用等等。

  • 稳定性保障:为了保障应用服务的稳定性,架构师通常在构建高可用解决方案时,做一些冗余部署,方便故障出现时,快速切到备用的服务,避免对业务的影响
    - 容灾:将应用部署在多个物理隔离的环境中进行容灾,如部署在同一地域的不同机房、部署在不同的地域。
    测试:将应用部署在不同类型的环境中进行性能、稳定性等测试,如区分中心云/边缘环境、高配/低配资源环境。
  • 迭代效率:开发者为了避免重复造轮子,提高开发迭代效率。把具有通用能力的应用会部署在多个环境中,便于不同的业务调用。


那么,面对这么多的应用多环境部署需求,如何实现呢?下述将简单分析该需求所面临的问题以及业界开源的解决方案,对于实现细节会陆续推出技术文章分析,并概述腾讯云 TEM 产品的实践,方便读者实践。


问题


简单来看,应用多环境部署是为了解决如下图所示的需求,即将同一个应用部署到多个开发测试环境中。



在实现应用多环境部署的解决方案上,我们需要解决这两个问题:

  • 交付物管理的问题:部署时通常是应用+配置,可通过交付物概念来对其描述,涉及到交付物管理,如配置管理 、应用存储管理等。

  • 分发管理的问题:从应用到环境之间,会涉及到分发管理问题,如环境对接、workflow 管理等。


即:


开源解决方案


对于交付物管理,本质上是管理应用和环境的匹配。


  1. 应用管理:基于 Kubernetes 的场景下,通常可使用 Helm 来管理应用,详情参见:https://helm.sh/。

    - 通过 Repository 管理交付物的查找、存储等。

    - 通过 Chart 统一描述应用的部署方法、不同场景的配置等。
  2. 配置管理:也可以采用独立的服务,如 Apollo 等。


对于分发管理

  1. 环境对接:通常会涉及到 多集群管理,业界可参考开源的 Karmada、Open Cluster Management、Clusternet 等项目。
  2. workflow 管理 :业界也有开源的项目,如 Argo、Tekton 等项目,通过声明式的方式描述流程。


使用开源解决方案,虽然可以达成目标,但方案本身也存在一定的弊端:

  • 使用者需要学习不同项目的设计和使用方法,必要时还需要深入源码排查问题。
  • 通过组合开源解决方案,形成完整的针对应用多环境部署的服务,势必会带来很大程度的时间和人力投入。


为了可以快速实践应用多环境部署,也可以考虑使用腾讯云弹性微服务TEM来解决这个问题,只需在操作页面上点点点,即可快速实现!


TEM应用多环境部署解决方案


弹性微服务TEM (Tencent Cloud Elastic Microservice) 是腾讯云推出的面向微服务应用的 Serverless PaaS 平台,实现资源 Serverless 与微服务架构的完美结合,提供一整套开箱即用的微服务解决方案,详情可参见:

https://cloud.tencent.com/product/tem


TEM 抽象了环境应用两个模型,通过环境提供多个维度的隔离,如网络、配置、资源等,通过应用来管理用户应用的生命周期,如部署、访问、可观测性等。


下述将按照如下路径实践应用多环境部署:

  1. 在环境中进行配置管理资源管理
  2. 在应用列表中将应用部署到多个环境中。


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 技术系列》




扫描下方二维码关注本公众号,

了解更多微服务、消息队列的相关信息!

解锁超多鹅厂周边!


戳原文,查看更多弹性微服务TEM信息!


点个在看你最好看


浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报