Instagram 是如何做持续部署的
发布于 2 个月前 作者 iDevBen 12692 次浏览 来自 技术
  1. 测试:测试组件需要能够被快速执行。它需要有适当的覆盖率,但无需十全十美。测试需要经常执行:在代码审查期间,在代码提交前(理想情况下阻止测试失败的代码进行提交),以及提交后。
  2. Canary : 需要一个自动化的 canary 脚本,以防止真正的错误提交被部署到整个机队中。然而,它不需要是完美的–即使是非常简单的统计数据和阈值,也是非常不错的。
  3. 自动化正常场景: 不必对所有的场景都实现自动化;仅仅需要对已知的,正常的情况进行自动化。如果有任何的异常,停止自动化,人工处理。
  4. 让人感觉舒服:我认为这种自动化系统的一大障碍是让人感到不连贯和失控。为了解决这个问题,自动化系统需要提供可视化界面,显示它所做的,正在做的,以及(最好)即将做的。它还需要提供良好的停止机制。
  5. 预计糟糕的部署:会出现有问题的变更,但这没关系。你只需要快速检测出问题,并且能够快速回滚。