首页

/

DevOps系列:多中心如何同步制品协作发布上线?

发布日期:2023-11-17 11:30:16

分享到

随着信息技术深入应用,企业的IT组织效能提升与数字化转型需求越发迫切。9月起,嘉为蓝鲸《研效一体,价值释放》线上课程直播,针对企业IT部门DevOps落地实践分六期详解项目管理、制品分发、持续交付、测试管理、研发效能洞察、价值流管理场景。

10月12日,嘉为蓝鲸DevOps咨询顾问张天珩为大家带来《多中心如何同步制品协作发布上线》的主题分享,深度剖析了非成熟分发模式下的弊端,并通过自身丰富的客户落地实践经验,系统介绍了切实可行的多中心制品同步解决思路与方法。下面我们一起回顾下本次直播的精彩内容。

01. 标准化制品管理是支撑现代工业的技术基石

制品管理并非一个全新的概念,其起源可以追溯到工业革命时期。为进一步提高生产效率,制造业以制品管理标准化的形式,完整串联起了从原料仓储到半成品的管理,再到成品运输、配送交付到各地的整个流程。这种标准化管理使得原本可能局限于一地的工业生产模式逐渐转变为贯通19至21世纪、席卷全球的工业革命。

如今,当企业纷纷谈论IT营运转型、提升数字业务研发绩效时,由于IT组织的独特性、工作的非标准化以及业务的复杂性,企业在构建DevOps工艺体系时很容易忽略或难以清晰认识到,要全面实现IT研运体系转型,则需要完善的制品管理机制。

随着DevOps在国内的深入应用,大部分企业已经能构建自己的CICD流程,甚至涵盖了CO的环节。然而,随着DevOps的进一步实践,大量的软件制品被源源不断地生产出来,包括不同语言的制品类型如Java、Maven、JavaScript、NPM、Python、Pypi,以及基于IT技术应用的制品类型如Docker、Helm、RPM和.net等。这些制品在数字业务研发生命周期的各个环节中产生,存在于产品研发、测试和运维的各个团队中。

这些制品既可以作为开发人员之间共享的重要组件,也可以成为企业的私有资产。在IT组织转型DevOps之前,很多企业已经开始使用Nexus或Harbor等开源制品管理技术,甚至建设SVN或通过FTP模式来管理和传输制品。由于当时的开发业务相对简单,制品类型较少、分发频率较低,由运维团队负责制品管理是可行的,并且因制品管理导致的生产事故风险较低。此外,开源工具大多数免费,对于企业而言不会产生额外的预算压力。因此,在业务发展的初期阶段,对于很多IT管理者而言,制品管理的成本代价和风险较低。

然而,随着IT规模的逐步扩张和业务的发展,传统制品管理模式的缺陷逐渐暴露,导致企业的IT开发与运维在制品管理上产生摩擦。在这个阶段,需要一套标准的、更专业的制品管理机制来避免软件开发过程中出现的一系列问题。


02. 软件研发流程与对应的制品管理

为了解决上述问题,业界开始寻求一些专业的制品管理方式来推动软件研发流程的顺畅运行。通常,软件研发流程包括多个阶段,如需求阶段、开发阶段、构建阶段、测试阶段和交付阶段,每个阶段都有相应的制品管理需求。在这个过程中,开发人员将制品仓库的原料,如外部原料仓、内网的依赖库以及本地私有依赖库等,存储到企业私服,作为公有的依赖源;将还没有经过测试的半成品打包放到制品仓;经过多轮测试之后,将最终的制品放到成品仓交由到交付人员做相应的部署。

若想做好制品管理,需要关注两大核心方面四大关键工程

首先,两大核心方面包括依赖管理和CICD优化。在依赖管理方面,需要建立唯一的可信源,统一管理各地、各种依赖,并建立定期的依赖维护机制,同步云端以及更新本地依赖。此外,需要建立依赖扫描机制,保证本地依赖的安全性。在CICD方面,需要推动相应的优化,将交付物的元数据作为质量关卡,保证上线安全;对制品自动进行安全扫描以确保制品安全;对接CI工具,实现制品的自动晋级;此外,还需对接CD工具,实现制品的自动拉取和晋级等。

接下来是四大关键工程第一项是云端依赖同步工程,需要定期同步云端依赖与本地依赖,并配备相应的扫描机制来保证本地仓库的安全性。第二项是依赖源服务工程,着重于将本地的依赖更好地服务于整个CI构建环节。第三项是制品晋级工程,涉及到从构建环节到测试环节,甚至到交付环节的制品晋级,例如在编译构建时如何将开发完成的product包晋级成SIT测试、UAT状态和准生产状态的包等,这一过程中需要进行多轮制品晋级。最后是制品同步工程,这也是本文的重点讨论内容。

通过关注这些方面和工程,可以有效地实施制品管理,推动软件研发流程的顺畅运行,提高开发效率和产品质量。


03. 高效的制品同步机制保障企业业务平稳运行

