- 发布协调工程师(Launch CoordinationEngineering,LCE),LCE
(a)广泛的经验
(b)跨职能的视角
(c)客观性
- 好的发布流程具有的一些特征:
- 轻量级:占用很少的开发时间
- 鲁棒性:能够最大限度地避免简单的错误。
- 完整性:完整地、一致地在各个环节内跟踪重要的细节问题。
- 可扩展性:可以应用在很多简单的发布上,也可以用在复杂的发布过程中。
- 适应性:适用于大多数常见的发布
这些需求是互相有冲突的。例如,想要设计一个流程来同时满足轻量级和完整性是很困难的,在这些参数中取舍平衡需要持续不断地投入。可以采用以下几种手段来达到目的:
- 简化:确保基本信息正确。不需要为所有的可能性做准备。
- 高度定制:有经验的工程师会针对每次发布定制流程。
- 保证通用路径快速完成
- 发布检查列表
- 架构与依赖
- 集成:建立新服务器、配置新服务、设置监控、与负载均衡集成
- 容量规划
- 故障模式:能够承受单独物理机故障?单数据中心故障?网络故障?如何应对无效或者恶意输入,是否有针对拒绝服务攻击(DoS)的保护?如果某个依赖组件发生故障,该服务是否能够在降级模式下继续工作?该服务在启动时能否应对某个依赖组件不可用的情况?在运行时能否处理依赖不可用和自动恢复情况?
- 客户端行为
- 流程与自动化:自动化永远不是完美的,每个服务都有需要人工执行的流程:构建一个新版本,迁移服务到另外一个数据中心中,从备份中恢复数据等。为了保障可靠性,应该尽量减少流程中的单点故障源,包括人在内。
- 开发流程:开发流程都和版本控制系统深度整合?
- 外部依赖:
- 发布计划:
- 推动融合和简化
- 可靠发布的方法论
- 灰度和阶段性发布
- 功能开关框架
- 应对客户端滥用行为
- 过载行为和压力测试