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
Building Composable Services
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Noah Kantrowitz
July 20, 2014
Technology
66
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Building Composable Services
Noah Kantrowitz
July 20, 2014
More Decks by Noah Kantrowitz
See All by Noah Kantrowitz
Fine Print: Intellectual Property for Engineers
coderanger
0
27
Fine Print: Intellectual Property for Engineers (with notes)
coderanger
0
61
I Am Bad At Things
coderanger
0
33
I Am Bad At Things (with notes)
coderanger
0
81
The Long Hello World
coderanger
0
51
The Long Hello World (with notes)
coderanger
0
200
What Python Can Learn From Other Languages
coderanger
0
110
What Python Can Learn From Other Languages (with notes)
coderanger
0
290
Swiss Army Django: Small Footprint ETL (with notes) - DjangoCon US
coderanger
0
440
Other Decks in Technology
See All in Technology
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
顧客合意を取りながら進めるAWSコスト削減の実践
optim
0
150
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
180
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
220
「いつか使う」の「いつか」は来ない 〜AI駆動開発における「作らない」判断について〜
ikki0006
0
170
Cloudflareの向き先
chimame
1
150
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
290
HQ駆動開発で最高のAI-Contextを作ろう
sansantech
PRO
1
120
現場を動かすAIエージェント#2_製造業現場でのAI活用から見た、ハマる罠と実践知
kintotechdev
2
210
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
300
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
250
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
240
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
650
Practical Orchestrator
shlominoach
192
12k
Rails Girls Zürich Keynote
gr2m
96
14k
Building Adaptive Systems
keathley
44
3.3k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
670
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3.1k
A Tale of Four Properties
chriscoyier
163
24k
Balancing Empowerment & Direction
lara
6
1.4k
Done Done
chrislema
187
17k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.7k
Transcript
Building Composable Services Noah Kantrowitz
What? Why? How? Perils? Press Start
What? World 1-1
What is a Function?
f(x, y) = z
What is Idempotence?
f(x) = f(f(x))
What is Composable?
f(x) g(x) f(g(x))
req_user(x) user_id(x) user_id(req_user(x))
post('http://login') get('http://search')
Why? World 1-2
Availability
Scaling
Testing
Logistics
How? World 1-3
Frameworks Storage Rich Data Discovery Resilience Containers Level Up Select
a Skill
µ-frameworks
Flask (Python) Sinatra (Ruby) Express (JavaScript)
ZeroMQ nanomsg ProtoBufs Cap'nProto
Data Storage (aka state)
AP Database
Cache is the enemy
Rich Data {id: me, cart: http...}
Hypermedia APIs
Service Discovery
Self-Organization
DNS nslookup('login')
ZooKeeper CP Database
Etcd Serf Consul Archaius
Resilience
Timeouts Idempotent Retries
post('chpw', nonce: 314)
Any service can be down
Async Messaging Queues
AMQP Kafka
Containers
Less RAM Less Problems
LXC Jails Zones Docker/Mesos
Security Isolation
Immutable Deployment
Logical Boundaries
Perils? World 1-4
Cascade Failures
Poor Visibility
Health & Metrics Central Logging Dashboards
Complex Deployments
Minimalist Self-organizing Fault-tolerant
Thank You
Noah Kantrowitz @kantrn coderanger.net Questions?