软件开发中的决策:权衡与取舍
作者简介
托马斯·莱莱克(Tomasz Lelek) 托马斯在他的软件开发职业生涯里,设计并开发过各种各样的生产服务、软件架构,他精通多种编程语言(大多数是基于 JVM 的)。他既实现过单体系统,也曾做过与微服务架构相关的工作。他设计的有些系统可服务数千万用户,每秒处理数十万的操作量。他的工作方向如下: ? 设计采用 CQRS 架构的微服务(基于 Apache Kafka); ? 市场自动化及事件流处理; ? 基于 Apache Spark 和 Scala 的大数据处理。 托马斯现在就职于 Dremio,负责创建现代大数据处理的数据湖解决方案。在此之前,他在DataStax 负责与 Cassandra 数据库相关的一些产品。他设计的工具帮助成千上万的开发者设计出性能优异、用户友好的 API,发挥了重要的作用。他为 Java-Driver、Cassandra Quarkus、Cassandra-Kafka Connector 以及 Stargate 都贡献过代码。 乔恩·斯基特(Jon Skeet) 乔恩是谷歌公司的资深开发工程师,目前的工作方向是谷歌云的.NET 客户端库。他向开源社区贡献了.NET 版本的 Noda 时间库,然而他最让人称道的是他在 Stack Overflow 开发者社区的贡献。乔恩是 Manning 出版社出版的 C# in Depth 一书的作者,此外,他还对 Groovy in Action 以及 Real-World Functional Programming 两书有所贡献。乔恩对日期时间 API 以及 API版本非常感兴趣,这些通常是无人问津的冷门话题。
内容简介
深刻剖析软件设计决策中的权衡与取舍,涵盖单体系统、微服务、大数据处理等多领域。 通过真实案例与代码片段,展示软件设计模式的实际应用与错误决策的教训。 深入分析软件设计中的潜在问题与局限,提前预防未来可能出现的陷阱。 通过预识别设计问题,减少后期修改与重构的成本。 阐释如何平衡灵活性与复杂性、性能与优化等关键设计要素。 提供一套系统化的方法,帮助软件工程师在有限资源下做出更明智的决策。 通过增进对软件设计取舍的理解,提升代码质量与项目成功率。