@0xlelouch_: 我依然会推荐给在职开发者的十大系统设计资源:1) 《设计数据密集型应用》(Kleppmann)——重新…

X AI KOLs Timeline 新闻

摘要

一条推特线程,列出了十大系统设计资源,包括书籍、博客和框架,并附有Martin Fowler网站的链接以供进一步阅读。

我依然会推荐给在职开发者的十大系统设计资源: 1) 《设计数据密集型应用》(Kleppmann)——真实的权衡:日志 vs 数据库、一致性、流处理。 2) 《软件架构:困难部分》(Ford/Richards)——如何选择,而非仅仅模式;关于模块化与耦合性讲得很好。 3) 《站点可靠性工程》(Google)——SLIs/SLOs、错误预算、事件响应、容量规划。 4) 《系统设计面试》(Alex Xu)——快速练习;适合在时间压力下草绘API、存储、缓存、分片。 5) 《设计分布式系统》(Brendan Burns)——将Kubernetes模式解释为通用的分布式系统构建块。 6) AWS Well-Architected Framework —— 关于可靠性、安全性、成本的具体检查清单;即使你运行本地环境也很有用。 7) Martin Fowler的架构文章(http://martinfowler.com)——限界上下文、演进式架构、集成模式。 8) High Scalability博客(http://highscalability.com)——拆解分析文章;了解团队为何在生产中选择队列、缓存和数据库。 9) Jepsen分析(http://jepsen.io)——教你只有在凌晨3点才会发现的故障模式:脑裂、脏读、错误重试。 10) 实践项目:构建一个小型SaaS并运行它——REST+数据库,添加Redis缓存、后台作业、指标/追踪、负载测试,然后通过混沌/故障注入来破坏它。
查看原文
查看缓存全文

缓存时间: 2026/06/28 10:05

我现在仍然会推荐给一线开发人员的十大系统设计资源:

  1. 《数据密集型应用系统设计》(Kleppmann) —— 真实的权衡:日志与数据库、一致性、流处理。
  2. 《软件架构:困难部分》(Ford/Richards) —— 关注如何做出选择,而非仅仅是模式;关于模块化和耦合性讲解得很好。
  3. 《站点可靠性工程》(Google) —— SLI/SLO、错误预算、事件响应、容量规划。
  4. 《系统设计面试》(Alex Xu) —— 快速练习;适合在时间压力下设计 API、存储、缓存、分片。
  5. 《设计分布式系统》(Brendan Burns) —— 将 Kubernetes 模式作为通用的分布式系统构建块进行讲解。
  6. AWS Well-Architected 框架 —— 关于可靠性、安全性、成本的实用检查清单;即使你在本地运行也很有用。
  7. Martin Fowler 的架构文章 (http://martinfowler.com) —— 限界上下文、演进式架构、集成模式。
  8. High Scalability 博客 (http://highscalability.com) —— 拆解分析文章;了解团队在生产中为何选择队列、缓存和数据库。
  9. Jepsen 分析 (http://jepsen.io) —— 教你只有在凌晨三点才会遇到的故障模式:脑裂、过期读取、错误的重试。
  10. 实践项目:构建并运行一个小型 SaaS —— REST+数据库,添加 Redis 缓存、后台任务、指标/追踪、负载测试,然后通过混沌/故障注入破坏它

martinfowler.com

来源:https://martinfowler.com/ 软件开发是一个年轻的行业,我们仍在学习有效开发的技术并构建相应的工具。三十多年来,我参与了这项活动,并在过去的二十年里,在这个网站上撰写了关于模式和最佳实践的文章,这些文章使得构建有用的软件更加容易。该网站最初只是发布我个人写作的地方,但后来我也用它来发表我同事的文章。

2000年,我加入了 Thoughtworks (https://thoughtworks.com/),我的职责是学习我们为客户交付软件所积累的技术,并将这些技术传递给更广泛的软件行业。随着这个网站发展成为软件开发领域一个受人尊敬的平台,我编辑并发表了我同事(包括Thoughtworks员工和其他人)的文章,以帮助有用的写作触及更广泛的受众。

马丁·福勒照片

摄影:Christopher Ferguson

马丁·福勒

一个关于有效构建软件的网站

如果说我的工作以及本网站上的写作有一个贯穿始终的主题,那就是敏捷思维的转变与使敏捷软件开发成为可能的技术模式和实践之间的相互作用。虽然我们行业的技术细节变化迅速,但基础实践和模式则更为稳定。因此,撰写这些内容让我能够在这个网站上保留一些几年前的旧文章,但它们至今仍与当初撰写时一样具有现实意义。

随着软件对现代商业变得日益关键,软件需要能够快速响应变化,允许新功能被构思、开发并快速投入生产。敏捷软件开发 (https://martinfowler.com/agile.html) 技术始于20世纪90年代,并在过去十年中变得越来越流行。它们侧重于灵活的规划方法,允许软件产品随着用户需求的变化以及产品经理在如何让用户更高效方面学到的更多知识而调整方向。虽然现在已被广泛接受,但敏捷方法并不容易,它需要团队具备显著的技能,更重要的是,需要团队内部以及与合作伙伴之间形成开放协作的文化。

这种对变化做出流畅响应的需求对软件系统的架构 (https://martinfowler.com/architecture) 产生了重要影响。软件需要以能够适应功能上意外变更的方式来构建。做到这一点最重要的方法之一就是编写清晰的代码,使其易于理解程序的预期功能。这段代码应该被划分为模块,允许开发者只需了解他们进行更改所需的系统部分。这个生产代码应该有自动化测试的支持,这些测试能够在进行更改时检测任何错误,同时提供内部结构如何使用示例。大规模和复杂的软件项目可能会发现微服务 (https://martinfowler.com/microservices) 架构风格有助于团队部署软件,同时减少纠缠不清的依赖关系。

创建具有良好架构的软件并不是一次就能完成的事情。就像优秀的散文一样,它需要定期的修订,因为程序员会对产品需要做什么以及如何最好地设计产品来实现其目标了解得更多。重构 (https://refactoring.com/) 是一种基本技术,允许安全地更改程序。它包括进行不改变软件可观察行为的小修改。通过组合许多小的更改,开发者可以修订软件的结构,支持在系统最初构想时未计划的重要修改。

仅运行在开发者机器上的软件并不能为客户提供价值。传统上,发布软件是一个漫长而复杂的过程,这阻碍了快速演进软件的需求。持续交付 (https://martinfowler.com/delivery.html) 利用自动化和协作工作流程来消除这一瓶颈,允许团队按照客户要求的频率发布软件。为了实现持续交付,我们需要建立一个坚实的测试 (https://martinfowler.com/testing) 基础,包括一系列自动化测试,这些测试能够让我们确信所做的更改没有引入任何错误。这促使我们将测试集成到编程中,从而可以改进我们的架构。

照片流

旧金山

数据管理

软件种类繁多,我主要从事的是企业应用。在这个领域,我们需要应对的一个长期问题是数据管理 (https://martinfowler.com/data)。我在此关注的数据管理方面包括:如何在应用程序响应不断变化的需求时迁移数据存储、如何应对大型企业中的不同上下文、NoSQL 数据库的角色,以及处理既庞大又混乱的数据的更广泛问题。

领域特定语言

复杂软件系统中的一个常见问题是如何捕获复杂的领域逻辑,以便程序员可以轻松操作,同时也能轻松地与领域专家沟通。领域特定语言 (https://martinfowler.com/dsl.html) (DSLs) 为特定问题创建自定义语言,通过自定义解析器或在宿主语言中通过约定来实现。

书籍

我撰写了七本关于软件开发的书籍,包括《重构:改善既有代码的设计》、《企业应用架构模式》和《UML 精粹》。我也是 Addison-Wesley 一个签名系列丛书的编辑,该系列包括五个 Jolt 大奖得主。

我的书籍页面… (https://martinfowler.com/books)

会议演讲

我经常被邀请在会议上发表演讲,由此推断我应该是个相当不错的演讲者——这颇具讽刺意味,因为我真的很讨厌演讲。您可以通过观看我部分会议演讲的视频来形成自己的看法。

我的视频页面… (https://martinfowler.com/videos.html)

桌游

我长期以来一直是桌游的爱好者,我喜欢那种能完全占据我的思绪、暂时清除所有严肃想法、同时享受好朋友陪伴的游戏。现代桌游随着20世纪90年代欧洲棋盘游戏的兴起而得到了戏剧性的改进,我相信如果人们没有尝试过这种新世代游戏,他们会感到惊讶。我也定期出现在 Heavy Cardboard (https://martinfowler.com/bliki/HeavyCardboard.html) 上。

我的桌游页面… (https://martinfowler.com/articles/eurogames/)

标签

API design (https://martinfowler.com/tags/API%20design.html) · agile (https://martinfowler.com/tags/agile.html) · agile adoption (https://martinfowler.com/tags/agile%20adoption.html) · analysis patterns (https://martinfowler.com/tags/analysis%20patterns.html) · application architecture (https://martinfowler.com/tags/application%20architecture.html) · application integration (https://martinfowler.com/tags/application%20integration.html) · bad things (https://martinfowler.com/tags/bad%20things.html) · board games (https://martinfowler.com/tags/board%20games.html) · build scripting (https://martinfowler.com/tags/build%20scripting.html) · certification (https://martinfowler.com/tags/certification.html) · collaboration (https://martinfowler.com/tags/collaboration.html) · computer history (https://martinfowler.com/tags/computer%20history.html) · conference panels (https://martinfowler.com/tags/conference%20panels.html) · conferences (https://martinfowler.com/tags/conferences.html) · continuous delivery (https://martinfowler.com/tags/continuous%20delivery.html) · covid-19 (https://martinfowler.com/tags/covid-19.html) · data analytics (https://martinfowler.com/tags/data%20analytics.html) · data mesh (https://martinfowler.com/tags/data%20mesh.html) · database (https://martinfowler.com/tags/database.html) · design (https://martinfowler.com/tags/design.html) · dictionary (https://martinfowler.com/tags/dictionary.html) · distributed computing magazine (https://martinfowler.com/tags/distributed%20computing%20magazine.html) · diversions (https://martinfowler.com/tags/diversions.html) · diversity (https://martinfowler.com/tags/diversity.html) · documentation (https://martinfowler.com/tags/documentation.html) · domain driven design (https://martinfowler.com/tags/domain%20driven%20design.html) · domain specific language (https://martinfowler.com/tags/domain%20specific%20language.html) · domestic (https://martinfowler.com/tags/domestic.html) · encapsulation (https://martinfowler.com/tags/encapsulation.html) · enterprise architecture (https://martinfowler.com/tags/enterprise%20architecture.html) · estimation (https://martinfowler.com/tags/estimation.html) · event architectures (https://martinfowler.com/tags/event%20architectures.html) · evolutionary design (https://martinfowler.com/tags/evolutionary%20design.html) · experience reports (https://martinfowler.com/tags/experience%20reports.html) · expositional architectures (https://martinfowler.com/tags/expositional%20architectures.html) · extreme programming (https://martinfowler.com/tags/extreme%20programming.html) · front-end (https://martinfowler.com/tags/front-end.html) · gadgets (https://martinfowler.com/tags/gadgets.html) · generative AI (https://martinfowler.com/tags/generative%20AI.html) · ieeeSoftware (https://martinfowler.com/tags/ieeeSoftware.html) · infodecks (https://martinfowler.com/tags/infodecks.html) · internet culture (https://martinfowler.com/tags/internet%20culture.html) · interviews (https://martinfowler.com/tags/interviews.html) · language feature (https://martinfowler.com/tags/language%20feature.html) · language workbench (https://martinfowler.com/tags/language%20workbench.html) · lean (https://martinfowler.com/tags/lean.html) · legacy modernization (https://martinfowler.com/tags/legacy%20modernization.html) · legal (https://martinfowler.com/tags/legal.html) · metrics (https://martinfowler.com/tags/metrics.html) · microservices (https://martinfowler.com/tags/microservices.html) · mobile (https://martinfowler.com/tags/mobile.html) · noSQL (https://martinfowler.com/tags/noSQL.html) · object collaboration design (https://martinfowler.com/tags/object%20collaboration%20design.html) · parser generators (https://martinfowler.com/tags/parser%20generators.html) · photography (https://martinfowler.com/tags/photography.html) · platforms (https://martinfowler.com/tags/platforms.html) · podcast (https://martinfowler.com/tags/podcast.html) · presentation technique (https://martinfowler.com/tags/presentation%20technique.html) · privacy (https://martinfowler.com/tags/privacy.html) · process theory (https://martinfowler.com/tags/process%20theory.html) · productivity (https://martinfowler.com/tags/productivity.html) · programming environments (https://martinfowler.com/tags/programming%20environments.html) · programming style (https://martinfowler.com/tags/programming%20style.html) · project planning (https://martinfowler.com/tags/project%20planning.html) · recruiting (https://martinfowler.com/tags/recruiting.html) · refactoring (https://martinfowler.com/tags/refactoring.html) · refactoring boundary (https://martinfowler.com/tags/refactoring%20boundary.html) · requirements analysis (https://martinfowler.com/tags/requirements%20analysis.html) · ruby (https://martinfowler.com/tags/ruby.html) · security (https://martinfowler.com/tags/security.html) · talk videos (https://martinfowler.com/tags/talk%20videos.html) · team environment (https://martinfowler.com/tags/team%20environment.html) · team organization (https://martinfowler.com/tags/team%20organization.html) · technical debt (https://martinfowler.com/tags/technical%20debt.html) · technical leadership (https://martinfowler.com/tags/technical%20leadership.html) · test categories (https://martinfowler.com/tags/test%20categories.html) · testing (https://martinfowler.com/tags/testing.html) · thoughtworks (https://martinfowler.com/tags/thoughtworks.html) · tools (https://martinfowler.com/tags/tools.html) · travel (https://martinfowler.com/tags/travel.html) · uml (https://martinfowler.com/tags/uml.html) · version control (https://martinfowler.com/tags/version%20control.html) · web development (https://martinfowler.com/tags/web%20development.html) · web services (https://martinfowler.com/tags/web%20services.html) · website (https://martinfowler.com/tags/website.html) · writing (https://martinfowler.com/tags/writing.html)

2026 (https://martinfowler.com/tags/2026.html) · 2025 (https://martinfowler.com/tags/2025.html) · 2024 (https://martinfowler.com/tags/2024.html) · 2023 (https://martinfowler.com/tags/2023.html) · 2022 (https://martinfowler.com/tags/2022.html) · 2021 (https://martinfowler.com/tags/2021.html) · 2020 (https://martinfowler.com/tags/2020.html) · 2019 (https://martinfowler.com/tags/2019.html) · 2018 (https://martinfowler.com/tags/2018.html) · 2017 (https://martinfowler.com/tags/2017.html) · 2016 (https://martinfowler.com/tags/2016.html) · 2015 (https://martinfowler.com/tags/2015.html) · 2014 (https://martinfowler.com/tags/2014.html) · 2013 (https://martinfowler.com/tags/2013.html) · 2012 (https://martinfowler.com/tags/2012.html) · 2011 (https://martinfowler.com/tags/2011.html) · 2010 (https://martinfowler.com/tags/2010.html) · 2009 (https://martinfowler.com/tags/2009.html) · 2008 (https://martinfowler.com/tags/2008.html) · 2007 (https://martinfowler.com/tags/2007.html) · 2006 (https://martinfowler.com/tags/2006.html) · 2005 (https://martinfowler.com/tags/2005.html) · 2004 (https://martinfowler.com/tags/2004.html) · 2003 (https://martinfowler.com/tags/2003.html) · 2002 (https://martinfowler.com/tags/2002.html) · 2001 (https://martinfowler.com/tags/2001.html) · 2000 (https://martinfowler.com/tags/2000.html) · 1999 (https://martinfowler.com/tags/1999.html) · 1998 (https://martinfowler.com/tags/1998.html) · 1997 (https://martinfowler.com/tags/1997.html) · 1996 (https://martinfowler.com/tags/1996.html)

所有内容 (https://martinfowler.com/tags/index.html)

近期更新 (https://martinfowler.com/recent-changes.html)

如果您希望在我发布新内容时得到通知,请订阅我的 RSS 源 (https://martinfowler.com/feed.atom)。我也会在 Fediverse (Mastodon) (https://toot.thoughtworks.com/@mfowler)、Bluesky (https://bsky.app/profile/martinfowler.com)、LinkedIn (https://www.linkedin.com/in/martin-fowler-com/),以及 X (Twitter) (https://twitter.com/martinfowler) 上发布新内容的公告。我还有一个专门介绍近期更新的页面 (https://martinfowler.com/recent-changes.html)。

相似文章