Airbnb Architecture Explained: How Airbnb Moved from a Rails Monolith to Services on AWS
Short answer: Airbnb runs on AWS. It started as a Ruby on Rails monolith called "Monorail", then moved step by step to a service-oriented architecture (SOA), with services running on Kubernetes on AWS. Early on Airbnb moved its MySQL database to Amazon RDS and stores user photos in Amazon S3. Airbnb also created and open-sourced Apache Airflow for data pipelines and SmartStack for service discovery.
Suppose you search Airbnb for a stay in Goa
You open Airbnb, type "Goa", pick dates for a weekend and tap Search. You see a map, photos, prices and reviews, and then you book. Behind the screen, in simple terms:
- Your app sends the search to Airbnb's servers on AWS; a load balancer receives it.
- An API gateway routes the request to the right backend services.
- Separate services handle search, listing details, pricing, availability and reviews.
- Listing and booking data is read from MySQL databases (Airbnb moved MySQL to Amazon RDS).
- Listing photos load from Amazon S3.
- When you book, payment and reservation services do their parts, and data pipelines (scheduled by Airflow) later use this data for analytics and search ranking.
What architecture style does Airbnb use?
Airbnb's architecture story is a famous "monolith to services" migration.
- Today (2025): Airbnb's core key-value store Mussel was rebuilt as Mussel v2, with a NewSQL backend and a stateless Dispatcher service on Kubernetes, giving p99 reads under 25 ms even for 100 TB+ tables (2025).
- How it started, Monorail (the monolith): Airbnb's first app was one big Ruby on Rails application. As teams grew, deployments clashed and one bug could affect everyone.
- Service-oriented architecture: Airbnb split business logic into separate services with clear owners, using standard service tooling and Thrift-based service interfaces (Building Services at Airbnb series).
- Gradual migration: Monorail was slowly reduced to routing and views while logic moved into services.
- Kubernetes on AWS: services moved from plain EC2 to Kubernetes clusters on AWS; Airbnb has written about dynamically scaling those clusters.
- Service discovery: in 2013 Airbnb open-sourced SmartStack (Nerve and Synapse, using ZooKeeper and HAProxy) so services could find healthy instances of each other.
Airbnb architecture diagram (public parts)
This diagram shows only what Airbnb or its partners have shared publicly. Press Play to follow a request step by step.
- You search for a stay in Goa.
- Load balancers receive your request on AWS.
- The API gateway sends it to search, listing and pricing services.
- Hot data is served from caches.
- Listings and bookings are read from MySQL on RDS.
- Photos load from Amazon S3.
- Services find each other through service discovery.
- Booking data flows into Airflow-scheduled data pipelines.
- Results with photos and prices appear on your screen.
What does Airbnb use? Main technologies
| Layer | What Airbnb uses (public) | What it does in simple words |
|---|---|---|
| Original app | Ruby on Rails monolith ("Monorail") | The first version of Airbnb |
| Architecture now | Service-oriented architecture | Many owned services |
| Containers | Kubernetes on AWS | Runs and scales the services |
| Database | MySQL on Amazon RDS | Listings, users, bookings |
| Files | Amazon S3 | Photos, static files, backups |
| Service discovery | SmartStack (Nerve + Synapse) | Finds healthy service instances |
| Data pipelines | Apache Airflow (created at Airbnb) | Schedules data jobs |
| Big data | Hive, Spark, Presto; Amazon EMR earlier | Analytics and machine learning |
Which cloud provider does Airbnb use?
Airbnb uses AWS. Airbnb's early setup used
- Amazon EC2 for application, cache and search servers.
- Elastic Load Balancing to spread traffic.
- Amazon EMR to process data.
- Amazon S3 for backups, static files and user photos.
- The main MySQL database moved to Amazon RDS, with Multi-AZ, with only about 15 minutes of downtime during the move.
Later, Airbnb moved to running services on Kubernetes clusters on AWS.
What is Apache Airflow and why did Airbnb build it?
In 2015 Airbnb open-sourced Airflow, a platform to write, schedule and monitor data pipelines as code (in Python). Airbnb uses Airflow for:
- Data warehousing: cleaning and publishing data.
- Growth analytics and A/B experiment results.
- Email targeting.
- Search ranking metrics.
- Data infrastructure maintenance (cleanup, retention).
Today Airflow is an Apache project used by thousands of companies, and AWS even offers it as a managed service (Amazon MWAA).
How does Airbnb store data?
- MySQL on Amazon RDS for core data.
- Amazon S3 for photos, static files and backups; Airbnb also uses S3 for long-term storage of data retired from HDFS.
- A data warehouse built on Hive, with Spark and Presto for processing.
- The current exact database mix across all services is not publicly shared.
How does Airbnb monitor its systems?
- Every Airbnb HTTP app exposes a /health endpoint, and SmartStack's Nerve removes unhealthy backends automatically.
- Airflow gives a web UI to monitor data pipelines.
- The full current metrics and alerting stack is not publicly shared in detail.
If we built an app like Airbnb on AWS (illustrative)
Please read this first
This section is a learning design by Ravindra Bagale. It is not Airbnb's real setup. Airbnb does run on AWS, but its real setup is far larger and uses its own tools. We use AWS here because it is what you learn in the AWS course.
Suppose you want to build "KokanStay", a homestay booking app for the Konkan coast. Here is a simple AWS layout.
1. Network: VPC, subnets, route tables, gateways
- Create one VPC with CIDR
10.0.0.0/16in the Mumbai region (ap-south-1). - Use two Availability Zones (A and B), so one AZ failing does not stop the app.
- In each AZ make three subnets: public (load balancer, NAT gateway), private app (your code) and private data (databases, cache).
- Attach one internet gateway (IGW) to the VPC. Public route table:
0.0.0.0/0 → IGW. This route is what makes a subnet public. - Private app route table:
0.0.0.0/0 → NAT gateway, so servers can download updates but nobody can connect in from the internet. - Private data route table: only the local VPC route. Use VPC endpoints to reach S3, DynamoDB and SQS without going over the internet.
2. Compute: where the code runs
- ALB in both public subnets.
- Start with one well-structured app; split out search, booking and payments into services on EKS as the team grows (Airbnb's path).
- Background workers read SQS for emails and reminders.
- Schedule nightly data jobs with Amazon MWAA (managed Airflow).
3. Storage and databases
- S3 + CloudFront for listing photos.
- Aurora MySQL for listings, users and bookings (Multi-AZ).
- DynamoDB for availability calendars.
- ElastiCache for popular search results.
4. Monitoring
- A /health endpoint on every service, used by ALB health checks.
- CloudWatch alarms on booking errors and latency.
- X-Ray to trace a booking across services.
Request flow diagram
Press Play. The numbered list below the diagram lights up with each step.
- You open KokanStay. Route 53 finds the address.
- Listing photos load from CloudFront.
- On a miss, CloudFront fetches photos from S3.
- Your search enters the VPC through the internet gateway.
- The ALB sends it to a healthy pod.
- Booking services on EKS handle search and booking.
- Popular searches come from ElastiCache.
- Listings from Aurora; free dates from DynamoDB.
- A booking email job goes to SQS.
- CloudWatch and X-Ray record it all.
- Your results and booking confirmation appear.
Airbnb versus our AWS design
| Part | Airbnb (public info) | Our AWS design |
|---|---|---|
| Cloud | AWS | AWS |
| Start | Rails monolith (Monorail) | One app first |
| Now | Services on Kubernetes | Services on EKS when needed |
| Database | MySQL on RDS | Aurora MySQL |
| Photos | S3 | S3 + CloudFront |
| Data pipelines | Airflow (built by Airbnb) | Amazon MWAA |
| Discovery | SmartStack | Kubernetes services / ALB |
Quick quiz: check what you learned
What was Airbnb's original monolith called?
- Monorail
- Obidos
- Borg
- Gondola
Show answer
A. The Rails monolith was called Monorail.
Where did Airbnb move its MySQL database?
- Google Cloud SQL
- Amazon RDS
- Azure SQL
- Oracle Cloud
Show answer
B. MySQL moved to Amazon RDS.
What is Apache Airflow used for?
- Serving listing photos
- Encrypting payments
- Scheduling data pipelines
- Balancing web traffic
Show answer
C. Airflow schedules and monitors data pipelines.
What does SmartStack help services do?
- Store photos in S3
- Write Ruby code faster
- Run SQL on Presto
- Find healthy services
Show answer
D. SmartStack handles service registration and discovery.
Learn it properly
Build the AWS parts yourself with these free guides and lessons:
- How to create a custom VPC with subnets, internet gateway and route tables
- Public vs private subnet in AWS · 3-tier architecture project on AWS
- How to launch an EC2 instance · Install the CloudWatch agent on EC2
- AWS course: What is a VPC? Default VPC vs custom VPC
- Related architectures: Facebook Architecture Explained: Meta Data Centres, TAO and MySQL · WhatsApp Architecture Explained: Erlang, Encryption, Meta Servers · YouTube Architecture Explained: Google Data Centres, VCU, Vitess · Spotify Architecture Explained: Google Cloud, Kubernetes, Bigtable
- All famous app architectures explained