进化的视角 演进式架构让企业可以更好拥抱变化

[摘要]作为跨国数字化转型咨询公司ThoughtWorks的总监、软件架构师,Neal Ford是一个拥有多重身份的传奇式人物。他精通各种编程语言,为大规模企
作为跨国数字化转型咨询公司ThoughtWorks的总监、软件架构师,Neal Ford是一个拥有多重身份的传奇式人物。他精通各种编程语言,为大规模企业应用的设计、构建和工程实践提供咨询服务;作为国际知名讲师,他登上过许多世界顶级开发者会议的讲台;作为极客和作家,他著有多本广受好评的畅销书,如《卓有成效的程序员》、《函数式编程思维》。
进化的视角 演进式架构让企业可以更好拥抱变化

ThoughtWorks总监、软件架构师Neal Ford

近日,Neal带着与ThoughtWorks全球CTO Rebecca Parson博士一起总结提炼的演进式架构核心概念来到中国,向中国广大开发者以及架构师介绍演进式架构的概念及其应用。他们借鉴了生物进化的分析视角,从更长远的考量来思考软件架构的存在,改变了过去单一时间点评判架构好坏的视野局限,转而思考如何通过可度量的适应度函数(fitness function)定义来“创造”架构演进的生态。

时代演变 架构如何演进?

随着企业数字化转型的转型,业务实践不断丰富,相应的工具和框架在演进,创新的工具和技术不断涌现。在这种情况下,开发者需要应对不断发生的变化。一直以来,架构师都习惯于对软件架构进行预估和提前设计以保护那些系统的重要特征(即不同的架构维度),比如:业务需求、性能、安全性、可扩展性等。但在软件开发这样一个生态系统中,新业务需求的出现、爆发性的用户增长、新技术的涌现都将会打破这个动态的平衡。而架构师和团队不得不不断做出调整来应付这些变化,并在不同的架构特征间进行痛苦的权衡。

将“可演进性”作为新的架构特征加入到系统中,让它在系统演进时为其他特征提供保护。这便是演进式架构,它使我们可以兼顾多个架构维度进行引导式的增量变更。演进式架构在架构层面做到演进式地变更,在开发实践、发布实践和整个开发流水线上去建立架构改变的实时反馈机制,让变更更容易、成本更低。

谈及演进式架构的提出,Neal表示,作为一种技术类的咨询公司,ThoughtWorks能够接触到全球不同区域或者不同客户的不同业务模式。演进式架构就来源于ThoughtWorks真实的全球项目经验的积累。同时,ThoughtWorks还有一个技术专家委员会(Technical Advisory Board)不断探索最新的技术趋势,也丰富了演进式架构的内容。

演进式架构的“演进”具有两个维度的内涵,第一个方向是增量式的演进,让系统能够做到增量式的演进或者增量式的变更;第二是指引式的演进或者是向导式的演进,通过定义一个适应度函数(fitness function)帮助我们实现演进式架构,让开发人员能够明确地认知现在的方向是不是架构所演进的方向,是不是我想要的方向,然后它可量化地告诉开发者现在离这个目标到底还有多远。“演进式架构天生可以解决企业增量式、迭代式开发的一种诉求。”Neal说。

现在整个业界还流行适应性架构,它的解决思路是通过一个大的配置文件或者系统,其会涉及很多的配置项,比如我有一个新的需求或者是新的业务流程进来的时候,我只需要改这个配置项就可以支撑整个系统,这种架构模式叫做适应性架构。

Neal说,演进式架构与适应性架构不同,其目的是让架构本身天生就能支持新业务模式不断出现的演进式问题。演进式架构基于业界近几年出现的持续集成、持续交付、DevOps、基础设施即代码等新的基础实践。“举一个例子,大家现在都很了解混乱工程,英文叫chaos engineering。这个实践实际上是近几年在微服务产生之后才出现的,十年前开发团队和运维团队实际上是分割的,完全分开的。正是有了DevOps这样的实践,演进式架构可以把chaos engineering作为整体的可持续的适应度函数中的一部分。而适应性架构产生的时候,运维和开发是分开的。”

