Airbnb 的微服务架构

604 阅读1分钟
原文链接: mp.weixin.qq.com

原文:https://youtu.be/sakGeE4xVZs

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。

    • 拆分为 前端 和 后端 两个部分

    • 前端使用 react,但page 是使用 server side rendering 传回给前端的

    后端

    • 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