Home

/

传统单体与微服务架构混合发布方法与实践

Post date:2023-11-15 14:36:56

分享到

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

在企业数字化转型进程中,业务系统架构将逐步经历由单体系统向微服务架构的整体性转变。这种转变的背后,是企业对于快速响应市场变化、提升业务灵活性和可扩展性的迫切需求。但在架构转型过程中,不可避免地会遇到传统服务及微服务并行的状况。本次直播针对如何做好混合架构发布编排的问题,系统介绍了一套混合发布编排的可行思路及最佳实践,为混合架构发布设计提供参考。


01. 传统单体架构与微服务架构

传统单体系统架构通常将所有功能集成在一个单一的、大型的应用程序中,这种架构虽然在初期阶段有其便利性和效率性,但随着业务的不断扩展和复杂化,其缺点也逐渐显现出来。比如,任何一个小的修改都可能需要对整个系统进行测试和部署,这无疑大大限制了企业的敏捷性和灵活性。

相比之下,微服务架构将系统拆分为一组小的、独立的、互相通信的服务,每个服务都有自己的数据库和业务逻辑,可以独立进行开发、部署和扩展。这种架构使得企业可以按需快速部署新的服务,也可以更灵活地对现有服务进行优化和升级,大大提升了系统的可扩展性和可维护性。同时,通过服务之间的解耦,也可以降低系统的复杂性,提升系统的稳定性。

因此,单体架构向微服务架构转变,是大多数业务的整体趋势。但一个系统是否采用微服务架构设计或改造,仍需要综合考虑各种因素,例如系统变更频繁度、变更安全性要求等。实际上,单体架构对于特定业务系统(如银行核心系统)仍具有实用价值,采用单体架构可保障其稳定性和变更可控性,不会被完全替代;亦或是系统过于老旧,难以进行微服务改造,从而必须继续采用单体架构。无论是何种原因,混合架构在大部分行业将会不可避免地产生,并长期存在。


02. 不同架构发布方式存在差异

传统单体架构与微服务架构,在发布方式上也具有显著区别。

对于传统单体架构,应用程序通常是单体应用,所有的组件都打包在一起,形成一个单独的部署包。部署时,需要将整个应用程序部署到服务器上,这意味着对应用程序的任何部分进行更新,都需要重新打包整个应用程序并重新部署。由于这种发布方式的特性,整个应用程序的停机时间较长,这可能对用户体验产生负面影响。

然而,在微服务架构中,发布方式则有所不同。开发人员首先编写代码并进行测试然后将代码打包成一个单独的部署包。接下来,部署人员将部署包上传到服务器上,并在服务器上进行部署和配置。最后,运维人员会对部署的服务进行监控和维护。由于每个服务都是独立的,因此在更新或者修改某一服务时,只需要重新部署对应的服务,而不是整个应用程序,这大大减少了停机时间,提高了系统的可用性和用户体验。

传统单体和微服务架构在发布方式上的差异,意味着难以采用传统的手工发布方式,对混合了两种架构的系统进行逐步、逐级操作,这种方式将面临巨大的不确定性和发布风险,例如发布版本、制品的错配,发布出现错误后难以回滚等。


03. 混合发布的定义及必要性

当前我们在与众多客户的交流中,总结了混合架构发布面临的多种问题和痛点,例如,如何在混合云环境下适配部署在不同环境应用的协同发布,如何有效关联发布资产,如何保障发布过程有序高效的同时还能够尽可能地降低发布风险,如何有效地建设完整的混合发布管理体系等。

总体来说,需要一种相对统一的混合发布实践,整合复杂混合架构发布过程,在保障发布高效性的同时,还能尽可能地保证多次发布一致性和稳定性,实现混合发布编排的标准化、自动化和一体化。


04. 混合发布最佳实践

本次直播介绍的混合发布最佳实践,将为上述问题痛点提供一种解决的思路和框架。

