架构设计数据密集型应用程序:可靠,可扩展和可维护系统背后的复杂性
发表时间:2023-10-27 18:05:09
文章来源:炫佑科技
浏览次数:156
菏泽炫佑科技
架构设计数据密集型应用程序:可靠,可扩展和可维护系统背后的复杂性
**手的实践经验很强大,但一个人的时间是有限的。
因此,书籍让我有机会学习其他从业者通过数千小时的工作建立起来的掌握技巧。 即使通过阅读只能吸收10%的知识,也已经很划算了。
当我发现自己在某些职业关系中从受训者转变为导师角色时,我需要分享越来越多的关于我的成长经历。
建筑学
设计数据密集型应用程序:可靠、可扩展和可维护系统背后的大理念
#f:c:8:c:1:8:9:5:d:d:6:e:6:3:2:2:3:9:5:8:b:d:2:5:5:b:1:7:0:d:4:a#
它涉及丰富的基础知识,并设法纳入**原理方法,重点关注决策对现实世界中大规模分布式系统背后的工程选择的影响。
我经常推荐它作为现实世界分布式系统的入门读本。
设计
领域驱动设计:解决软件核心的复杂性,作者:Eric Evans
#0:5:2:4:b:d:a:1:b:9:a:9:5:6:5:c:c:6:4:1:7:b:5:3:1:2:5:c:9:b:1:7#
关于DDD的书,也被称为“Big Blue Book”。 它很长,但涵盖了无穷无尽的材料:如果您想编写企业软件,那么这是必读的内容。
在编写企业软件时,将复杂业务领域的规则和思维模型转化为软件确实是挑战的核心。 随着您处理的领域的复杂性和您工作的组织数量的增加,埃文斯介绍的技术和术语将使您受益匪浅。
其他人向我推荐了 的领域驱动设计细化,但我自己还没有读过。
第二个是:
域建模的功能域驱动实现 Scott
#8:c:1:e:f:5:5:2:d:3:2:2:7:8:e:5:8:e:9:6:0:1:b:c:0:4:8:9:1:4:d:5#
我是因为他的一次谈话而发现这本书的——我喜欢这次谈话,也喜欢这本书。 它本身就是对 DDD 和更广泛的类型驱动开发主题的精彩介绍。
简而言之,我们可以利用类型系统来表达对域的约束,从而使不正确的状态难以或不可能表示。
本书在函数式编程的背景下提出了这个想法,但它甚至适用于非严格函数式的编程语言,只要它们具有丰富的类型系统(例如 Rust)。
测试
测试驱动开发 Kent Baker
#7:2:7:7:f:6:c:3:a:e:9:9:3:2:d:4:8:9:9:d:e:8:d:9:c:8:6:a:b:7:4:0#
在我们的测试驱动开发社区中,这一点普遍受到赞赏。 尽管如此,由于种种原因,我还没有遇到多少真正使用这本书的实践者。
作者本人:Kent Beck是XP(X treme P)的创建者,TDD的领军人物之一,也是敏捷宣言的权威之一。
这本书只不过是与他进行一次长时间的结对编程会议,因为他通过 TDD 解决问题(即编写一个测试框架 - 这里有一个元元素),以他的方式编写代码。
第二本书:修改代码的艺术:
#4:1:4:5:d:1:b:e:7:a:1:c:2:c:b:e:e:f:0:9:8:f:4:2:6:0:6:3:8:1:9:4#
自动化测试并未涵盖其所有行为,包括遗留代码。 大多数工程师将花费大部分职业生涯来维护这些旧代码(包括他们六或十二个月前编写的代码)。 我在短期软件职业生涯中花了很大一部分时间在这上面。
第三本书:xUnit Test : Test Code,作者
#f:a:b:c:b:6:3:8:8:6:4:7:2:9:e:1:7:e:f:3:4:8:3:5:8:1:c:1:d:3:c:6#
汇集了一系列有用的技术来驯服野兽 - 使用测试来记录现有行为,以便能够改进系统本身以满足新的要求。
事实是,我们的测试已经开始减慢我们的速度——随着代码库的增长,编写和维护它们变得越来越麻烦。 结果自动化软件开发,我们编写的不被识别的测试越来越少。 如果我们坚持不改变方向,我们很可能会加入那些将测试视为障碍而不是资产的人的行列。 相反,我找到了这本书,并且对测试套件进行了重大重构,使我们回到了以前的开发速度架构设计数据密集型应用程序:可靠,可扩展和可维护系统背后的复杂性,而完全不影响我们的测试实践。
史诗
特蕾西·基德的新机器之魂
#4:c:d:5:1:d:e:3:1:4:0:d:6:9:c:0:3:6:1:a:a:a:0:c:b:a:f:b:8:c:0:a#
软件开发生命周期
Jez 和 David 的持续交付:通过构建、测试和部署自动化发布可靠的软件
#e:6:1:c:3:b:0:e:0:e:6:2:c:2:0:f:a:9:a:6:d:6:4:6:2:9:6:b:c:d:1:c#
这本书已有 10 年历史,但它经受住了时间的考验:技术可能已经发生了变化,但这里强调的原则和挑战在为当代系统设计(和自动化)发布管道时仍然具有相关性。
、Jez 和 Gene Kim 加速:精益软件科学和
它不一定会在软件交付中引入一套革命性的方法,但它提供了可靠的数据点和可靠的研究,证明其中一些方法(精益等)确实对组织的业务绩效具有可衡量的影响。 这四个关键指标对于衡量工程团队的健康状况非常有用。
HN讨论: