最近阅读了《生产微服务》这本书,摘录了生产就绪check列表和评估你微服务的清单。一个服务从0-1的生产过程。很值得参考。
生产就绪检查列表
一个生产就绪的微服务是稳定且可靠的
它的代码需要经过初步检查、单元测试、集成测试以及端到端的测试。
它有标准化的部署管道,包括staging阶段、canary阶段和生产阶段。
它的依赖项是已知的,而且是有备份的,还有可选的回退方案以及缓存,以防出
现依赖项失效。
一个生产就绪的微服务是可伸缩且高性能的
一个具备容错和灾备能力的生产就绪的微服务
- 已经通过代码测试、负载测试和混沌测试,保证了微服务的弹性 。
- 微服务开发团队和整个组织具有标准化的事故和中断处理流程 。
一个得到恰当监控的生产就绪的微服务
- 它的关键性度量指标在主机级别、基础设施级别和微服务级别得到识别和监控 。
- 它的仪表盘包含了所有的关键性度量指标,而且很容易读懂 。
- 有一个专门的轮班待命机制负责监控微服务,并对事故和中断做出响应 。
- 有一个清晰的、良好定义的标准待命流程,用于处理事故和中断 。
一个生产就绪的微服务具有良好的文档并且为人 所理解
评估你的微服务
稳定性和可靠性
开发周期
- 开发人员所在的开发环境是否准确反映了产品状态(例如,是否准确反映了实际情况)?
- 是否有代码检查、单元测试、集成测试和端到端的测试?是否有代码审查流程和策略?
部署管道
- 部署管道里是否有 full staging 或 partial staging 阶段?
- canary 阶段是否有足够的时间来捕捉所有的缺陷?
- canary 阶段是否准确地模拟了生产环境的业务流量?
- 对于紧急情况,是否存在直接跳过 staging 和 canary 阶段的情况?
服务依赖
- 对于每个依赖项,是否都有备份、替代服务、回退方案或防御性缓存?
路由和服务发现
- 是否使用了回路断路器来防止不健康的微服务发出请求?
- 是否使用了回路断路器来防止生产环境的业务流量被发送到不健康的 主机或服务上?
服务和端点的解除
伸缩性和高性能
增长规模
资源的有效利用
资源感知
容量规划
依赖项的伸缩
流量管理
- 流量模式的急剧变化(特别是流量爆发)是否被小心地处理了?
- 在服务失效以后,流量是否能够被恰当地重新路由到其他数据中心?
任务处理
- 微服务在处理请求时是否存在伸缩性和性能方面的限制?
- 微服务在处理任务时是否存在伸缩性和性能方面的限制?
- 微服务团队的开发人员是否了解他们的服务是如何处理任务的,处理任务的效率是怎样的,以及当任务和请求数量增加时他们的服务将会如何应对?
可伸缩的数据存储
- 微服务的数据库可以横向或纵向扩展吗?它是可复制或者可分区的吗?
- 微服务使用的是专门的还是共 享 的数据库? 微服务是如何存储和处理测试数据的?
容错和灾备
避免故障点
故障场景
弹性测试
- 这个微服务是否通过了适当的 lint 测试、单元测试、集成测试和端到端的测试?
故障检测和修复
监控
关键性的度量指标
日志
仪表盘
- 仪表盘是否简单易懂?是否所有的关键性度量指标都展示在了仪表盘上?
告警
- 告警阈值设置是否恰当,以便在发生中断之前触发告警?
- 运行手册里是否包含了用于诊断、缓解和解决问题的排查步骤?
轮班待命
文档化和理解
微服务文档
- 微服务的文档是否被集中存放在一个公开的、人们容易访问到的地方?
- 微服务发生重要变更时,文档是否也得到了相应的更新?
- 文档是否包含了微服务请求消息流、端点和依赖项的信息?
微服务理解
- 团队里的每个开发人员是否都能回答与他们的微服务的生产就绪相关的问题?
- 是否有生产就绪路线图用于把微服务带向生产就绪的状态?
- 生产就绪标准是否推动了组织的 OKR? 生产就绪流程是自动化的吗?
我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。
坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio
文章来源: http://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247489917&idx=1&sn=7e6a00887d3492cca18b9147822ecb31&chksm=9be3369cac94bf8a782ae2721acdcf171b44e79856ab6a3e35c454ea28235eb5ef19593d2e65#rd
如有侵权请联系:admin#unsafe.sh