限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

揭秘 Shopify 的软件发布流程,如何做到合并上千程序员的工作?

  • 2020-04-23
  • 本文字数:2875 字

    阅读完需:约 9 分钟

揭秘Shopify的软件发布流程,如何做到合并上千程序员的工作?

2019 年,Shopify 在博客中分享了自己成功合并千名开发人员工作的经验,并介绍了工具 Merge Queue v2,很多人都好奇为什么 Shopify 要构建这样的一款工具呢?


其实答案很简单,不少企业发展到一定阶段后就会遇到这样的情况。随着业务发展,Shopify 意识到市面上没有任何现成的产品可以彻底解决他们面临的困难。从更长远地来看,Shopfiy 认为公司应该为开发人员提供尽量完善的开发体验,并要塑造一种"软件发布文化",所以就开始不断改进现有的工具链和流程方法。


Shopify 是这样定义企业文化的:


Shopify 所有人信念和行为的总和。


软件发布工作是开发工作的子集,自然,"软件发布文化"也要和企业文化保持一致。Shopfiy 的软件发布工作规范与其他企业没有太大不同,比如他们要求错误的更改不应该流入生产环境,破坏用户体验;生产环境中所做的更改不应该牺牲安全性等等。


通往罗马的道路不止一条,同样的软件发布文化,也有很多可选的实现路径。Shopify 认为,企业支持团队应该为开发人员开辟一条路径,让他们自由发挥生产力和创造力,并实现自己的目标。企业应该营造一种氛围,让版本发布成为一种胜利时刻。

Shopify 如何评估软件发布文化

如何塑造软件发布文化?首先要考虑以下问题:


  • 开发人员希望选择怎样的工作方式?

  • 对他们来说哪些事情比较重要?

  • 他们如何看待用来支持他们的工具?

  • 他们想知道多少幕后信息,想了解多少自己使用的工具背后的知识?


这些问题往往没有单一的答案,尤其是 Shopify 这家企业中每天参与软件部署工作的人员众多,涉及的岗位也多种多样。Shopify 选择了一些主动和被动的方法来评估企业内部的软件发布文化,这些方法不分先后,它们共同描绘出了一幅关于开发人员如何使用各种工具的图景。



其中,被动方法主要用来管理和汇总输入的信息,并不需要企业支持团队去做很多工作。其中,有一个方法是 开发人员满意度调查,这是对 Shopify 全公司的开发人员每半年进行一次的调查研究。开发人员需要报告很多信息,比如说他们对自己所使用的工具的满意度,或者工作中哪些环节非常浪费时间等等。


此外,公司还专门设立了面向所有人开放的 Slack 频道。在这个频道上,产品用户可以从开发团队或其他用户那里获得支持,并报告他们遇到的问题。Shopify 团队会积极参与这些频道的互动,培养社区氛围并鼓励开发人员分享经验。需要注意的是,这些频道并不是用来获取产品反馈的主要渠道。


总的来说,他们希望能主动找出产品和服务中的痛点所在,而且意识到了这个过程并不能过分依赖用户,因此 Shopify 也采取了一些积极的措施来找出最重要、优先级最高的问题。


一种措施叫做 dogfooding。公司内开发团队用来发布代码的工具是和构建与维护代码的工具完全一致的。这样就很容易找出服务的缺陷所在,并在出现产品问题时站在用户的视角上理解其影响。


另一项重要资源是 Shopify 的 内部支持团队。他们需要帮助用户,还要支持企业内部不断发展的工具套件,这是很艰巨的挑战。他们需要诊断问题,帮助用户找到合适的团队来指导他们解决这些问题。他们能够找出用户在当前工作流程中遇到的常见痛点以及概念和原型的潜在问题。


最后,在添加新功能或更改现有工作流程时,Shopify 会在整个过程中实施 用户体验研究分析


  • 更好地了解用户行为和期望

  • 在开发概念和原型时测试它们


当开发人员发布 PR 时,团队会单独考察开发人员的想法,了解他们都在考虑哪些内容,在制定决策时都有怎样的根据。团队会与设计师和撰稿人等用户交流,学习他们的日常工作流程,了解他们所依赖的工具和用法。公司会让实习生和新人测试产品原型,从中了解外部和新鲜视角的观点,并挑战原有的产品假设。


有了这些流程,企业就能在整个构建和发布过程中都能从真实用户那里获得一手反馈,进而打造更好的产品和服务。


反馈是一种礼物 在 Shopify 经常提到的一句话就是,反馈是一种礼物


评估软件发布文化的目的是创建一个反馈循环,让用户可以轻松谈论他们遇到了哪些障碍,收到反馈的开发团队会重视这些意见并尝试采取对策。


还有很重要的一点是,用户的反馈会让产品团队充满动力,即便反馈是负面的,这也是用户重视产品、希望产品变得更好的一种证明,这自然会鼓励团队,甚至让他们在面对困境时振作起来。用户希望自己的反馈能有价值,这是企业要给用户营造的氛围,企业的软件开发文化和工具链应该支持这种良性循环,让所有人都能从中获益。

Shopify 的软件发布流程

Shopify 的软件发布流程是怎样的形态,又有哪些可以改进的部分呢?

发布管道


发布管道路径


这就是 Shopify 发布管道的路径。一开始是拉取请求(PR),然后是持续集成(CI)/ 合并,接着是金丝雀部署,最后是生产发布。



PR 和 /shipit 命令


这套流程的第一步是开发人员创建 PR,然后在准备交付时发出一条 /shipit 命令。接下来,Merge Queue 系统会尝试将 PR 与主干 Master 集成起来。



