ThoughtWorks技术大咖Neal Ford深度解析演进式架构概念

Neal Ford是全球软件设计与定制领袖企业ThoughtWorks的总监级咨询师,meme wrangler,还是一位极客、一位著名的讲师、一位音乐爱好者,同时也是一位作家,他精通各种编程语言,先后有多部关于软件架构设计方面的著作,比如有《Functional Thinking》、《Art of Java Web Development》《The Productive Programmer》等,先后有多本著作被翻译成了中文,2018年4月,Neal Ford带着最新著作《Building Evolutionary Architectures-Support Constant Change》来到了中国。

很多企业都在寻找能够快速高效构建软件架构的指导性思维,而Neal Ford在软件架构领域丰富的经验和极具创新性的思维为众多企业内部的架构师和开发者带来了全新的思路。作为一家全球性的企业,ThoughtWorks在技术方面拥有独特的全球化视角,而Neal Ford与另外两位同事Rebecca Parsons和Patrick Kua也正是在全球项目经验的积累过程中得到了演进架构的概念,于是就有了这本书。

演进式架构的出现

演进式架构的出现有多方面的原因。最主要的一方面在于,在数字化转型的浪潮下,企业有推动创新业务的需求,然而,传统的企业软件固化的业务流程在IT层面上是创新的阻碍。

Neal Ford在采访中表示,ThoughtWorks从技术的角度出发,认为更应该照顾企业真实的应用场景,定制化地开发软件,或者说,从定制化的软件平台下开发出独特的业务模型。这本书中所说演进式架构并不是要否定原有企业中常见的成体系的软件系统,而是要把原来的软件比如SAP、DMS等应用逐步演进到微服务架构上,这是演进式架构主要解决的问题。

另一方面是技术的演进,主要是微服务技术的出现。Neal Ford在采访中表示,微服务本身是一种架构的模式,或者可以把微服务视为一种架构风格,而这种架构风格正好是在这本书里面所介绍的演示架构的一些原则和实践的最佳的体现。

演进式架构的特点

向导式是Neal Ford所说的演进式架构的重要特征。向导式是指当开发者想提升系统某一方面的能力的时候,可以通过定义适应函数来明确现在的演进方向是不是能想要的,可以量化地展示给开发者现在离目标还有多远。向导式的指引这点对于许多企业,尤其是大型企业有大规模架构堆栈的时候尤为难得。

从这些基础上我们也能看到,演进式架构相对于以前的架构开发模式以及开发思想并不是跳跃性的突破,其实是有一定延续性的。据Neal Ford介绍,Netflix等大公司已经有了演进式架构的实践,在演进式架构的概念推出之前,更多地是将这些实践定义为适应性架构。

但适应性架构跟现在的演进式架构还是有很大区别的。

Neal解释说,适应性架构的特点是通过配置系统、或者配置文件来支撑整个系统,当业务改变的时候需要更改配置项即可让系统适应起新业务流程,这一时期的开发和运维是完全分开的。演进式架构的设计本身就是支持由于新业务不断出现所带来的演进式问题,是建立在持续集成、持续交付、DevOps、基础设施即代码的基础之上的,与原来的适应性架构的技术趋势生态已有很大不同。

适应性架构要求软件架构本身非常大而全,通过配置项在已有的基础上做配置,适应性架构的本身就很复杂,所以,构建这样一套系统的成本首先会很高。而演进式架构的做法更轻量级,是在当需求出现的时候通过适应函数来把握架构演进的方向,演进式架构随着系统和业务的增加而变化,而且能够保证用户得到想要的部分,追求性能的得到性能上的优化,追求扩展性的在扩展性方面可以不断提升。

再简单而言,适应性架构会做很多详尽的规划和设计,以至于会做许多无用功,演进式架构更着眼于实际需求,会更多地依靠后期持续反馈来调整演进方向。

演进式架构的应用、适用与作用

Neal表示,当企业认识到演进式架构能让他比竞争对手跑得更快的时候,一定会选择演进式架构。

如何开启演进式架构的第一步呢?Neal表示,简单的在企业部署一个适应函数或者部署一个架构检查的过程中其实就已经算是在采用演进式架构了,但这一技术层次的变革对于人和组织都没有什么变化,想要充分发挥演进式架构的优势,还需要整个团队组织架构做出变化。组织结构需要支撑敏捷转型,团队成员需要相对稳定,需要支持DevOps,渐渐发挥演进式架构的作用,但刚开始的时候作用并不大,需要一个漫长的过程。

虽然演进式架构的优势非常明显,但Neal表示演进式架构并不适用于所有企业用户。想要采用演进式架构的企业需要一些基础,比如需要有敏捷的开发模型、敏捷的开发方式、持续交付、DevOps的开发基础设施或者是持续的交付开发实践等等,如果没有这些基础,那么企业将很难适应演进式架构。

演进式架构让IT架构师的角色也发生了改变。演进式架构具有向导性,当架构师在思考软件架构设计的时候,由于有了演进式架构所特有的量化性指标,能够更有的放矢。在这样的情况下,IT架构师面对不断变化的业务,主要的工作是去引导不同团队在做架构设计中所要遵循的不同原则,而IT架构师也在演进式架构的推动下,从架构的规划管理者变成了教练员。

对企业来说,演进式架构能减少因人员变动而对现有IT架构持续演进所带来的负面影响。总之,这种架构可以减少企业对于特定架构师的依赖。因为,演进式架构把原来的架构设计从文档变成了适应函数,适应函数能让架构师清晰地看到当前架构的特征,并指出演进方向,能迅速让新的架构师接任原来的工作。

在数字化转型后时代来临的今天,越来越多的中国企业都希望建立自己的企业架构模型。此次来华,Neal走访了几家大型机构,他表示,因为企业架构有复杂性,所以在选用演进式架构方面,很多中国企业由于缺少部分原始积累反而会有很大的优势。