1. In Defense of Simple Architectures (2022) (danluu.com)
捍卫简单架构(2022)
本文以Wave公司(一家估值17亿美元、拥有70名工程师的公司)为例,阐述了简单架构在支撑大规模业务时的有效性与优势。Wave的产品核心是实现数字增减的CRUD应用,其技术栈采用基于Python的单体架构与Postgres数据库。作者指出,尽管业界普遍推崇复杂架构(如微服务),但简单架构足以应对大多数应用的高流量需求,且能以更低成本、更快速度实现价值交付。
核心论点与案例
- 简单架构的有效性:Wave通过单体架构支持了每月数十亿次请求,同时保持了开发的简洁性。类似地,StackOverflow也凭借单体架构成长为全球高流量网站之一,最终以18亿美元被收购。
- 行业趋势的反思:技术会议普遍聚焦复杂架构,鲜少讨论单体架构的构建,导致许多企业盲目采用不必要的复杂技术。作者认为,对于大多数应用,即使达到顶级流量规模,简单架构仍是更优选择。
Wave的实践策略
- 保持技术栈简单:使用同步Python,虽牺牲部分效率,但避免了异步框架(如Eventlet)引入的复杂性与运维难题。长时任务通过队列处理,而非整体异步化。
- 平衡自建与购买:早期优先购买现成解决方案,后期在供应商无法满足关键需求时,才转向自建工具,尽管这违背了“仅核心业务自研”的常规建议。
- 应对不可避免的复杂性:如在乌干达等地部署本地数据中心以满足数据驻留法规,单体架构使此操作比微服务架构更简单。电信集成因覆盖与成本问题,也需自建解决方案。
反思与权衡
- 早期技术决策的代价:如数据库事务边界不清晰导致数据一致性风险,使用RabbitMQ、Celery、SQLAlchemy等工具虽非重大错误,但在新项目中可能重新评估。
- 满意的技术选型:选择GraphQL(提升API自文档化与客户端安全性)、HTTP/3(替代自定义协议)和Kubernetes(为未来多国部署预留灵活性),这些权衡被认为利大于弊。
总结
Wave的成功表明,简单架构允许企业将有限的复杂性预算和团队资源集中在真正的业务挑战上,而非架构本身。作者倡导,在缺乏强有力理由的情况下,应优先选择最简单的可行方案。这种理念帮助Wave以相对精简的工程师团队,在竞争激烈的非洲金融领域实现了业务增长。