Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mesos at Yelp: Building a production ready PaaS.
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Rob Johnson
October 08, 2015
Programming
150
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mesos at Yelp: Building a production ready PaaS.
Rob Johnson
October 08, 2015
More Decks by Rob Johnson
See All by Rob Johnson
More bang for your buck: How Yelp autoscales Mesos & Marathon on AWS Spotfleet
robjohnson
0
31
PaaSTA - Yelp's Platform as a Service
robjohnson
0
93
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
残高管理から台帳サービスへの進化
artoy
1
200
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
The Rails Doctrine Decade
koic
2
590
APNsからLive Activityを開始する話
yumnumm
0
170
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
Workers Cache を知る
syumai
0
360
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
First, design no harm
axbom
PRO
2
1.3k
4 Signs Your Business is Dying
shpigford
187
23k
Thoughts on Productivity
jonyablonski
76
5.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Designing Experiences People Love
moore
143
24k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
How to build a perfect <img>
jonoalderson
1
6.1k
Transcript
Mesos at Yelp: Building a production ready PaaS Rob Johnson
[email protected]
/@rob_johnson_
- Rob Johnson - Operations Team at Yelp - Spend
most of my time working on PaaSTA Who Am I:
Yelp’s Mission: Connecting people with great local businesses.
Yelp Stats: As of Q2 2015 83M 32 68% 83M
PaaSTA
Yelp’s homegrown Platform- as-a-Service
What’s the problem we’re trying to solve here?
- Yelp’s monolith is ~3 million LoC (that’s just the
Python). * - Increasing number of developers. *as of 28/09/2015
- Code deployments become increasingly difficult to coordinate. - Surface
area for impact of a bug greatly increases.
What’s the solution?
SOA
Solves everything, right?
SOA: Round 1
- Statically defined list of hosts to deploy a service
on. - Operations handle deciding which hosts to deploy to.
- Manually configure Nagios for each service. - Manual deployment
system. Lots of rsync wrappers to push code around.
This doesn’t scale well.
PaaSTA
- Built on the shoulders of established tools. - ‘Glue
Code’ that coordinates these tools.
Components
Mesos
Marathon
Chronos (almost)
My work here is done, right?
Not Quite.
Services != Production
What makes a service production ready?
- easy deployment for developers
- easy deployment for developers - discovery
- easy deployment for developers - discovery - monitoring
- easy deployment for developers - discovery - monitoring -
highly available
- easy deployment for developers - discovery - monitoring -
highly available - operational support
- easy deployment for developers - discovery - monitoring -
highly available - operational support
Services at Yelp tend to be: - http api -
Python - uWSGI
We want to be stack agnostic; developers shouldn’t be constrained
by dependencies on a server.
- PaaSTA only runs Docker containers. - Developers own the
creation of the image.
PaaSTA currently has Java, Golang and Python apps in production.
PaaSTA provides tooling to automate the build and deployment of
images via Jenkins.
PaaSTA uses Git as its control plane.
git push make itest push to registry performance check deploy
to dev (repeat for each dev env) manual intervention prod
Once a given image is marked for deployment in production,
PaaSTA ‘bounces’ the app, gracefully upgrading the version.
- Reduces operational overhead of deploying service. - Removes bottleneck
of going through operations to deploy.
- easy deployment for developers - discovery - monitoring -
highly available - operational support
Smartstack
- Originally written by Airbnb - Yelp now has maintainers
working on it.
s2 s1 s3 s4 s2 s1 s3 s4 s2 s1
s3 s4 H H H S N N S S N ZK
s2 s1 s3 s4 s2 s1 s3 s4 s2 s1
s3 s4 H H H S N N S S N ZK
s2 s1 s3 s4 s2 s1 s3 s4 s2 s1
s3 s4 H H H S N N S S N ZK
s2 s1 s3 s4 s2 s1 s3 s4 s2 s1
s3 s4 H H H S N N S S N ZK
There’s no place like 127.0.0.1 169.254.255.254
Why Smartstack?
- ZK/synapse/nerve dying doesn’t wipe us out. - HAProxy has
its own health checking system we can fall back to.
- HAProxy is a proven load balancer and http proxy.
- We can use Smartstack with non-PaaSTA services.
Zero-downtime HAProxy reloads: http://bit.ly/1RsctGi
- easy deployment for developers - discovery - monitoring -
highly available - operational support
None
- API allows us to send event data. - Flexibility
to assign alerts to service authors, rather than forcing it on operations team.
$ cat monitoring.yaml -- team: search_infra notification_email:
[email protected]
page: true
runbook: 'y/rb-myservice' alert_after: 5m realert_every: 10m tip: 'The federator service is in the critical path for search, you should be fixing this'
./check_marathon_services_replication
./check_hung_setup_marathon_jobs
- easy deployment for developers - discovery - monitoring -
highly available - operational support
Yelp organises machines into latency zones.
Superregion Region Habitat
$ cat smartstack.yaml --- main: advertise: [superregion] discover: superregion proxy_port:
20603
By choosing a more specific latency zone, service owners optimize
for RTT over availability.
- By being aware of these latency zones, PaaSTA can
make smarter decisions on how to constrain applications.
Without this coupling, Marathon wouldn’t balance apps evenly amongst the
latency zones.
- easy deployment for developers - discovery - monitoring -
highly available - operational support
PaaSTA comes with a cli for managing PaaSTA services.
None
None
None
- easy deployment for developers - discovery - monitoring -
highly available - operational support
Questions?
@YelpEngineering YelpEngineers engineeringblog.yelp.com github.com/yelp