架构划分原则
技术划分
- 描述: 按技术用途组织系统组件
- 典型示例: 分层(多层)架构
- 组件按技术层组织
- 用户界面: 与用户直接交互的部分
- 业务规则和核心处理: 逻辑和算法
- 与数据库交互: 数据存取和查询
- 数据库层: 数据存储和管理
- 组件按技术层组织
- 优点:
- 当大部分更改与技术层次对齐时适用
- 缺点:
- 域更改可能涉及多个层
- 示例:
- 分层架构: 多层次的技术组织
- 微内核架构: 核心与插件分离
- 管道架构: 数据流驱动
- 事件驱动架构: 响应事件变化
- 基于空间的架构: 数据在空间中分布
领域划分
- 描述: 按域区域组织组件
- 优点:
- 更改集中于特定系统区域
- 维护、测试和部署风险较低
- 域驱动设计:
- 强调域的设计
- 与域专家紧密合作
- 开发与域功能相似的软件
- 示例:
- 微内核架构: 核心与插件分离
- 微服务架构: 小型、独立的服务
- 模块化单体架构: 单体应用内的模块化
- 基于服务的架构: 服务为中心
如何选择?
- 技术划分适用性:
- 团队结构与技术用途区域对齐
- 预期的大部分更改与技术层次对齐
- 域划分适用性:
- 使用域驱动设计方法
- 团队为跨功能团队
- 预期的大部分更改为域范围
- 注意事项:
- 技术层次的大量更改可能在域划分中更困难