Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scale-Oriented Architecture with Microservices
Search
John Sheehan
February 10, 2015
Technology
2
350
Scale-Oriented Architecture with Microservices
A look into how we've built Runscope using a microservice architecture.
John Sheehan
February 10, 2015
Tweet
Share
More Decks by John Sheehan
See All by John Sheehan
My Favorite API Tools (Other than Runscope)
johnsheehan
0
170
Crafting a Great Webhooks Experience
johnsheehan
2
530
Glue 2015: Microservices - More than just a buzzword.
johnsheehan
2
730
Crafting a Great Webhooks Experience
johnsheehan
0
190
The rise of distributed applications.
johnsheehan
2
460
Zen and the Art of API Maintenance
johnsheehan
2
2.4k
Building API integrations you can live with.
johnsheehan
0
120
Free API debugging and testing tools you should know about.
johnsheehan
5
850
Modern Tools for Modern Applications
johnsheehan
1
190
Other Decks in Technology
See All in Technology
アジャイル社内普及ご近所さんマップを作ろう / Let's create an agile neighborhood map
psj59129
1
130
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
4
1.4k
『HOWはWHY WHATで判断せよ』 〜『ドメイン駆動設計をはじめよう』の読了報告と、本質への探求〜
panda728
PRO
5
2.1k
Rubyist入門: The Way to The Timeless Way of Programming
snoozer05
PRO
7
510
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
8
4.4k
機密情報の漏洩を防げ! Webフロントエンド開発で意識すべき漏洩パターンとその対策
mizdra
PRO
10
3.6k
Lazy Constant - finalフィールドの遅延初期化
skrb
0
230
[mercari GEARS 2025] なぜメルカリはノーコードを選ばなかったのか? 社内問い合わせ工数を60%削減したLLM活用の裏側
mercari
PRO
0
130
ZOZOTOWNカート決済リプレイス ── モジュラモノリスという過渡期戦略
zozotech
PRO
0
430
LINEスキマニ/LINEバイトにおけるバックエンド開発
lycorptech_jp
PRO
0
290
Building AI Applications with Java, LLMs, and Spring AI
thomasvitale
1
150
今、MySQLのバックアップを作り直すとしたら何がどう良いのかを考える旅
yoku0825
2
420
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
KATA
mclloyd
PRO
32
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing for Performance
lara
610
69k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Transcript
Scale-oriented Architecture with APIs John Sheehan Co-founder, CEO @Runscope
Scale-oriented Architecture with APIs MICROSERVICES
API DEBUGGING API MONITORING FOR TEAMS
30,000+ developers use Runscope
MICROSERVICES at Runscope
MICROSERVICES = SOA + DevOps
If you don't invest in INFRASTRUCTURE don't invest in MICROSERVICES
In the beginning...
runscope.com Runscope URLs Identity Request Vault api.runscope.com Eventador Calculon Courier
Mission Control Passageway go-proxy Warp Pipe go-radar Events Auth Service File Cabinet Script Processor Atlas Archivist Prometheus Billing Scorekeeper
Today 40+ internal services 9 engineers
How micro should services be?
MICROSERVICES GOALS
Scaling the Stack GOAL #1
Independent Deployability
None
None
None
None
7,789 Deployments in 2014 31+ Per work day
Service-level Isolation
Independent Scalability
Network Resiliency
Scaling the Team GOAL #2
Network Mindset
Isolate Breakage
Human Modularity
Uniform Interface
Developer Experience
Smart Client
• Service discovery • service://identity/... • Retry failed GETs •
Run HTTP requests asynchronously • Log with Runscope Traffic Inspector Smart Client
url = "https://ec2-23-212-199-23.us-west-2.amazonaws.com" resp = requests.get(url) if resp.ok: return resp.json()
else: # retry? return None def get_user(id): def main(): user = get_user(id) print user["name"]
class Identity def get_user(id): url = "service://identity/users/" + id resp
= smart_client.get(url) if resp.ok: return User(resp.json()) return AnonymousUser() from Identity import get_user def main(): user = get_user(id) print user.name Auto-locate service Smart retries
Smart Service
• Built-in healthcheck/heartbeat endpoints • Automatic, realm-aware service registry •
Common logging and metrics framework • Simplified dependency management Smart Service
Testing & Monitoring
API Testing API Monitoring Functionality Availability Performance Correctness In Development
In Production "Transactions" "Endpoints"
Runscope Radar Functionality Availability Performance Correctness Any Environment API Testing
& Monitoring Transactions & Endpoints
Try Runscope, free. runscope.com Stop by our table for your
free t-shirt!