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