通常,企业在执行制品同步过程中主要面临三个挑战:开发和生产发布的一致性无法得到保障、制品在多地同步并统一上线难度大、以及内部环境中的制品无法快速迁移到另一个环境。这些问题的核心在于如何在不同的网络环境下,保障发布的一致性、安全性和及时性。因此,我们需要构建有效的制品同步机制来应对这些挑战。

在进一步阐述具体的解决方案之前,我们首先需要了解与制品同步相关的基本概念:

  • 点:指的是部署了制品库并可以存储制品的独立环境。这些节点基于地域可分为中心节点和边缘节点,或者基于组织模式各地均为独立节点;
  • 分发环境:基于软件研发流程,我们一般将环境分为开发环境、测试环境和生产环境,开发测试与生产环境通常存在网络隔离;
  • 同步策略:一般包含冲突策略、时间策略、校验策略等,合理利用这些策略可以提高分发效率。

接下来,本文将通过两个主要的案例来阐述实现制品同步机制保障的解决思路。


1)点对点制品同步机制最佳实践

案例中的XX金融公司虽然每年都会聘请咨询师来做IT建设的培训,包括领导层、部门管理和工程师方面的培训,但在整体研发流程框架的优化改革方面却难以推动,存在着典型的部门墙现象。各个环境之间是分散来做网络隔离的,导致每逢发版日就问题频出。

具体问题表现为:

  • 各个环境之间的制品传递需要通过脚本拉取并上传,多次拉取上传会造成文件丢失,无法校验文件完整性。
  • 多次构建会造成制品元数据的丢失,无法记录制品全生命周期的信息。
  • 手动跨越防火墙与网络隔离,无法实现全自动化晋级。

针对这些问题,我们采取了分两步走的策略:

第一步遵循一包到底原则建立制品同步机制,实现制品库与流水线无缝连接,将制品统一管理并插入制品生命周期元数据,从而保证全生命周期的可追溯性;通过制品库内微服务间请求以及制品完整性校验机制,保障制品流转安全;保证网络防火墙与统一网关出入口的环境相互隔离,保护各个环境的网络安全。

第二步是通过制品摆渡实现隔离网络下的开发生产同步。这里包含了多种分发策略的设计,比如定时分发、增量分发、指定时间段分发等。这既兼顾了制品分发的及时性,同时可以利用闲时分发,避免挤占服务器资源,保障制品分发的效率。此外,在DMZ区建立独立制品库作为中转站接收研发环境制品,并自动向生产制品库分发。在这种情况下,即使研发环境跟生产环境的网络是隔离的,也可以完全实现制品在各环境间的自动化晋级,提高生产效率。

在点对点的制品同步机制建设完成后,该企业制品线整体效率相比之前优化了30%,发布的安全性与质量也得到了显著提升。

以上是企业制品同步中的一种场景的解决方案,接下来看第二个案例。


2)一地多中心制品同步最佳实践

案例中的XX国企规模较大,在全国拥有多个分发中心。制品分发计划通常由总部进行统一管控,发布的包在发布时会同步到各地的边缘节点,然后由各地根据发布计划进行拉取,拉取完成后通过应用发布工具进行发布。但由于企业复杂的业务架构和网络与性能的限制,企业无法快速地将待发布的制品同步到各个边缘节点,导致发布延期。

为了解决这个问题,企业首先确保中心节点的制品能够实时同步给各边缘节点的制品库,以确保在面对快速上线发布窗口时能够准时发布。然而,由于实时同步机制对资源的消耗量巨大,企业因此设置了制品的定时发布,每天晚上11点会将研发中心的制品同步到各地的生产中心,等到发布窗口到来时,各地的生产中心就可以在自己内部的制品库中拉包进行相应的发布上线。从较长的时间线条来看,这相当于完成了制品的实时同步。

同时,企业通过一次性配置分发计划,自动执行分发策略并记录每次任务日志,保障了制品分发的完整性。最后,企业还建立了分发资源池与网络资源池的机制。当出现多个分发任务时,分发资源池与网络资源池的存在可以保障最大限度地提高传输速度,同时保障网络与服务器资源的安全。

以上就是两个制品同步机制的不同场景以及对应的解决方法,不同分发机制需注意:

  • 点对点同步机制虽然模式较为简单,但仍需注意:在实际的发布场景中要保证一致性和安全性,首先要确保整体的发布环节遵循一包到底原则;为了实现隔离网段中的同步,可以通过定时规范配合摆渡机来做自动同步。
  • 而面对一地多中心这种复杂的架构情况,如果只从工具角度或工程角度很难完全保证效率的提升,所以需要建立资源池或者配备相应的分发计划,需要有上层统一管理的机制和规范化的流程来保证整体的分发的安全性和效率。

    应对不同的环境与场景,采用对应的同步机制和策略,这也往往涉及到企业的管理合规性。所以企业在考虑发布高效性和安全性的同时,管理合规性也应纳入考量。

    希望通过本期内容,能对企业制品管理提供帮助。

    免费申请演示

    联系我们

    服务热线:

    020-38847288

    QQ咨询:

    3593213400

    在线沟通:

    立即咨询
    查看更多联系方式

    申请演示

    请登录后在查看!