结果就是适应性架构是为了未来支撑不同的业务方式而做的一个大而全的解决方案,通过配置项给它进行一个灵活的变更。但是演进式解决问题的思路是当我的业务需求真正出现以后,通过适应度函数可以把握整个架构的演进方向。演进式架构随着系统、业务逐渐叠加,能够保证架构上我所想保护的那些特征,比如说性能、可扩展性,这些特征能够支撑企业的演进。

演进式架构会把原来我们在做企业架构治理或者是架构设计的时候变成一个文档,本身变成一组、一系列的适应度函数,这样的适应度函数可以帮助我们的架构师不仅仅定义我的架构里面希望能够看到的特征是什么,比如我的耦合度有多高,而是变成一个真正流水线上所运行的一个代码,变成运行的一个函数,这个函数会持续地帮我们检查当前架构是不是违反了这个规则。

企业如何落地演进式架构?

既然演进式架构能够解决企业在新形势下的诉求,那么企业该如何操作才能引入演进式架构呢?Neal表示,演进式架构的落地是有一定基础的,企业需要在开发流程和模型上实现敏捷、持续交付,以及DevOps。

因为企业在转型中,所以在实现演进式架构之前首先需要把自动化基础设施搭建起来,把采购软件包的模式向新的模式转变,比如持续集成、持续交付等。“很多企业在敏捷性转型的时候并没有从自己的工程实践上进行很大的改变,它可能并没有采用持续集成或者是DevOps这种工作模式,而只是做了一些敏捷流程的转型。这样的转型对于致力于成为精益企业或者演进式架构的企业来讲,基础并没有打通,他们需要进行彻底地转型。”Neal说。

同时,企业级架构师在思考软件架构设计的时候,需要把可维护、可扩展等进行量化,应该有一些量化的指标描述诉求,而不只是简单定性。这是企业级架构师在采用演进式架构的第一步,第二步是改变原来历史思考问题的方式。

Neal说,传统意义上企业级架构师更像是一个治理或者管理的角色,他会说整个企业的架构模式应该是这样的,你们都要遵循我这样一个模式。但是在演进式架构里面,我们对企业级架构师的要求是希望他能够从一个管理者的角色变成一个引导者的角色,他应该去引导各个不同的系统或者各个不同的团队。“在企业架构设计的时候你们应该遵循的原则是什么,你们如何能够做到更好的增量式的演进,你们在工程实践里面应该采用什么最佳的实践,它应该变成一个引导者或者是一个类似于我们经常说的教练的角色,而不再是一个管理者的角色。”

目前,企业架构师的角色正在新的时代被重新定义,演进式架构给出了一个方向。对于企业架构师或者是企业在设计架构的时候,如何能够支持整个系统本身向前的演进,这件事情不仅仅是在中国,全球的企业都在面临同样的问题。

Neal表示,Netflix在演进式架构方面进行了丰富实践。“不管是传统企业还是Netflix这样的公司,ThoughtWorks参与或者是合作的公司或多或少地进行演进式架构中的一些实践,只不过在这之前我们并不会把它定义成演进式架构或者适应度函数。”

对于中国企业采用演进式架构,Neal认为,中国企业在很多方面可以实现跨越式发展,因为他们没有历史包袱。从市场来看,如果企业意识到这样一种实践能够帮助他更好地比竞争对手跑得更快,他一定会做这样的事情。

“通过沟通,ThoughtWorks在中国的重要客户比如戴姆勒等很看好我们在架构方面的新思路。ThoughtWorks是一个全球的咨询公司,我们不仅仅会看到现在中国企业的实践,更重要的是作为我所在的TAB这个组织,它会去观察全球范围的最佳实践,这些最佳实践会被总结出来,再反馈给各个地区和各个国家,带给各个企业,在各个不同的地区带来不同的价值。”Neal最后说。




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。