具体描述
优秀的软件架构师应该既掌握业务知识又具备技术能力,做到这一点绝非易事,本书想要探讨的就是这个主题。这是一本真正的开源图书,我们邀请到50多位杰出的软件架构师参与写作。大家无偿地分享了各自的工作经验和心得,内容从规避风险的方法到组建团队的技巧,涵盖了架构设计的方方面面。衷心希望这97篇文章能激发您的思考,解决您工作中的困惑。
O’reilly第一本开源图书,业界专家集体智慧创作 。
旨在“为全世界的软件架构师提供洞察力和指导”。
集思广益、覆盖面广、写法新颖 。
技术社区及程序员博客热议 。
作者简介
蒙森-哈斐尔,O’Reilly出版的Enterprise JavaBeans和Java Message Service,First Edition两本书的合著者之一,企业计算领域全球领先的专家。
目录信息
客户需求重于个人简历
简化根本复杂性,消除偶发复杂性
关键问题可能不是出在技术上
以沟通为中心,坚持简明清晰的表达方式和开明的领导风格
架构决定性能
分析客户需求背后的意义
起立发言
故障终究会发生
我们常常忽略了自己在谈判
量化需求
一行代码比五百行架构说明更有价值
不存在放之四海皆准的解决方案
提前关注性能问题
架构设计要平衡兼顾多方需求
草率提交任务是不负责任的行为
不要在一棵树上吊死
业务目标至上
先确保解决方案简单可用,再考虑通用性和复用性
架构师应该亲力亲为
持续集成
避免进度调整失误
取舍的艺术
打造数据库堡垒
重视不确定性
不要轻易放过不起眼的问题
让大家学会复用
架构里没有大写的“i”
使用“一千英尺高”的视图
先尝试后决策
掌握业务领域知识
程序设计是一种设计
让开发人员自己做主
时间改变一切
设立软件架构专业为时尚早
控制项目规模
架构师不是演员,是管家
软件架构的道德责任
摩天大厦不可伸缩
混合开发的时代已经来临
性能至上
留意架构图里的空白区域
学习软件专业的行话
具体情境决定一切
侏儒、精灵、巫师和国王
向建筑师学习
避免重复
欢迎来到现实世界
仔细观察,别试图控制一切
架构师好比两面神
架构师当聚焦于边界和接口
助力开发团队
记录决策理由
挑战假设尤其是你自己的
分享知识和经验
模式病
不要滥用架构隐喻
关注应用程序的支持和维护
有舍才有得
先考虑原则、公理和类比再考虑个人意见和口味
从“可行走骨架”开始开发应用
数据是核心
确保简单问题有简单的解
架构师首先是开发人员
根据投资回报率(roi)进行决策
一切软件系统都是遗留系统
起码要有两个可选的解决方案
理解变化的影响
你不能不了解硬件
现在走捷径,将来付利息
不要追求“完美”,“足够好”就行
小心“好主意”
内容为王
对商业方,架构师要避免愤世嫉俗
拉伸关键维度,发现设计中的不足
架构师要以自己的编程能力为依托
命名要恰如其分
稳定的问题才能产生高质量的解决方案
天道酬勤
对决策负责
弃聪明,求质朴
精心选择有效技术,绝不轻易抛弃
客户的客户才是你的客户!
事物发展总会出人意料
选择彼此间可协调工作的框架
着重强调项目的商业价值
不仅仅只控制代码,也要控制数据
偿还技术债务
不要急于求解
打造上手(zuhanden)的系统
找到并留住富有激情的问题解决者
软件并非真实的存在
学习新语言
没有永不过时的解决方案
用户接受度问题
清汤的重要启示
对*终用户而言,界面就是系统
优秀软件不是构建出来的,而是培育起来的
索引
· · · · · · (收起)
读后感
一份checklist: 几年前,工程硕士软件工程课上老师说过一句话:软件管理并不难,你只需要一份完整的checklist,定期检查一下你有没有按照它做。这本书可以看作一份软件架构师的checklist,而且是一份集合了业界众多软件架构师经验的checklist。 从模糊到清晰: 工作了久了,...
一份checklist: 几年前,工程硕士软件工程课上老师说过一句话:软件管理并不难,你只需要一份完整的checklist,定期检查一下你有没有按照它做。这本书可以看作一份软件架构师的checklist,而且是一份集合了业界众多软件架构师经验的checklist。 从模糊到清晰: 工作了久了,...
Every morning I read one of the 97 things. I harvest a lot from them. They are excellent abstractions from a great deal of engineer practice. I think they can brain storm my head and direct me for a more experienced development behaviors.
书不厚,只是罗列了很多软件架构师对于自身工作体会的一个简短总结,无头无尾。让人读来感觉莫名其妙。 通常来说,在软件领域说明一个问题,需要解释为什么,给出论点论据和实例。此书完全就是找些所谓大牛写点概要文章。看大家的评论都这么高,是否我未能领会其精神也未可知……
用户评价
这本书的封面设计相当简洁,字体选择也很沉稳,给我的第一印象是内容会比较扎实,不会是那种浮光掠影式的泛泛而谈。我之前在工作中,特别是参与一些大型项目的重构时,常常会遇到各种意想不到的难题,比如系统性能瓶颈、代码维护困难、功能迭代缓慢等等,这些问题很多时候都能追溯到设计之初的架构决策。所以,我非常想从这本书里找到一些“灵丹妙药”,能够帮助我理解为什么会出现这些问题,以及如何才能从根本上避免它们。我特别期待书中能包含一些关于“可伸缩性”和“弹性”的讨论。在当今快速变化的互联网环境中,一个系统能否应对海量的用户访问和突如其来的流量高峰,几乎决定了它的生死存亡。我希望能学习到一些在架构设计阶段就能够考虑并实现高可伸缩性和弹性的具体方法和技术,比如如何利用负载均衡、缓存策略、数据库分片、容错机制等等。同时,我也对书中关于“可观测性”的篇幅很感兴趣,毕竟,一个无法被有效监控和诊断的系统,就像一个黑盒子,出了问题也无从下手。我希望能够学习到如何设计能够提供丰富日志、指标和追踪信息的架构,以便于快速定位和解决生产环境中的问题。
拿到这本书的第一个感觉是它的排版很舒服,字体大小适中,行间距也比较合理,读起来不会感到疲劳。虽然我不是一名全职的软件架构师,但我在软件开发过程中,经常需要参与到一些系统设计和技术决策的讨论中。有时候,我会感到自己对整个系统的宏观把握不够,对一些技术选择的深远影响认识不足。因此,我非常希望这本书能够帮助我建立起一个更清晰的“软件架构地图”,让我知道在不同的场景下,应该如何去思考和设计。我尤其关注书中是否会涉及一些关于“分布式系统”的设计考量。如今,越来越多的系统朝着分布式方向发展,如何保证数据的一致性、如何处理节点间的通信、如何实现故障转移等等,都是极具挑战性的问题。我希望能从书中学习到一些行之有效的分布式系统设计原则和模式,比如CAP定理、两阶段提交、分布式事务等,并理解它们在实际应用中的权衡。同时,我也对书中关于“领域驱动设计”(DDD)的介绍非常感兴趣,因为我认为DDD能够帮助我们更好地理解业务,并将业务逻辑转化为清晰的代码结构,从而构建出更具可维护性和可扩展性的系统。
这本书的封面上印着“软件架构师应该知道的97件事”,光是这个标题就足够吸引人了,仿佛里面藏着的是无数行业内前辈用经验提炼出的黄金法则。我一直以来都对软件架构这个概念充满好奇,也知道它是构建复杂系统时的关键所在,但总觉得缺乏一个清晰的脉络和系统性的认识。拿到这本书,我怀着一种“解密”的心情,希望它能为我揭示架构设计背后的逻辑和方法论,让我不再是在黑暗中摸索。书中提到的一些通用原则,比如“高内聚低耦合”等等,虽然在其他地方也零星地读到过,但在这里,我期待的是更深入的阐释,以及它们如何在实际的项目中被应用,遇到问题时如何思考和解决。我尤其关注书中是否能提供一些经典的架构模式,例如微服务、事件驱动、CQRS等等,并详细讲解它们的优缺点、适用场景以及如何进行权衡。毕竟,理论知识如果不能落地,就失去了价值。我希望作者能像一位经验丰富的导师一样,循循善诱,用生动的案例和深入浅出的语言,将那些看似抽象的概念变得具体可感。同时,我也希望书中能触及一些“软技能”的重要性,比如如何与团队沟通、如何理解业务需求、如何进行技术选型时的权衡取舍等等,因为我知道,一个成功的架构师不仅仅是技术上的专家,更是团队的粘合剂和业务的理解者。
我当初之所以选择这本书,很大程度上是因为它承诺要讲“97件事”,这个数字本身就显得非常有分量,仿佛涵盖了软件架构领域内一个相当广泛的知识谱系。我曾接触过一些关于软件架构的书籍,它们要么过于侧重某一方面,比如只讲微服务,要么就过于理论化,脱离实际。而这本书的标题,让我觉得它可能更加全面,能够提供一个更宏观的视角。我希望这本书能深入浅出地讲解一些在架构设计中至关重要的“非功能性需求”,比如安全性、可靠性、可维护性、可测试性等等。这些需求虽然不像功能需求那样直接,但却往往是决定一个系统能否长期健康运行的关键。我特别关注书中对于“安全性”的讨论,例如如何进行身份认证和授权、如何抵御常见的网络攻击、如何在数据传输和存储过程中保证数据的安全等等,这些都是我工作中一直比较头疼的问题。此外,我也会很期待书中能分享一些关于“技术债务”的思考,以及如何通过良好的架构设计来管理和减少技术债务,避免它像雪球一样越滚越大,最终拖垮整个项目。
这本书的装帧质感不错,拿在手里沉甸甸的,有种“干货满满”的预感。我一直认为,软件架构师不仅仅是代码的编写者,更是系统的“建筑师”,他们需要从更高的维度去审视和规划整个软件生命周期。我迫切希望这本书能为我提供一些关于“架构演进”的思路。随着业务的发展和技术进步,任何一个系统都不可避免地需要进行迭代和演进。我希望能学习到如何识别系统中的“痛点”,如何在不中断现有服务的情况下进行架构升级,以及如何在新技术出现时,将其有效地融入到现有架构中。书中对“持续集成/持续部署”(CI/CD)相关的架构支撑的讨论,也会是我非常关注的部分。我理解,一个好的架构应该能够赋能团队更快速、更可靠地交付价值,而CI/CD正是实现这一目标的关键。我希望书中能提供一些关于如何设计支持高效CI/CD流程的架构的建议,比如如何进行模块化设计,如何实现自动化测试,如何进行蓝绿部署或金丝雀发布等。总而言之,我期待这本书能够给我带来一种“拨云见日”的感受,让我能够更自信、更专业地面对软件架构的挑战。
有趣的tips不多
博文视点策划编辑首次担纲翻译的一本书,等着读者打分。
东西太零散,不成体系
吉光片羽啊,大家高手的点滴,只能远观。
东西太零散,不成体系