- 单体应用问题
- 复杂: 模块多, 边界模糊, 依赖关系不清晰, 代码质量不统一
- 技术债务: 不坏不修
- 部署频率低: 迭代要部署整个应用,部署时间长,风险高。修复问题慢, 易出错
- 可靠性差: 某bug导致整个应用崩溃
- 扩展性差
- 阻碍技术更新
- 特征
- 服务组件化
- 按业务组织团队
- 负责的态度, 不再是交付给维护者
- 粗粒度通信, http(二进制协议)或消息总线
- 去中心化治理
- 去中心化管理数据
- 基础设施自动化
- 容错设计
- 演进式设计
- 原则
- 单一职责
- 自洽
- 轻量级通信
- 服务粒度: 边界(DDD中的界限上下文)
- 持续发布
- 工具链,自动化
- 契约
- 架构守护
- 灰度替换
- aaS