当开始编写本书第4版时,我们遇到的个问题是:架构还重要吗?随着云基础设施、微服务、框架和每个可能想象的领域以及质量属性参考架构的兴起,人们可能会认为不再需要架构知识了。今天的架构师需要做的就是从丰富的工具和基础设施备选方案中选一个,再将它们实例化并加以配置,一个架构就完成了。我们过去(以及现在)非常肯定架构仍然重要。为此,我们采访了一些架构师(他们在医疗保健、汽车、社交媒体、航空、国防、金融、电子商务等领域工作),他们谁也没有被教条的偏见所左右。他们的回答证实了我们的信念,即架构在今天和20多年前我们编写第1版时一样重要。让我们来研究一下架构仍然重要的原因。,新需求的增长速度多年来一直在加快,甚至现在还在继续加快。在客户和业务需求以及竞争压力的驱动下,今天的架构师面临着不断增加的特性需求和永无休止的待修复bug。如果架构师不注意系统的模块化(而且请记住微服务不是的),系统很快就将抛锚—难以理解、变更、调试和修改,并拖累业务。第二,当系统的抽象级别在增加时(我们可以并且确实经常使用许多复杂巧妙的服务,而不用关心它们是如何实现的),我们创建的系统的复杂性也在以同样快的速度增加。这像一场军备竞赛,而架构师并没有获胜!架构一直致力于驯服复杂性,而这一点在短期内是不会消失的。说到提高抽象级别,基于模型的系统工程(Model-Based Systems Engineering,MBSE)在过去10年的时间里已经成为工程领域的一股强大力量。MBSE是一种形式化的支持系统设计的建模应用。国际系统工程理事会(International Council on Systems Engineering,INCOSE)将MBSE列为“转型赋能者”之一,它是整个系统工程学科的基础。模型是对一个可以被推理的概念或结构进行图形化、数学化或物理化表示。INCOSE正试图将工程领域从基于文档的思维转向基于模型的思维,其中结构模型、行为模型、性能模型等都被持续用于更好、更快、更便宜地构建系统。MBSE本身已经超出了本书的范围,但是我们不得不注意到正在被建模的是架构。那谁建立模型呢?回答是:架构师。第三,信息系统世界的飞速增长(以及前所未有的员工流动率)意味着,在任何现实世界的系统中,没有人了解一切。仅仅聪明和努力是不够的。第四,尽管工具可以自动完成我们过去人工做的许多事情(例如Kubernetes中所有的编排、部署和管理功能),但我们仍然需要理解所依赖的这些系统的质量属性,并在把系统组合到一起时理解突现的质量属性。大多数质量属性(如性能、防护性、可用性、安全性等)都容易受到“短板”问题的影响,而这些短板只有在联调系统时才会出现并影响我们。如果没有指路之手来避免灾难,联调很可能会失败。那只指路之手属于架构师,不论他们的头衔是什么。考虑到这些因素,我们觉得确实需要这本书。但有必要推出第4版吗?当然有必要!这应该是非常明显的。自上一版出版以来,计算机领域发生了很大变化。一些之前没有被考虑的质量属性在许多架构师的日常实践中变得重要。随着软件继续渗透到社会的各个方面,对许多系统来说,安全性考虑已经变得至关重要,如软件控制驾驶的汽车。同样,十年前,能源效率是少数架构师考虑的质量属性,但现在必须注意它,从对能源有强烈需求的大型数据中心到我们周围的小型(甚至很小的)电池驱动的移动和物联网设备。此外,考虑到我们比以往任何时候都更多地利用现有的组件来构建系统,可集成性的质量属性正在消耗我们越来越多的注意力。后,我们正在构建不同种类的系统,并且以不同于10年前的方式构建它们。现在的系统通常构建在云中的虚拟化资源之上,它们需要提供并依赖显式接口。此外,它们的移动性越来越强,移动性带来的机遇和挑战也越来越多。因此,在这个版本中,我们增加了关于虚拟化、接口、移动性和云的章节。如你所见,我们说服了自己。希望我们同样说服了你,你会发现第4版对你的书架是一个有用的补充。