Slack为何如此受欢迎?更快速、更可靠、更安全

      最后更新:2020-04-21 12:39:52 手机定位技术交流文章

      全文为2066字,预计持续7分钟。

      资料来源:unsplash

      产品部署最重要的是什么?如何平衡速度和可靠性是关键。这就是为什么Slack如此受欢迎。Slack是历史上发展最快的SaaS初创公司。

      Slack非常重视快速迭代、快速反馈循环和对客户反馈的响应。数百名工程师也在努力提高工作效率。在公司成长的同时,公司坚持上述价值观,不断完善部署体系。为了适应工作量,继续投资更高的可见性和可靠性项目。

      本文将介绍Slack的发展和一些主要项目,并告诉你Slack是如何做到这一点的。

      如何部署工作

      每个松弛推送请求都需要代码审查并通过所有测试。一旦满足这些条件,工程师就可以将代码合并到master中。为了确保任何意外问题都能在任何时候得到解决,合并代码将只在北美工作时间部署。

      该公司每天将进行大约12次计划部署。在每次部署过程中,都会指定一名工程师作为部署指挥官,将新建筑部署到生产环境中。

      这是一个多步骤的过程,确保构建缓慢地进行,以便在错误产生广泛影响之前就能被检测到。如果有错误,这些构建可以回滚;如果发布后发现问题,也可以很容易地解决。

      检查点,用于管理部署的用户界面

      1.创建发布分支

      每个版本都从一个新的发布分支开始,这是Git历史中的一个点。它允许对版本进行标记,并为产品发布过程中发现的问题选择补丁。

      资料来源:unsplash

      2.部署到阶段

      下一步是将构建部署到临时服务器,并运行自动烟雾测试。登台是不接受公共交通的生产环境。工程师在舞台上执行其他手动测试,因为它确保了变更比只在开发环境中测试更有效。

      3.部署到狗食和金丝雀

      产品演示从狗粮层开始,狗粮层是一组为一些内部Slack工作区提供服务的主机。由于我们也是非常活跃的Slack用户,狗粮有助于尽早发现许多问题。一旦确定核心功能不变,建筑将部署到金丝雀,约2%的生产流程将通过。

      4.基于百分比的生产

      如果图表保持稳定,并且没有异常提醒,生产部署将按百分比继续进行。以10%、25%、50%、75%和100%的增量分解部署,将生产流程缓慢导入新版本,同时让我们有时间检查任何峰值或异常情况。

      如果在部署过程中出现问题怎么办?

      修改代码总是会带来风险,因此公司将安排一名训练有素的部署指挥官来观察图表,并在每次新版本发布时与引入代码的工程师协调处理风险。

      如果出现任何问题,首要目标是尽快控制它。通过对问题的调查,确定导致问题的公共关系,对其进行恢复、选择和重建。

      然而,有时在生产前没有发现问题。在这种情况下,恢复服务是至关重要的,因此工程师将在开始调查之前立即回滚到以前的工作构建。

      资料来源:unsplash

      积木

      快速部署

      事后看来,上述工作流程似乎显而易见,但部署系统需要多次迭代才能实现。

      当公司非常小的时候,整个应用程序可以在10个亚马逊EC2实例上运行。一次部署意味着对所有服务器的快速响应。在生产之前,只有一层:舞台。构建完成后,在试运行期间进行验证,然后直接进入所有生产服务器。这个系统很容易理解,并且允许任何工程师在任何时候部署他自己的代码。

      然而,随着客户数量的增加,运行应用程序所需的基础架构数量也在增加。很快,基于推送的部署模型就无法应对服务器数量的增加。每增加一台服务器都会相应增加部署时间。甚至像并行rsyncs这样的策略也有其局限性。

      最后,通过切换到完全平行的拉动系统,问题得以解决。不是使用同步脚本将新版本推送到服务器,而是每个服务器在接收到领事密钥更改信号的同时提取版本。这可以在保持高速部署的同时继续扩展。

      原子部署

      为分层部署铺平道路的另一个项目是原子部署。

      在原子部署发生之前,每个部署都会导致一系列错误,因为将新文件复制到生产服务器的过程不是原子部署。

      这将创建一个小窗口,新函数的调用位置可以在实际函数之前使用。当调用这些调用站点时,它们返回内部错误,这些错误显示为失败的应用编程接口请求和损坏的网页。

      团队使用热目录和冷目录解决了这个问题。热目录服务于生产流程,而冷目录用于准备。在部署期间,新代码将被复制到未使用的冷目录中。然后,一旦服务器上的活动进程耗尽,目录将立即切换。

      重新关注可靠性

      2018年,一个问题出现了:部署越快,产品越不稳定。该公司的部署系统非常强大,并有大量的资本投资,但部署过程必须继续发展。

      随着公司的扩张,全球范围内有越来越多的关键任务协作,可靠性成为关注的焦点。

      资料来源:unsplash

      这一要求促使我们对部署系统进行了全面的检查,产生了上述基于百分比的部署系统。在此基础上,该公司继续使用快速部署和原子部署,但改变了执行部署的方式。该系统可以进行级别更改,再加上更好的监控和工具,使工程师能够在漏洞影响所有用户之前捕获和缓解漏洞。

      为了获得更完美的用户体验,工程师会不断检查和升级系统。但是任务还没有结束——更好的工具和更高程度的自动化是下一个变革方向。成功的秘诀也在这里,随着需求的变化而变化。

      评论、表扬和关注

      让我们分享人工智能学习和发展的干货。

      如果重印,请在后台留言并遵守重印规则。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/4961.html

          热门文章

          文章分类