在Lyft的微服务上提高生产力(第一部分)

Late in 2018, Lyft engineering completed decomposing our original PHP monolith into a collection of Python and Go microservices. A few years down the road, microservices had been largely successful in allowing teams to operate and ship services independently of one another. Separation of concerns that microservices brought about enabled us to experiment and deliver features faster–deploying hundreds of times each day–and provided us with the flexibility to use different programming languages where they work best, have stricter or looser requirements based on service criticality, and much more. However, as the number of engineers, services, and tests all increased, our development tooling struggled to keep up with an explosion of microservices, eroding much of the productivity gains we had strived for.
2018年底,Lyft工程部完成了将我们原来的PHP单体分解为Python和Go微服务的集合。几年下来,微服务在很大程度上成功地使团队能够独立操作和运送服务。微服务带来的关注点分离使我们能够更快地实验和交付功能--每天部署数百次,并为我们提供了灵活性,可以在最适合的地方使用不同的编程语言,根据服务的重要性有更严格或更宽松的要求,等等。然而,随着工程师、服务和测试数量的增加,我们的开发工具难以跟上微服务的爆炸性增长,侵蚀了我们所争取的大部分生产率的提高。
This four-part series will walk through the development environments that served Lyft’s engineering team as it grew from 100 engineers and a handful of services to 1000+ engineers and hundreds of services. We’ll discuss the scaling challenges that caused us to pivot away from most of those environments, as well as a testing approach based predominantly on heavy integration tests (often approaching end-to-end), in favor of a local-first approach centered on testing components in isolation.
本系列文章共分四部分,将介绍Lyft工程团队从100名工程师和少量服务发展到1000多名工程师和数百项服务时的开发环境。我们将讨论导致我们放弃大多数这些环境的扩展挑战,以及主要基于大量集成测试(通常接近端到端)的测试方法,而采用以隔离测试组件为中心的本地优先方法。
- Part One: History of development and test environments (this post)
- 第一部分:开发和测试环境的历史(本帖
- Part Two: Optimizing for fast local development
- 第二部分:为本地快速发展进行优化
- Part Three: Extending the service mesh in staging with overrides
- 第三部分。用覆盖来扩展阶段性的服务网状结构
- Part Four: Gating deployments with automated acceptance tests
- 第四部分。用自动验收测试为部署把关
History of development and test environments
开发和测试环境的历史
Our fi...