序
六年来,我有幸与Nicole Forsgren和Jez Humble合作编写了《DevOps现状报告》(State of DevOps Report),该报告收集了来自三万多名受访者的数据。这份报告给我的最大启示之一就是软件架构的重要性:高效能团队的架构能够使开发人员快速、独立、安全、可靠地开发、测试和部署软件,从而为客户不断创造价值。
几十年前,我们可以开玩笑地说,软件架构师只擅长使用Visio、绘制UML图表以及制作没人看的PowerPoint幻灯片,但今非昔比,大量企业在市场上的成败取决于它们所开发的软件。应该说,没有什么比它们每天必须使用的架构更能影响开发人员的日常工作了。
本书填补了理论与实践之间的一段空白。事实上,我认为只有少数人可以将它写出来。Cornelia Davis是极其合适的人选,她曾在攻读博士学位时学习了编程语言,对函数式编程和不可变性产生了浓厚的兴趣,拥有数十年大型软件系统的开发经验,并且帮助大型软件企业获得过巨大的成功。
在过去的五年中,我多次联系她寻求帮助和建议,我们经常讨论有关诸如CQRS和事件源模式、LISP和Clojure语言(我最喜欢的编程语言)、命令式编程和状态的危险性,甚至像递归这样简单的事情。
本书的亮点在于Cornelia不仅仅从模式入手。她从模式的基本理论开始,然后通过论证(有时通过逻辑或者流程图)来证明它们的有效性。除了理论本身,她还通过Java Spring框架一个一个地实现了这些模式,以便让你更好地理解这些知识。
我发现,这本书兼具娱乐性和教育性,并且使我对大量以前只是略知皮毛的知识有了更深入的了解。我现在致力于通过Clojure语言来实现她的示例,以证明我可以将这些知识付诸实践。
本书可能会让你联系起一些令人感到兴奋甚至惊讶的概念。对我而言,其中一个概念就是无论是面向切面的编程(AOP)、Kubernetes的挎斗(sidecar)模式,还是Spring Retry注入,都是为了统一处理横切关注点(cross-cutting concerns)。
希望你能像我一样喜欢这本书!
—Gene Kim,研究员以及The Phoenix Project、The Devops Handbook和Accelerate的联合作者