用于构建可读、健壮且可扩展的应用程序的分层架构

如果添加一个功能感觉就像在代码库上进行心脏直视手术,那么问题不是错误,而是结构。本文展示了更好的架构如何降低风险、加速变革并保持团队前进。用于构建可读、健壮和可扩展应用程序的分层架构后文章首先出现在《走向数据科学》上。

来源:走向数据科学

:您的代码可以工作,但可信度较低,因此您犹豫是否要触摸它。添加功能意味着对应用程序进行心脏直视手术,修改现有业务逻辑而不是扩展系统。随着时间的推移,变革的成本不断上升。

这感觉熟悉吗?

  • 更改感觉有风险,因为您担心修改代码可能会引发意外的副作用。
  • 您花费大量时间滚动浏览大文件、查找或理解代码。
  • 您拥有“执行所有操作”并具有 10 多个参数的函数。
  • 测试被跳过或需要启动数据库、手动准备记录并随后进行清理。
  • 构建 SQL 查询的 FastAPI 路由。
  • 该应用程序可能仍在提供价值,但感觉很脆弱。结构不清晰,职责模糊,微小的改变让人感觉成本过高。

    如果这引起了共鸣,那么这篇文章适合您。

    TL;DR

  • 如果添加功能感觉有风险或缓慢,那么问题通常是结构,而不是代码质量
  • 分层架构分离职责并使业务逻辑独立于框架和基础设施
  • 按域进行垂直切片可防止层随着系统的增长而变成垃圾场
  • 应用层编排工作流程;领域层定义含义和约束
  • 清晰的边界可减少认知负荷,提高可测试性,并随着时间的推移降低更改成本
  • 好的结构不会增加仪式感。它保留了动力。

    本文的目标

    争论一段代码是否属于一层或另一层没有抓住要点。目标不是完美的分类,而是......

    使用松散耦合的责任层原则构建应用程序,使系统更易于理解、测试和发展。

    我们的目标应用程序是:

  • 可读:易于导航和推理,认知负荷低
  • 稳健:故障是可控的、可预测的、可理解的
  • 免责声明:

    这不是构建应用程序的最佳或唯一方法,也不是万能的解决方案。