微服务的范围
- 自组织团队
- 康威定律 - 产品或系统的设计(架构)受到其生产组织自身沟通结构的制约
- You build it, you Run it. 小团队,完成服务的分析、开发、测试、部署和运维
- 不断识别交付中的瓶颈,采用精益的方式快速验证和优化,小步快跑
- 技术实战
- 通过高度成熟的自动化体系建立可靠且可重复的交付过程
- 良好的持续集成、代码review、团队内技术分享等实践
- 在满足验收标准的条件下,鼓励拥抱新技术解决业务问题,试点性验证并推广
- 流程与工具
- 积极引入外部工具,同时不断优化内部工具
- 保障持续集成、持续部署流水线的稳定且高效
- 加强基础设施的构建与管理,加快监控、告警、日志聚合等反馈效率
微服务、Serverless的出现,都是以不断提高交付效率、缩短交付周期为核心,基于云原生方式,对架构优化的结果
微服务带来的优点
- 服务模块的边界更清晰:微服务强调模块化结构(REST接口调用),这对大型团队非常重要
- 支持独立部署:简单服务更易部署,由于服务是自治的,出现问题之后不会引起系统奔溃
- 允许技术多样性:有了微服务,你可以混合使用多种编程语言、开发框架和数据存储技术
微服务带来的挑战
- 分布式编程难度大、有风险:分布式系统编程难度更大,远程调用更慢且总存在失败风险
- 需处理分布式系统一致性:对于分布式系统来说,保持一致性非常困难,意味着大家都要处理最终一致性
- 增加运维复杂性:需要一个成熟的运维团队
参考
- Martin Fowler Microservices
- 微服务译文
- 微服务架构解析