Slack的开发环境是如何演进的?
极客时间编辑部
讲述:丁婵大小:7.95M时长:05:48
你好,欢迎收听极客视点。
开发环境可以极大提高开发速度和安全性,它的主要价值是让开发人员可以在不影响实际用户或不泄露真实数据的情况下测试应用程序更改。最近,Slack 的软件工程师 Michael Deng 介绍了 Slack 的开发环境演进,InfoQ 对其进行了翻译,供你参考。
在本文中,开发环境是指可以在部署之前测试代码更改的沙箱,不是 Eclipse 或 Microsoft Visual Studio 这样的集成开发环境(IDE)。
Slack 后台是什么样子?
Slack 的开发环境是其应用程序在远程服务器上的副本,准确地说是 Amazon EC2 实例,这些实例运行 Slack 应用程序及其所依赖的许多服务。
每个开发环境都有自己的 Slack 子域,开发者可以在浏览器中查看他们的更改。开发环境中的任何更改都不会影响实际用户,因为它们自己有一套与生产环境隔离的基础设施。
Slack 同时使用远程开发和本地开发,远程开发意味着他们的开发环境在服务器上,同时,开发者也可以在个人电脑上进行本地开发。对于小型项目来说,本地开发非常好,因为它速度快,而且不需要联网。然而,对于较大的项目,远程开发环境则有显著的优势。这带来的好处是:
Slack 的开发人员不必在本地设置 Slack 应用程序。Slack 的架构非常复杂,它依赖于许多不同的服务,不用在本地设置是非常有价值的。
如果一项更改在开发环境中有效,那么它在生产环境中也很可能有效,因为他们将开发环境配置为生产环境的镜像。对于使用时间特别长的开发环境,可能仍然会出现某种程度的偏差,但是,出现这种偏差的可能性以及偏差的幅度,都要比在本地使用单独的机器进行开发时小得多,本地开发经常会导致配置不一致。
远程开发环境不依赖于可能会崩溃或落后的个人计算机。云硬件更便宜、更有弹性,而且可伸缩。此外,它们使开发者很容易在多台机器上进行开发,并与队友共享工作以供审核。
随着互联网变得越来越快、越来越可靠,远程开发也越来越有意义。
如何使用开发环境呢?
下面通过一个例子来解释 Slack 的开发环境工作流。假设出于某种原因,开发人员想测试一个使用了紫色 Comic Sans 字体、全大写的 Slack 主页版本。
首先要创建一个特性分支,然后使用一个名为 slack sync-dev 的命令行工具将其追加到开发环境中。它会随机预定一个开发环境,然后将本地更改同步到上面。这样,在本地编辑的任何内容保存时都会自动传输到开发环境。
slack sync-dev 只是对两个著名的实用工具 fswatch(检测更改)和 rsync(传输更改)的封装。
完成后,就可以导航到 dev575 子域。如下图,无疑右边的版本更引人注目。
现在,开发人员可以在页面上找 Bug,调整更改,并与他人共享以供审核。
前端更改是由个人计算机构建并提供,如果想让其他人在某个开发者关机后还能够看到这些更改,就必须生成一个静态构建,在开发环境中构建前端资产,而不是在本机。
扩展开发环境
在 2014 年,Slack 只有一个开发环境供所有人使用。如果有人破坏了这个环境,其他人就无法测试他们的更改了。这在当时并不是什么大问题,但随着 Slack 的发展,它不得不增加开发环境。当扩展到足够每个 Slack 工程师都连接到一个不同的开发环境时,出现了新问题,随着时间的推移,每个 EC2 实例上开发环境的数量在下降。
因为要将开发环境彼此隔离开来。当多个环境共享同一个实例时,如果有一个开发人员在其中一个环境上运行一个内存密集型进程,就会降低其他所有环境的运行速度。
每个实例上的开发环境数少了,就意味着需要购买更多的 EC2 实例。此外,这些实例是静态托管的,因此,开发人员需要花大量的工程时间来提供新的实例以及删除损坏的实例。更糟糕的是,长期运行的实例会随着时间的推移而变得混乱,而其行为将不再可靠。
为了解决这些问题,Slack 创建了一个按需提供开发实例的新系统,按需提供新实例,而不是保持数百个实例同时运行。一旦开发人员完成了测试,他们使用的实例将被自动删除。有了这个系统,开发人员就可以更有效地使用开发环境。
以上就是 Slack 的开发环境演进过程,希望能给你带来参考价值。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论