软广我的博客:http://allenlsy.com/airbnb-microservices-architecture
微信订阅号:网站架构札记
原文:From Monorail to Monorepo: Airbnb’s journey into Microservices
Airbnb 最开始是一个 single repo Ruby on Rails 项目。前端用过 backbone 和 react,后端有 Ruby 和 Java。
2014 年之前的 deployment workflow 是:
- Code review & CI
- merge to master
- staging, manual test
- production
用于支持 deploy 的内部项目:
- deployment dashboard
- SCRAM: rollback system, error tracking,类似于 bugsnag 和 honeybadger
- merge queue:确保 merge to master 是有序的


随着这个 single repo project 不断变大,Airbnb 开始采用 microservices architecture。
后端
- Airbnb 有 700+ 个 microservices
- synchronous communication 使用 thrift schema,比 json 的格式要求更严谨
- asynchronous communication 使用 kafka

架构中使用的工具
- service generation:用于新开一个 service。自带 thrift 配置
- 所有配置文件放在一个 repo
- deployment with Kubernetes
- microservice 测试工具
- infrastructure as code, using Kubernetes, Amazon EKS