Sheet 1
微服务架构与实践
  开发实践
    开发模板
      JAVA栈
        SpringBoot
        SpringCloud
        DropWizard
      自研模板
        代码结构
        测试结构
        配置文件模板
          WEB服务器配置
          日志格式
          监控文件配置
          告警文件配置
        部署脚本模板
          Shell
          Chef
          Puppet
          Ansible
        持续集成模板
          Jenkins
          Bamboo
    服务说明文件
      服务描述
      责任人
      请求/响应描述
      开发环境搭建
      运行环境
      测试策略
      部署方式
      监控告警
    服务结构
      模型表示层
      业务模型
      业务逻辑
      模型存储
      集成网关
  测试实践
    单元测试
      基于Mock/Stub
      基于真实依赖
    集成测试
      服务间集成
      数据库集成
      与第三方接口集成
    组件测试
      进程内
      进程外
    契约测试
      PACT
      PACTO
    E2E测试
      Selenium
      WebDriver
    性能测试
      Gatling
  部署实践
    部署环境
      数据中心/VM
      公有云/私有云
      容器化
    应用部署
      包部署(Tar、RPM、War)
      映像部署(AMI)
      容器部署(Docker)
    基础设施部署工具
      Chef
      Puppet
      Ansible
      CloudFormation
    部署策略
      蓝绿部署
      金丝雀发布
    自动化策略
      依赖持续部署流水线
      基础设施自动化
      应用部署自动化
    伸缩策略
      Scaling Cube
        X轴水平克隆
        Y轴功能性按需伸缩
        Z轴数据分离
  运维实践
    监控
      系统监控
        CPU
        内存
        磁盘
      应用监控
        健康性
        响应时间
        关联ID(Correlation ID)
        业务相关
      工具
        SAAS
          NewRelic
          OneAPM
        Hosted
          Nagios
          Zabbix
    告警
      告警方式
        电话
        短信
        邮件
        即时通信工具
      告警级别
        OnCall
        Backup
        Owner
        Leader
      工具
        Splunk
        Nagois
        PagerDuty
    日志聚合
      聚合每个服务实例的日志
      关联相关日志
      工具
        Splunk
        ELK(ElasticSearch/LogStash/Kabana)
  通信机制
    同步通信
      RPC/RMI
        Thrift
        Protocol Buffer
      REST
        HAL
    异步通信
      消息队列
        ActiveMQ
        MSMQ
        RabbitMQ
      后台任务
        Sidekiq
        Resque
  安全策略
    单点登录
    点对点验证
    安全网关
    OAuth Protected Service
  数据相关
    数据库
      RDBMS
      NoSQL
    数据伸缩
      读
      写
      缓存
    业务数据隔离
      基于服务
  组织结构
    全功能团队
    去中心化
    康威定律
  常用模式
    部署模式
      单机多实例
      单机单实例
      容器多实例
      容器单实例
    服务发现
      客户端发现
      服务器端发现
      常用库/工具
        Consul
        Eureka
        SmartStack
    API网关
      请求转发
      响应合成
      协议转换
      安全认证
    服务注册
      自注册
      第三方注册
      常用库/工具
        Consul
        Eureka
        SmartStack
    Edge Server
    配置服务(Config Server)
  理论基础
    概念
      多微合适
        非代码行数
        非重写时间
        适合团队
          业务独立
          团队自主
      进程隔离
        服务运行在独立进程中
      轻量级通信
        协议跨平台
        格式语言无关
      独立性
        能独立部署
    本质
      服务作为组件
      围绕业务组织团队
      产品驱动而非项目驱动
      技术多样性
      业务数据独立
      基础设施自动化
      演进式架构
    优点
      按需伸缩
      独立部署
      业务独立
      技术多样性
    缺点
      分布式系统固有复杂度
        可用性
        一致性
        容错性
      运维成本高
        环境配置（Provisioning）
        部署
        监控
      测试成本高
        自动化测试
        契约测试
      依赖管理成本高
        版本管理
        服务依赖
        服务治理
    和SOA相比
      实现方式
      服务粒度
      集成方式
      部署方式