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

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

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

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

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

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

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

Instagram的持续部署技术的更多相关文章

  1. CI Weekly #7 | Instgram/Quora 等大公司如何做持续部署?

    终于,你们期待的 flow.ci iOS 项目持续集成 开始公测了.在这几个工作日, flow.ci 做了些许「功能优化」与「问题修复」,性能和体验都在持续优化中.比如: iOS 快速入门文档更新: ...

  2. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  3. 用 flow.ci 让 Hexo 持续部署

    编者按:感谢 @小小小杜 投稿,原文链接Juglans' Blog.如果你也想体验 flow.ci 的自动化持续部署,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱:) flo ...

  4. Fastlane为iOS带来持续部署

    Fastlane是一组工具套件,旨在实现iOS应用发布流程的自动化,并且提供一个运行良好的持续部署流程,只需要运行一个简单的命令就可以触发这个流程. Fastlane是一个ruby脚本集合,其中囊括了 ...

  5. CI Weekly #11 | 微服务场景下的自动化测试与持续部署

    又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...

  6. fir.im 持续集成技术实践

    互联网时代,人人都在追求产品的快速响应.快速迭代和快速验证.不论是创业团队还是大中型企业,都在探索属于自己的敏捷开发.持续交付之道.fir.im 团队也在全面实施敏捷,并推出新持续集成服务 - flo ...

  7. 华为软件开发云对比Jenkins-JavaWeb项目持续部署方式

    一.前言:Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成和持续部署变成可能. 本文 ...

  8. Docker环境的持续部署优化实践

    最近两周优化了我们持续部署的程序,收效显著,记录下来分享给大家 背景介绍 那年公司快速成长,频繁上线新项目,每上线一个项目,就需要新申请一批机器,初始化,部署依赖的服务环境,一个脚本行天下 那年项目发 ...

  9. JAVA项目如何通过Docker实现Jenkins持续部署

    原文地址:http://blog.51cto.com/dadonggg/1957691 本篇实操性的案例讲解——JAVA项目如何通过Docker实现持续部署(只需简单四步), 即:开发通过git pu ...

随机推荐

  1. tcp 三次握手

  2. 学 Redux (转)

    0.官方文档:http://redux.js.org/ 中文版本 :  http://cn.redux.js.org/ 中文版本(好!):   http://www.css88.com/react/d ...

  3. LIGHTSWITCH 连接 MYSQL,中文字符不能保存----解决方法。

    使用:dotConnect for MySQL () 作为 数据库连接的PROVIDER ,  在 LIGHTSWITCH 中 引用外部的MYSQL 数据源. http://www.devart.co ...

  4. POJ 1456(贪心)

    #include <string.h> #include <iostream> #include <queue> #include <stdio.h> ...

  5. POJ 2352

    ---恢复内容开始--- http://poj.org/problem?id=2352 这是一个树状数组的题目,也是我第一次接触这类的题目,也正是因为之前的一道题,TLE了,超时太严重了,我看disc ...

  6. Javascript之setTimeout

    参考:http://codethoughts.info/javascript/2015/07/06/javascript-callbacks/

  7. python之打包相关

    打包手册:https://python-packaging-user-guide.readthedocs.org/en/latest/installing.html#installing-from-a ...

  8. Unity全屏模糊

    先上效果,左边模糊 其实用的是Unity Stard Effect里的资源,一个脚本一个shader //脚本代码 using UnityEngine; using System.Collection ...

  9. ACM/ICPC 之 并查集-食物链(POJ1182)

    并查集的经典题型,POJ上题目还是中文= =,一般看到中文题都会感觉不太简单,这道题的数学归纳用得比较多,可以简化代码,挺有意思的. 同类型的题目还有POJ1703,比这个要简单,想了解并查集基本介绍 ...

  10. mybatis,批量新增、修改,删除

    转载自:http://blog.csdn.net/sanyuesan0000/article/details/19998727 最近需要用到Mybatis批量新增oracle数据库,刚开始在网上找到的 ...