PR 合并到 Master,金丝雀部署


当 Merge Queue 确定更改可以成功集成时,PR 就会合并到 Master,并部署到 Shopify 的金丝雀基础架构中。金丝雀环境会随机接收所有传入请求的 5%。



更改部署到生产环境


开发人员有一套工具,可以在金丝雀环境中测试更改 10 分钟的时间。如果没有手动干预,并且金丝雀自动分析不会触发任何警报,则更改将部署到生产环境中。

发布与恢复机制

每一位开发人员都希望能被信任,并对自己的工作拥有自主权。开发人员应该能控制自己 PR 的整个发布过程。



开发人员控制整个过程


在 Shopify 的软件发布流程中,开发人员能控制整个发布过程。这里不存在什么发布管理器、注销或者审核窗口。



限制不良更改爆炸半径的基础设施


然而是人就会犯错,出现问题是难免的,Shopify 当然也不例外。为此,公司建立了一套基础架构来限制不良更改的爆炸半径。最重要的是,企业相信每位开发人员都应该承担自己应负的责任,并且如果他们的更改捅了篓子,他们也应该能自己去恢复它。



开发人员可以使用 /shipit--emergency 命令快速跟踪修订


一旦准备好了修复程序(修复 - 转发或还原),开发人员就可以使用一条 /shipit --emergency 命令快速追踪整个修复进程。Shopify 没有那么多恢复协议,而只有一个 紧急状况 功能,这样就能让开发人员以最快的速度完成恢复操作。

快速发布

开发人员希望快速发布。



发布速度是大多数企业应用程序的一个关键要素。对于开发人员而言,如果能一天多次发布代码并立即将其发送给最终用户,就能极大提高生产力。但更重要的是,采用快速的发布流程可以带来同样快速的恢复流程。



为了真正加快发布过程,企业是需要投入资源和成本的。除了专门的基础架构团队,Shopify 还管理着自己的 CI 群集,容量高达数千个节点。

自动化

开发人员不想执行重复性的任务。计算机最擅长做重复工作,所以这类工作应该尽可能地自动化。Shopify 在诸如连续部署和金丝雀分析之类的地方实现了自动化。



在 Shopify,开发人员用不着按一个部署按钮,自动化流程会持续部署到金丝雀和生产环境。



自动化固然很棒,但是某些时候开发人员还是需要手动控制的。在紧急情况下,开发人员可以锁定自动部署并转为手动部署。


原文链接:


https://engineering.shopify.com/blogs/engineering/software-release-culture-shopify


2020-04-23 16:075788

评论

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

别划走!3分钟看懂 Git 底层工作原理

伤感汤姆布利柏

MySQL:从MySQL看主从架构高可用性实现

互联网工科生

MySQL 数据库

GeminiDB Cassandra接口新特性PITR发布:支持任意时间点恢复

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GeminiDB

奥特曼被指爱权力胜过金钱;人类才是「幻觉问题」根本原因丨 RTE 开发者日报 Vol.103

声网

Amazon CodeWhisperer 免费的 AI 代码生成助手!最新体验反馈~

亚马逊云科技 (Amazon Web Services)

人工智能 亚马逊云科技 云上探索实验室 Amazon CodeWhisperer

软件测试/人工智能丨成员运算符

测试人

人工智能 软件测试

推出 Amazon EC2 C7i 实例

亚马逊云科技 (Amazon Web Services)

机器学习 分布式 ebs

软件测试/人工智能丨身份运算符

测试人

人工智能 软件测试

龙智DevSecOps研讨会年终专场来了!龙智、Jama与清晖敏捷专家邀您共探如何打好DevOps基础、赋能创新

龙智—DevSecOps解决方案

和鲸科技携手深圳数据交易所,“数据+数据开发者生态”赋能人工智能产业发展

ModelWhale

人工智能 数据要素 数据科学家 工业数字化 深圳数据交易所

GitHubMySQL升级8.0复盘【译】

FunTester

INTO领航:2023社交变革峰会揭示数字社交的未来格局

极客天地

LED透明屏市场前景展望

Dylan

全球经济下行 中美贸易 LED LED显示屏 led显示屏厂家

寿光教育城乡一体化的秘诀,藏在“教育一朵云”里

脑极体

云平台

四川大学携手和鲸打造课内workshop,趣味实践教学助力数据思维培养

ModelWhale

Python 数据分析 人才培养 数据思维 四川大学

SVN优缺点详解及版本控制系统选型建议

龙智—DevSecOps解决方案

svn 版本控制

【FAQ】推送前台应用的通知处理功能没生效,如何进行排查?

HarmonyOS SDK

HMS Core

和鲸科技荣获第三届光合组织解决方案大赛集智赛道优秀奖

ModelWhale

人工智能 信创 数据科学 海光 光合组织

Blackhat Europe 2023 | 百度安全揭秘多平台NPU背后的安全风险

百度安全

CSS属性isolation,走过路过不要错过!

伤感汤姆布利柏

CSS 前端

在自动化测试时,Python常用的几个加密算法,你有用到吗

华为云开发者联盟

Python 开发 自动化测试 华为云 华为云开发者联盟

2023滨海湾人工智能论坛举办,范向伟代表和鲸科技共同发起成立工业智能算法联盟

ModelWhale

人工智能 算法 大模型 算料 滨海湾

揭秘Shopify的软件发布流程,如何做到合并上千程序员的工作?_软件工程_Jack Li_InfoQ精选文章