序三
大型软件系统驾驭之道

作为一个软件行业的从业者,我在该领域摸爬滚打了二十多年,见证了IT架构的演化变迁过程。企业IT架构是一个随着业务的变化不断发展进化的过程,每种架构在当时的阶段都非常好地支撑了当时的业务模式。信息化技术刚开始应用到业务,可能使用一个单机软件就可以搞定一个信息系统。随着技术的发展和越来越复杂的业务需求,软件架构变得越来越复杂,系统越来越庞大,设计并驾驭如此复杂的软件系统,考验着每位软件架构师的综合能力。

随着技术的发展、业务规模的暴增、商业模式的创新,企业IT架构经历了单体架构、应用分层架构、分布式架构和云计算架构等不同阶段。原来一个系统由一个团队就可以开发维护,慢慢发展到一个系统由数十个应用构成,需要几十个团队相互协作,企业业务协作的范围也从企业内部走向基于极端开放、动态的产业生态链按需协同。前所未有的分布和开放的特性,意味着企业IT系统的应用架构、开发运维、互操作框架、通信协议、高可用要求等许多方面与传统架构有着本质的区别。

一方面,所有的架构都是为了解决特定的业务场景,业务场景千变万化,每个人的技术背景不同,站的角度不同,所理解和设计的系统架构也就各不相同;另一方面,架构总是不断演进的,新的技术也层出不穷,因此软件架构的落地形式与能力边界也在不断进化中。软件开发底层的设计细节和高层架构信息是不可分割的,它们组合在一起,共同定义整个软件系统。软件架构师这一职责本身就应更关注系统的整体结构,而不是具体的功能和系统行为的实现。软件架构师的目标是创建一个可以让功能实现更加容易、迭代修改更加简单、扩展更加轻松的软件架构。随着技术的升级及业务的创新,企业级应用平台所面对的技术协作难度及管理成本均大幅上升,在这样的趋势下,软件平台架构设计与技术管理显得尤为重要,它决定了一个大型项目的最终成败,本书正是面向大型软件工程项目的架构设计与技术管理的解决之“道”。

架构设计是一门复杂的学问,要综合考虑编码、集成、部署、运维、可观测、容错、扩展、升级迭代等各种因素。要想提高软件架构的质量,就需要知道什么是优秀的软件架构。而为了在系统构建过程中采用好的设计和架构,以便减少构建成本,提高生产力,又需要了解系统架构的各种属性与成本和生产力的关系。因此,架构设计是平衡和取舍,不仅是简单的技术问题,更是管理智慧。永远没有绝对最优的架构,只有相对适合的架构。一个软件架构的优劣,可以用它满足用户需求所需要的成本来衡量。如果该成本较低,并且在系统的整个生命周期内一直能维持这样的低成本,那么这个系统的架构设计就是优良的。我们在做一个大型的复杂系统的架构设计时,不仅要考虑业务承载,还要考虑未来技术发展趋势,更要结合当前技术团队的知识储备,是一项综合业务+技术+团队管理的系统性工程。

软件架构设计是一件非常困难的事情,通常需要大多数程序员所不具备的经验和技能。不是所有人都愿意花时间来学习和钻研这个方向,做一个好的软件架构师所需要的技术广度和深度,以及团队管理的平衡驾驭之道,可能会让大部分程序员望而却步。本书正是作者多年大型项目架构设计及技术管理的经验总结,虽然篇幅不多,但却很有针对性,兼顾理论升华和实践落地,可谓“人狠话不多,字字暴击,全程高能”,对IT相关的从业人员具有非常好的实践指导意义,相信读者必能从中受益匪浅。

——阿里云架构师,《企业级云原生架构》作者 刘景应(四牛)

2022年6月于北京