← [ BACK_TO_NOTES ]

Backend Architecture MOC

后端架构学习入口,从模块边界与依赖方向开始,进入 Layered Architecture、DDD/Bounded Context、BFF/API Gateway、模块化单体、微服务、EDA、CQRS 与 Event Sourcing。

#moc #growing #backend #architecture

[!info] related notes

Backend Architecture MOC

知识总览

filters:
  and:
    - 'file.ext == "md"'
    - 'file.inFolder("z")'
    - 'this.file.links.contains(file)'
    - 'file.path != this.file.path'
formulas:
  knowledge: 'file.asLink(title)'
properties:
  formula.knowledge:
    displayName: 知识
  note.description:
    displayName: Description
  note.mastery:
    displayName: Mastery
views:
  - type: table
    name: 知识总览
    order:
      - formula.knowledge
      - note.description
      - note.mastery
    columnSize:
      formula.knowledge: 280
      note.description: 760
      note.mastery: 56

[!abstract] 核心认识 架构不是套模板,而是根据变化率、业务事实、团队边界、故障域和部署需求,决定模块怎样分割、依赖朝哪里、数据由谁拥有。先把单体内部边界做清楚,再判断是否值得提升为分布式部署边界。

推荐学习顺序

  1. 分层架构:Presentation、Application、Domain、Infrastructure 的职责。
  2. 依赖反转与 Port / Adapter:业务规则不直接依赖外部框架细节。
  3. DDD Architecture、Bounded Context:按业务语言和事实所有权划边界。
  4. Backend For Frontend 与 API Gateway:客户端适配和统一流量治理。
  5. 模块化单体:在一个部署单元内保持模块、数据和依赖边界。
  6. 微服务:只有独立部署、扩缩、故障隔离或团队自治收益明确时再拆。
  7. 事件驱动架构:用事件降低时间耦合,同时承担最终一致性。
  8. CQRS 与 Event Sourcing:在读写模型或审计/重放需求成立时使用。

架构决策顺序

业务能力与不变量是什么?
→ 谁拥有事实和写权限?
→ 哪些变化需要隔离?
→ 哪些依赖应通过接口反转?
→ 单体模块是否已经足够?
→ 是否真的需要独立部署和分布式通信?
→ 失败、数据一致性和观测成本能否承担?

常见模式的职责

模式主要价值典型误用
Layered Architecture分离输入、用例、领域与基础设施只有目录,没有依赖约束
DDD / Bounded Context保护业务语言和事实边界每个 CRUD 都建复杂聚合
Modular Monolith低运维成本下保持模块自治所有模块仍直接访问彼此表
BFF针对客户端聚合与适配把所有业务逻辑堆进 BFF
API Gateway统一路由、认证、限流与治理取代业务授权和领域规则
Microservices独立部署、扩缩与故障隔离小团队过早拆分
EDA时间解耦、异步扩展没有 schema、幂等和观测
CQRS读写模型可独立优化简单 CRUD 也强行双模型

数据所有权

架构边界最容易被数据库绕过。即使代码模块分开,只要所有模块随意写同一张表,边界仍然不存在。

Module owns write model
→ exposes command / query / event contract
→ other modules do not bypass invariants

与 Agent 系统的关系

  • Backend 持有身份、权限、业务事实与最终副作用。
  • Agent Runtime 持有 Run、State、Checkpoint 与工具循环。
  • Model 在受控节点提供语义决策,不拥有最终授权。

详见 Backend 与 Agent 的边界与协作。

掌握标准

  • 能用变化率和事实所有权解释模块边界。
  • 能说明依赖方向,而不只展示目录结构。
  • 能解释为什么当前项目暂不拆微服务。
  • 能说明同步 API 与异步事件各自的失败语义。
  • 能为跨模块/跨服务数据更新设计事务或最终一致方案。
创建于 2026/9/4 更新于 2026/9/4
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本