
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于IT技术中的Instagram是如何做持续部署你知道多少呢?你看过这些方面的知识吗!我想对于一些陌生的知识很多人还是会不知道的,或者只会简单的了解到一些内容,那么大家就跟着佛山IT培训达内的小编一起来看看它是如何进行操作和部署的?
在 Instagram,我们每天部署后端代码大约是 30~50 次。无论什么时候,只要工程师提交了修改到服务器,都会进行一次部署,而大多数情况下,这都无人参与。这听起来很疯狂,尤其是在像我们这种规模的情况之下,但这的确没有什么问题。本文将讨论我们是如何实现这个系统的,以及如何保证它稳定流畅地工作。
为什么要持续部署?
持续部署对我们有诸多好处:
能够提高工程师们的工作效率。工程师们无须被限制于每天在固定时间进行几次部署;相反,他们随时都可进行代码部署。这意味着他们可以节约时间并快速地对代码进行迭代更改。
工程师们识别错误的提交变得容易得多。持续部署使得工程师们在查找引起新错误的原因的范围缩小了,由之前需要在几十或数百个提交中进行排查缩小到只需在一个或最多两、三个提交中查找。当你稍后发现问题并返回调试时,这也非常有用。运用指示问题的指标或数据,我们可以精确地确认问题的开始时间,继而查找出那个时间点进行的部署都有哪些代码提交。
让错误提交被快速发现和处理。这意味着我们在服务器上不会出现无法部署的糟糕情况,而对其它无关的变更造成重大延迟。我们总是处于一个能够快速地从重大困境中恢复的状态。
实现
这种系统能够得以实现成功,很大程度上归功于它采用迭代方法进行构建。我们没有独立地构建系统,然后突然切换;相反,我们逐步更新当前机制,直到它们成为了持续部署。
持续部署之前
在持续部署实现之前,工程师们需要对变更进行特地部署。他们完成代码变更后,如果希望它们被尽快部署,他们将运行一次部署。否则,他们会等待另一位工程师来这样做。工程师们被认为是能够知道如何事先进行小规模测试的: 他们先在一台机器上运行部署,登录该机器并检查日志,然后针对整个机队进行部署。这些都使用 Fabric 脚本实现,我们有一个非常基础的数据库和用户界面软件“ Sauron ”来存储部署日志。
自动化
为了实现自动化,首先得做一些基础工作。我们给部署添加了状态(运行、完成、错误),一旦之前的部署不处于“完成”状态,就让脚本发出警告。我们在界面上添加了一个停止按钮,可以将状态变更为“停止”,同时,也让脚本不定期地检查状态并作出相应的反应。我们还对提交增加了完整跟踪; Sauron 之前只知道最后通过了测试的提交,但现在每一次在服务器上的提交都会有记录,而且知道每次提交的具体测试状态。
然后,我们对其余的仍需要人参与决策的部分也实施了自动化。首先,需要确认哪些提交可以部署。最初的算法总是选择已通过测试的提交,并且越少越好——不会超过三个。如果每个提交都通过了测试,那么每次都会选择一个新的提交,并且最多只可能有两个未通过测试的连续提交。其次,如何确认部署是否成功。如果有超过 1% 的主机部署失败,这次上线会被确认为失败。
到这个时候,当事情正常的时候,进行代码部署变成了只是简单地回答几次“是”(接受建议的提交,启动 canary ,继续全面部署)。因此,我们允许自动回答这些问题,然后让 Jenkins 运行部署脚本。起初,工程师们启用 Jenkins 实施部署还需要部门监督,到最后,已完全实现了无人监管。
Canary 和测试
第一步是添加 canarying,这在最初只是用来简单地编写工程师们已经预期的工作。脚本用来部署到 canary 机而不是在一台机器上运行一个独立的部署,跟踪用户日志,并询问是否继续全面部署。接下来是对 canary 机的一些基本分析: 一个脚本收集每个请求的 HTTP 状态码,对它们进行分类,并应用硬编码率阈值(例如,小于0.5% 5xx,至少90% 2xx)。但是,如果阈值失败,则只会向用户发出警告。
我们有一个测试组件,但它只运行在工程师的开发机器上。如果开发人员说测试通过,代码评审人员也只能采信,并且我们也无法知道提交到服务器上的代码的测试结果。因此,我们安装 Jenkins 对服务器上的新的代码提交运行测试,并报告结果给 Sauron。Sauron 将跟踪通过了测试的最新提交,并将此提交作为部署建议,而不是最后一次的提交。
Facebook 使用 Phabricator)进行代码评审,并拥有一个与 Phabricator 集成很好的持续集成系统 Sandcastle 。一旦创建或更新存在差异,我们使用 Sandcastle 运行测试,并提供报告。
如果对IT技术方面的知识和技能感兴趣,或者想从事着方面的工作,那么可以来佛山IT培训机构进行更多的了解和咨询,进行一个专业的培训对你是有一个很大的提升的,如果想了解更多的IT技术知识,欢迎来佛山达内IT培训机构进行更多的了解和咨询。