时代演变 架构如何演进?
时间:2022-03-26 08:18:01 | 来源:行业动态
时间:2022-03-26 08:18:01 来源:行业动态
随着企业数字化转型的转型,业务实践不断丰富,相应的工具和框架在演进,创新的工具和技术不断涌现。在这种情况下,开发者需要应对不断发生的变化。一直以来,架构师都习惯于对软件架构进行预估和提前设计以保护那些系统的重要特征(即不同的架构维度),比如:业务需求、性能、安全性、可扩展性等。但在软件开发这样一个生态系统中,新业务需求的出现、爆发性的用户增长、新技术的涌现都将会打破这个动态的平衡。而架构师和团队不得不不断做出调整来应付这些变化,并在不同的架构特征间进行痛苦的权衡。
将可演进性作为新的架构特征加入到系统中,让它在系统演进时为其他特征提供保护。这便是演进式架构,它使我们可以兼顾多个架构维度进行引导式的增量变更。演进式架构在架构层面做到演进式地变更,在开发实践、发布实践和整个开发流水线上去建立架构改变的实时反馈机制,让变更更容易、成本更低。
谈及演进式架构的提出,Neal表示,作为一种技术类的咨询公司,ThoughtWorks能够接触到全球不同区域或者不同客户的不同业务模式。演进式架构就来源于ThoughtWorks真实的全球项目经验的积累。同时,ThoughtWorks还有一个技术专家委员会(Technical Advisory Board)不断探索最新的技术趋势,也丰富了演进式架构的内容。
演进式架构的演进具有两个维度的内涵,第一个方向是增量式的演进,让系统能够做到增量式的演进或者增量式的变更;第二是指引式的演进或者是向导式的演进,通过定义一个适应度函数(fitness function)帮助我们实现演进式架构,让开发人员能够明确地认知现在的方向是不是架构所演进的方向,是不是我想要的方向,然后它可量化地告诉开发者现在离这个目标到底还有多远。演进式架构天生可以解决企业增量式、迭代式开发的一种诉求。Neal说。
现在整个业界还流行适应性架构,它的解决思路是通过一个大的配置文件或者系统,其会涉及很多的配置项,比如我有一个新的需求或者是新的业务流程进来的时候,我只需要改这个配置项就可以支撑整个系统,这种架构模式叫做适应性架构。
Neal说,演进式架构与适应性架构不同,其目的是让架构本身天生就能支持新业务模式不断出现的演进式问题。演进式架构基于业界近几年出现的持续集成、持续交付、DevOps、基础设施即代码等新的基础实践。举一个例子,大家现在都很了解混乱工程,英文叫chaos engineering。这个实践实际上是近几年在微服务产生之后才出现的,十年前开发团队和运维团队实际上是分割的,完全分开的。正是有了DevOps这样的实践,演进式架构可以把chaos engineering作为整体的可持续的适应度函数中的一部分。而适应性架构产生的时候,运维和开发是分开的。
结果就是适应性架构是为了未来支撑不同的业务方式而做的一个大而全的解决方案,通过配置项给它进行一个灵活的变更。但是演进式解决问题的思路是当我的业务需求真正出现以后,通过适应度函数可以把握整个架构的演进方向。演进式架构随着系统、业务逐渐叠加,能够保证架构上我所想保护的那些特征,比如说性能、可扩展性,这些特征能够支撑企业的演进。
演进式架构会把原来我们在做企业架构治理或者是架构设计的时候变成一个文档,本身变成一组、一系列的适应度函数,这样的适应度函数可以帮助我们的架构师不仅仅定义我的架构里面希望能够看到的特征是什么,比如我的耦合度有多高,而是变成一个真正流水线上所运行的一个代码,变成运行的一个函数,这个函数会持续地帮我们检查当前架构是不是违反了这个规则。