Airbnb改进部署管道安全性,规范部署顺序

2019 年 3 月 04 日

Airbnb改进部署管道安全性,规范部署顺序

Airbnb 软件工程实习生 Alexander Katz 最近撰写了一篇文章,介绍了他们的团队在 Airbnb 部署系统中所做的改进。Airbnb 的内部部署服务 Deployboard 每天为成千上万个服务进行数千个部署。但是,这个工具没有强制部署顺序,导致工程师在某些情况下可以将代码直接推送到生产环境中。

Katz 表示,Deployboard 负责部署构成 Airbnb 基础设施和产品的服务。这些服务中的每一个都有自己的一系列环境,允许分阶段将变更推到生产环境。Katz 还指出,“在 Airbnb,我们为工程师提供了极大的自由和灵活性,我们为此感到自豪。也就是说,任何一个工程师都可以轻松地进行任意环境的部署”。这种策略越来越多地被大型组织所采用,例如,Netflix 工程团队提供了“混合容器”平台和部署系统,鼓励采用最佳实践,但不阻止必要的改变。

Katz 解释说,他们的部署工具缺少一种保证机制,无法阻止工程师以错误的顺序部署变更。此外,服务部署流程相关的文档大都过时了。在最近的 QCon 演讲中,如何持续更新文档被认为是一项艰巨的挑战,比如来自 LinkedIn 的 Michael Kehoe 做了“构建生产就绪的应用程序”的演讲。由于 Airbnb 的工程师可以自由地部署服务,而且不保证它们一定会正常运行,所以 Katz 表示,解决这个问题将成为高度优先事项。

建议的解决方案是将服务的部署阶段分为强制目标和可选目标,并按顺序显示。还添加了评论,帮助用户了解每个阶段的目的。Katz 指出,专注于直观的设计是至关重要的,因为“几乎所有 Airbnb 工程师都会定期与 Deployboard 发生交互,这些交互通常都很短,更多的是一种达到目的的手段”。


Deployboard 最新的管道视图(感谢 Airbnb 提供图片)

Airbnb 将配置视为代码,这意味着Katz 和他的团队要迈出的第一步是为定义部署管道的配置文件定义规范。Katz 指出,部署本身是由管道处理的,这意味着可以使用管道来更新自己的配置。Katz 说,“如果一个管道以某种方式获得了损坏的配置,就无法通过直接的方法来修复”。因此,如果发生这种情况,他们必须开发工具来拯救管道。

通过这些变更,可以由服务团队来定义和管理管道。由于管道定义本身就是代码,所以可以将管道变更的验证作为管道自身生命周期的一部分。Katz 指出,团队评估了针对这个问题的外部解决方案,并可能在不久的将来采用其中的一个。对于感兴趣的读者,InfoQ 之前已经介绍了很多潜在的解决方案,如 Jenkins X Spring Cloud Pipelines 和 Spinnaker 以及 Azure Pipelines

查看英文原文 https://www.infoq.com/news/2019/02/airbnb-deployment-pipelines

2019 年 3 月 04 日 17:22 3945
用户头像

发布了 5 篇内容,共 3376 次阅读,收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

深入Java Web技术内幕(一)浅析Web请求过程

独钓寒江雪

Java web

Spring Cloud微服务技术栈:搭建高可用Eureka Server、服务注册与发现

独钓寒江雪

Spring Cloud

架构师训练营第7周作业

时来运转

深入理解 JS 参数传递

Verlime

JavaScript 前端

Presto性能调优的五大技巧

华为云开发者社区

大数据 数据 内存 存储 华为云

Phobos新变种藏身系统激活工具再掀勒索风暴,360安全大脑强力“截杀”

360安全卫士

彻底弄懂C++11右值引用 | 技术总结

chaozh

c++

架构师训练营第7周总结

时来运转

优雅地利用c++编程从1乘到20 | 技术总结

chaozh

c++

女娲造物与补天 | 中国古神话

chaozh

人民自己创造的节日 | 经济

chaozh

Combine中@Published浅析

kingnight_pig

swift Combine Publisher

架构师训练营第七周作业-性能测试

sunnywhy

创世 | 中国古神话

chaozh

神话

腾讯的背水一战还是奋力一搏? | 互联网

chaozh

一文读懂数据库中的乐观锁和悲观锁和MVCC

X先生

数据库 乐观锁 悲观锁 并发控制

JVM 垃圾回收器 G1

Alex🐒

JVM 深入理解JVM GC

深入理解 JS 中的 this

Verlime

JavaScript 前端

程序员面试必备战衣 | T恤衫 - 程序员穿搭

chaozh

GEEK

深入理解 JS 中的变量提升

Verlime

JavaScript 前端

数据产品经理必备技能大纲

Jackchang234987

产品 数据 数据产品经理

JVM 类加载机制

Alex🐒

JVM 深入理解JVM

神国统治者 | 中国古神话

chaozh

如何挑选编程笔记本 | 数码产品

chaozh

每个现代人都应该知道的包豪斯| 艺术

chaozh

极客时间架构师训练营week7作业

好名字

极客大学架构师训练营 作业

JVM 对象内存布局

Alex🐒

JVM 深入理解JVM

深入 Java Web 技术内幕(二)浅析DNS域名解析过程

独钓寒江雪

DNS 域名解析

官宣了,英特尔并非断供浪潮而是属于内部供应链调整

Geek_116789

放下纠结,你就远离了拖延症

泰稳@极客邦科技

创业 个人成长 企业管理

第7周性能优化

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

Airbnb改进部署管道安全性,规范部署顺序-InfoQ