混合发布实践主要由双模工程域、发布单、多级工程流水线编排三大子实践组成,需要通过研发团队、组织级流程规范以及一体化研发工具的相互配合实现。

1)双模工程域分解

对于单体架构,更适合采用传统的瀑布式研发模式。在单体架构中,由于所有的功能模块都集成在一个大的应用中,修改和更新都需要对整个系统进行,因此,预先进行详细的需求分析和设计,然后按部就班地进行开发和测试,这种方式更符合单体架构的特性。

对于微服务架构,更适合采用敏捷开发模式。在微服务架构中,系统被拆分成许多独立的服务,每个服务都可以独立进行开发、部署和更新。这种架构让团队有更多的灵活性,可以快速响应业务需求的变化,迭代更新服务,因此,敏捷开发模式与微服务架构更为相配。

在这两种模式中,工程部分并非是完全不同的,其中的开发任务拆分、编码、构建、测试、制品分发、部署执行等动作,本质上仍是一致的。因此,即使是传统的单体架构,依旧可以通过流水线编排,对发布工程进行线上化和自动化,并可加入原本手工操作中需要花费大量时间完成的工作,如需求代码比对和文档清单校验等。通过对双模主流程的区分和抽象,可以准确识别出各自工程域中的关键节点,以及节点所需关联的发布资产,进而为后续环节打好基础。


2)统一发布调度

在多模主流程节点及资产被清晰识别的基础上,使用统一发布单对发布资产进行标注,从而便于后续通过工程流水线,按照既定配置,对各节点资产进行统一汇聚


3)工程编排实践

在发布单关联了相应的发布资产后,需要按照最小化发布单元(如单个微服务),建设互相独立自动化发布流水线,并通过多级流水线的方式依次组装,形成自动化发布工程流水线组,按照固定的规则逐级汇聚,并按照系统间关联,以灵活的调度方式进行发布。


05. 混合发布最佳实践收益

上述混合发布最佳实践的核心收益在于,对于复杂混合系统的复杂业务需求,即能够提高整体交付效率,降低交付成本,同时保障交付过程质量,增强了问题追溯能力。

首先,通过采用“一包到底”的制品晋级方式,可以确保数据源(制品)的可信度,避免了生产与测试制品版本不一致的问题。这种做法可以确保“所测即所构”、“所发即所测”。

其次,基于统一发布单,可以实现发布资产关联,快速确认发布资产范围,提升发布效率。这一做法避免了反复确认发布范围的需求,减少了审批流程,提高了工作效率。

再次,依托一体化研发平台和自动化流水线,能够实现混合发布编排的自动化和可视化,降低了混合发布编排的工程门槛,避免了人工操作导致的发布问题。这一做法可以解决因缺乏统一发布工具而导致的发布编排困难,提升发布过程的效率。

最后,通过编排紧急回滚流水线和基于发布资产链路的溯源方式,可以快速向上游制品、配置和代码溯源,提升缺陷修复效率和准确性。这一做法提供了一种有效的问题追溯机制,一旦业务系统出现问题,能够迅速回滚并找出问题源头。

总的来说,本次介绍混合发布最佳实践在提升整体发布效率、确保发布资产准确性和增强问题追溯能力等方面能够为研发和运维发布团队带来多种正面影响,为企业数字化转型提供有效支持。


06. 发布管理体系建设

如果您希望参考上述实践,构建自己的混合发布体系,那么一个良好的组织架构、合适的管理规范及成熟的一体化研发工具平台,将是不可或缺的。若您在建设研发体系的过程中存在困惑,欢迎联系嘉为蓝鲸产品及咨询团队,我们将为您提供一站式、全方位的研发体系转型服务,助力您解决混合架构发布的多重痛点,实现混合发布质效的共同飞跃。

免费申请演示

联系我们

服务热线:

020-38847288

QQ咨询:

3593213400

在线沟通:

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

申请演示

请登录后在查看!