在Lyft的持续部署
Continuous Deployment (CD) is when software changes, such as new features and fixes, are automatically deployed to our customers as quickly and safely as possible. At Lyft, we pride ourselves on “making it happen”, so in 2019 we set out to move from our manual deployment process to CD. The microservice architecture at Lyft made our path to CD challenging, as adoption required changing how each team maintained and deployed their services. Not only did we have to make configuration changes to each service, but most importantly we had to drive cultural changes in how each team approached and performed their deployments. We recently hit a new milestone of 90+% of our approximately 1,000 services using CD to deploy to production. We would like to share the journey, technical details, and challenges we faced.
持续部署(CD)是指软件变化,如新功能和修复,尽可能快速、安全地自动部署给我们的客户。在Lyft,我们以 "让它发生"为荣,所以在2019年,我们开始从手动部署流程转向CD。Lyft的微服务架构使我们的CD之路充满挑战,因为采用这种架构需要改变每个团队维护和部署服务的方式。我们不仅要对每个服务进行配置修改,最重要的是我们必须推动每个团队在对待和执行部署方面的文化变化。我们最近达到了一个新的里程碑,在我们大约1000个服务中,90%以上的服务使用CD来部署到生产中。我们想分享一下我们的历程、技术细节和面临的挑战。
Background of Deployments at Lyft
在Lyft部署的背景
Each project at Lyft gets its own repository with a file that defines infrastructure metadata. This file includes a description of the deployment pipeline for that project. For example (some details omitted for simplicity):
Lyft的每个项目都有自己的资源库,其中有一个文件定义了基础设施元数据。这个文件包括对该项目部署管道的描述。例如(为简单起见省略了一些细节)。
The above yields a pipeline in Jenkins that would look like this with the Jenkins pipeline plugin:
以上产生的Jenkins中的管道,在Jenkins管道插件中会是这样的。
Jenkins Deploy Pipeline
Jenkins部署管道
Previously, the process for deploying a project required the owning team to manually start a new pipeline and run each step. This wasted engineering time and added cognitive overhead of monitoring deployments while trying to get other work done. Because this process was manual, it was common for commits to be batched up, which required a lot of coordination on Slack during the rollout and made it harder to determine which commit caused an issue. Manual depl...