Video and slides synchronized, mp3 and slide download available at URL https://bit.ly/2Ukrguu.
Jessica Tai provides an overview of trade-offs and motivation for the SOA migration. She discusses Airbnb’s architectural tenets around service building and dives deep into lessons learned and best practices developed when undertaking the massive SOA challenge. Filmed at qconsf.com.
Jessica Tai has worked at Airbnb for 4 years, starting as a full-stack product engineer for the guest and host booking flow and is now an infrastructure engineer on the Core Services team. She leads the user data service, which is one of Airbnb’s highest QPS services and integrates with all business verticals. She is a member of Leadership & Development committee for women in tech at Airbnb.
2. InfoQ.com: News & Community Site
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
airbnb-soa-migration
3. Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
4.
5. Life with monolith Growing pains
Service design
principles
Migration to services
Best practices Results
6. Life with monolith Growing pains
Service design
principles
Migration to services
Best practices Results
7. Life with monolith Growing pains
Service design
principles
Migration to services
Best practices Results
8. Life with monolith Growing pains
Service design
principles
Migration to services
Best practices Results
9. Life with monolith Growing pains
Service design
principles
Migration to services
Best practices Results
10. Life with monolith Growing pains
Service design
principles
Migration to services
Best practices Results
45. Servicetypes
STRICT FLOW OF DEPENDENCIES
Presentation service
Data service
Database
Derived data service
Derived data
store
Own reads & writes
to data entities
Shared business
logic to disparate
data sources
Synthesize data
from services for
end users
Middletier
Shared
validation
logic
API traffic
46. Checkoutpage
Checkout page
presentation service
Reservation data
service
Reservation
database
Home demand
derived data service
Offline booking
trend stats
Reservationvalidation
middle-tierservice
Home data service
Home
database
Write
Read
API traffic
59. Writecomparison
DUAL WRITE TO SEPARATE DATABASES
Presentation service
Production
database
Shadow
database
Write validation
middle tier service
Write path A
Write path B
Reads
Monolith
70. Service
Service&clientsetup
Business logic
Server metrics
Server
diagnostics
Startup /
teardown
Endpoint logic
Metrics
Data
validation
Server
transport
Server
resilience
Java client
Ruby client
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Type
checking
71. Service
Endpoint logic
Service&clientsetup
Business logic
Server metrics
Server
diagnostics
Startup /
teardown
Dashboard
Dashboard
Alert
Alert
Alert
Runbook
documentation
Metrics
Data
validation
Server
transport
Server
resilience
Java client
Ruby client
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Type
checking
72. Service
Endpoint logic
Service&clientsetup
Business logic
Server metrics
Server
diagnostics
Startup /
teardown
Dashboard
Dashboard
Alert
Alert
Alert
Runbook
documentation
Metrics
Data
validation
Server
transport
Server
resilience
Java client
Ruby client
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Type
checking
74. IDL
Service
Endpoint logic
Business logic
Server metrics
Server
diagnostics
Startup /
teardown
Dashboard
Dashboard
Alert
Alert
Alert
Runbook
documentation
Metrics
Data
validation
Server
transport
Server
resilience
Java client
Ruby client
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Metrics
Client
transport
Data
validation
Error
handling
Resilience
Type
checking
75. Codingservices
BEFORE AFTER
! Difficult to create and
maintain services
! Custom Java vs. Ruby clients
! Autogenerated code
framework & API
! Automated ruby gem client
76. ThriftIDL
API FRAMEWORK
/* Batch request */
struct LoadSomeDataRequest {
1: optional set<i64> ids (non_null)
2: optional bool fooBar
}
/* id to data response */
struct LoadSomeDataResponse {
1: optional map<i64, SomeData> data
}