前言
本书的两位作者 Neal 和 Mark 在撰写《软件架构基础》(Fundamentals of Software Architecture)时,不断遇到一些想写进书里、却过于复杂的架构案例。每个案例都没有简单的解决方案,只有一组杂乱难解的权衡。我们把这些案例暂时放到一边,归入一个名为“难点”的集合。那本书完成后,我们面对已经堆积如山的难点,开始思考:为什么现代架构中的这些问题如此难以解决?
我们像架构师一样逐一处理这些案例,对每种情形做权衡分析,同时仔细观察自己得出权衡结论的过程。最早出现的一项重要发现,是数据在架构决策中变得越来越关键:谁可以或应该访问数据,谁可以或应该写入数据,以及如何管理分析型数据与操作型数据的分离。为此,我们邀请这些领域的专家共同参与,使本书能够从两个方向完整讨论决策:既从架构看数据,也从数据看架构。
最终形成的就是这本书:它汇集了现代软件架构中的棘手问题,说明了令决策困难的种种权衡,并以图文并茂的方式指导你把同样的权衡分析方法应用到自己独特的问题中。
本书使用的排版约定
本书采用以下排版约定:
- 斜体
-
表示新术语、URL、电子邮件地址、文件名和文件路径。
等宽字体-
用于程序清单,也用于在正文中表示变量名或函数名、数据库、数据类型、环境变量、语句和关键字等程序元素。
等宽粗体-
表示需要由用户原样输入的命令或其他文本。
等宽斜体-
表示应当由用户提供的值或根据上下文确定的值来替换的文本。
这样的元素表示一条技巧或建议。
使用代码示例
本书的补充材料(代码示例、练习等)可从 http://architecturethehardparts.com 下载。
如果你对代码示例有技术问题或在使用时遇到困难,请发送电子邮件至 bookquestions@oreilly.com。
本书旨在帮助你完成工作。一般来说,如果本书提供了示例代码,你可以在自己的程序和文档中使用它。除非要复制相当大的一部分代码,否则无需联系我们取得许可。例如,编写一个使用本书若干代码片段的程序不需要许可;销售或分发 O’Reilly 图书中的示例则需要许可。引用本书并摘引示例代码来回答问题不需要许可;将本书大量示例代码纳入产品文档则需要许可。
我们感谢署名,但通常并不强制要求。署名一般包括书名、作者、出版社和 ISBN。例如:“Software Architecture: The Hard Parts,Neal Ford、Mark Richards、Pramod Sadalage、Zhamak Dehghani 著(O’Reilly)。Copyright 2022 Neal Ford、Mark Richards、Pramod Sadalage、Zhamak Dehghani,978-1-492-08689-5。”
如果你认为自己对代码示例的使用超出了合理使用范围或上述许可范围,请联系 permissions@oreilly.com。
O’Reilly 在线学习平台
四十多年来,O’Reilly Media 一直通过技术与商业培训、知识和洞见帮助企业取得成功。
由专家和创新者组成的独特网络,通过图书、文章和在线学习平台分享知识与经验。O’Reilly 在线学习平台可以按需提供直播培训课程、深入的学习路径、交互式编程环境,以及来自 O’Reilly 和另外 200 多家出版商的海量文字与视频内容。更多信息请访问 http://oreilly.com。
联系我们
有关本书的意见和问题,请寄送至出版社:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938(美国或加拿大)
707-829-0515(国际或本地)
707-829-0104(传真)
本书设有网页,列出勘误、示例和其他补充信息:https://oreil.ly/sa-the-hard-parts。
如需评论本书或咨询技术问题,请发送电子邮件至 bookquestions@oreilly.com。
有关 O’Reilly 图书和课程的新闻与信息,请访问 http://oreilly.com。
- Facebook:http://facebook.com/oreilly
- Twitter:http://twitter.com/oreillymedia
- YouTube:http://youtube.com/oreillymedia
致谢
Mark 和 Neal 感谢所有参加过我们课程、研讨会、会议演讲和用户组活动的人——这些活动几乎全部在线举行——也感谢所有听过这套材料不同版本并提供宝贵反馈的人。无法现场交流时,新材料的迭代尤其困难,因此我们十分感谢大家对多个版本提出的意见。感谢 O’Reilly 的出版团队,是他们让写书这件事尽可能少一些痛苦。我们还要感谢几个让人保持理智、激发灵感的随机“绿洲”,它们有着诸如 Pasty Geeks 和 Hacker B&B 这样的名字。
感谢为本书做技术审阅的 Vanya Seth、Venkat Subramanian、Joost van Weenen、Grady Booch、Ruben Diaz、David Kloet、Matt Stein、Danilo Sato、James Lewis 和 Sam Newman。你们宝贵的见解与反馈帮助我们验证技术内容,让这本书变得更好。
我们尤其希望向受到那场突如其来的全球疫情影响的无数劳动者与家庭致意。作为知识工作者,我们遭遇的不便,与各行各业众多朋友和同事承受的巨大冲击与伤痛相比微不足道。我们特别向医护人员表达同情与敬意:他们中的许多人从未想过自己会站在一场可怕的全球悲剧最前线,却以崇高的方式承担了一切。我们共同的谢意,永远无法用言语充分表达。
Mark Richards 的致谢
除上述致谢外,我还要再次感谢我挚爱的妻子 Rebecca,感谢她在我的又一个写书项目中一直包容我。即使这意味着占用了你创作自己小说的时间,你无尽的支持与建议仍然促成了本书。Rebecca,你就是我的整个世界。
我也要感谢好友兼合著者 Neal Ford。与你合作准备本书(以及上一本书)的材料,确实是一段宝贵而充实的经历。你现在是、也永远都会是我的朋友。
Neal Ford 的致谢
我要感谢我的大家庭,感谢作为一个集体的 Thoughtworks,也感谢其中的 Rebecca Parsons 和 Martin Fowler。Thoughtworks 是一个非凡的群体:他们既为客户创造价值,又始终敏锐地追问事物为何有效,从而让我们能够不断改进。Thoughtworks 以多种方式支持了本书,也持续培养出每天都在挑战和启发我的 Thoughtworker。
我还要感谢社区鸡尾酒俱乐部,它让我们能定期从日常生活中抽身;其中每周一次在户外、保持社交距离的聚会,帮助大家熬过了刚刚经历的那段离奇时期。感谢我的多年好友 Norman Zapien,他总能带来愉快的交谈。最后,感谢我的妻子 Candy。她始终支持这样的生活方式——我常常盯着写书之类的东西太久,而没有多看看家里的猫。
Pramod Sadalage 的致谢
感谢我的妻子 Rupali 一直以来的支持与理解,也感谢我可爱的女儿 Arula 和 Arhana 给我的鼓励;爸爸爱你们。没有与我合作的客户,以及帮助我反复打磨这些概念和内容的各类会议,我所做的一切都不可能实现。感谢我最近服务的客户 AvidXchange,感谢他们的支持,并提供了绝佳空间,让我能够迭代新的概念。也感谢 Thoughtworks 在我人生中持续给予支持,感谢 Neal Ford、Rebecca Parsons 和 Martin Fowler 成为出色的导师;你们让我成为更好的人。最后,感谢我的父母,尤其是我每天都在思念的母亲 Shobha。妈妈,我想你。
Zhamak Dehghani 的致谢
感谢 Mark 和 Neal 坦诚邀请我为这部出色的作品贡献力量。没有丈夫 Adrian 持续不断的支持,以及女儿 Arianna 的耐心,我不可能完成自己对本书的贡献。我爱你们。