Instagram的持续部署技术

时间:2023-03-09 09:22:57
Instagram的持续部署技术

Instagram最近发表了一篇关于他们的持续部署(CD)管道的文章,持续部署管道可以让他们更快的将代码推送到生产环境,并且轻松地识别糟糕的提交和始终保持发布可用。在一段时间内以迭代的方式放在一起,其背后主要包括高品质的测试套件,快速识别糟糕的提交,将每一个阶段从利益相关者或得的改进意见的可视化以及工作回滚计划。

在拥有该系统之前,Instagram制定的系统的部署过程是手动步骤和脚本一个大杂烩。首先部署在一台机器上完成第一次检查。一个基本的版本跟踪应用程序,称为Sauron,由一个用户界面和数据库已经到位用于观看前一次发布的结果。首次发布是基于Fabric的脚本,以及基于SSH协议的自动化工具。

Facebook在2013年收购Instagram,然后开始把基础组件从AWS迁移到Facebook自己的数据中心。根据迈克尔Gorven所说,Instagram拥有数千台机器,但是他们每天可以管理部署代码30 -50次。基础设施和未来增长的大规模不会影响代码的修改部署速度。

Instagram给该系统添加了更多的智能特性,让系统能够决定哪些commit可以推送到生产环境,并且还集成了Jenkins去基于测试结果分类提交是好的还是糟糕的。这些结果都被推送到了Sauron应用程序。

数据库迁移 - 包括架构和服务器 - 是大多数CD管道面临的主要挑战。解决方案通常是特定于产品和基础设施。 Instagram也是如此- 他们有自己的系统。对于数据库迁移到新的位置,其基本原理是复制单个分片(虽然它仍然活着),并重复复制,直到增量很小。然后,它使用一个特性开关关掉原来的分片,最后只剩下一个副本,并使用该特性开关启用新位置的分片。

Schema的变动是通过特性开关来完成的。

改进糟糕提交的检测和保持发布执行速度是Instagram发布工程团队的接下去关注的重点领域。