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
Service Oriented Architecture Vs Monolithasaurus
Search
Joe Roberts
June 06, 2013
Programming
5
170
Service Oriented Architecture Vs Monolithasaurus
SOA
Joe Roberts
June 06, 2013
Tweet
Share
More Decks by Joe Roberts
See All by Joe Roberts
Discovering Go
zefer
0
81
Other Decks in Programming
See All in Programming
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.3k
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
230
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
7
1.8k
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
220
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
760
新世界の理解
koriym
0
130
自作OSでDOOMを動かしてみた
zakki0925224
0
190
ソフトウェア設計とAI技術の活用
masuda220
PRO
26
7.3k
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
41
16k
Workers を定期実行する方法は一つじゃない
rokuosan
0
140
リッチエディターを安全に開発・運用するために
unachang113
1
350
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
490
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
We Have a Design System, Now What?
morganepeng
53
7.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
Optimizing for Happiness
mojombo
379
70k
Become a Pro
speakerdeck
PRO
29
5.5k
Site-Speed That Sticks
csswizardry
10
750
The Language of Interfaces
destraynor
158
25k
Navigating Team Friction
lara
188
15k
Scaling GitHub
holman
461
140k
4 Signs Your Business is Dying
shpigford
184
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
How STYLIGHT went responsive
nonsquared
100
5.7k
Transcript
service oriented architecture
None
service oriented architecture
None
None
None
Working memory
None
None
None
None
None
None
Fight back! - Solid OO techniques - Refactoring - Paying
back technical debt - Test driven development - Continuous integration
Easy to change
Service Oriented Architecture
SOA Build applications out of smaller ones
Services = HTTP =
REST + Message queues
REST
Message queues SQS, RabbitMQ, ActiveMQ, Resque, etc
OO principles - Single responsibility - Loose coupling - Cohesion
- Encapsulation
Real world? There are no rules
auth users front-end blog social reviews recommendations stock shipping payments
tags baskets history
Online record shop
None
Extract functionality into services
None
Reviews Recommendations Product info Stock levels
reviews-service REST + JSON
reviews-service GET /reviews/id POST /reviews PATCH /reviews/id DELETE /reviews/id
reviews-service GET /reviews/id { json }
reviews-service POST /reviews { json }
reviews-service { json } BONUS: Client-side rendering!
reviews-service application/json text/html
Isolated
Reusable
Interoperable
Agile
Scalable
Robust
Shipping
shipping-service
Shop Shipping-service Message queue { order details }
/api/shippings
Isolated Reusable Interoperable Agile Scalable Robust
None
hydra.io API for building & profiting from digital image apps
/uploads /products /orders /artworks image processing hydra.io
/uploads /products /orders /artworks image processing hydra.io
/uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3
hydra.io
/uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3
hydra.io
/uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3
message queue (resque) hydra.io
/uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3
message queue (resque) hydra.io
/uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3
message queue (resque) hydra.io
/uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3
message queue (resque) hydra.io
api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io
proxy (HAProxy) /uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3 message queue (resque) hydra.io
api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io
proxy (HAProxy) /uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3 message queue (resque)
admin tools api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io proxy
(HAProxy) api.hydra.io proxy (HAProxy) /uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3 message queue (resque)
admin tools api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io proxy
(HAProxy) api.hydra.io proxy (HAProxy) /uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3 message queue (resque)
admin tools backbone.js hydra gem api.hydra.io proxy (HAProxy) api.hydra.io proxy
(HAProxy) api.hydra.io proxy (HAProxy) api.hydra.io proxy (HAProxy) /uploads /products /orders /artworks image processing MongoDB MongoDB MongoDB S3 message queue (resque)
Small, sharp tools
SOA is Lego for developers
Change is easy Change is hard
Prefactoring Draw pictures & simplify
When to extract into services? Mature functionality
Environments Staging
http://12factor.net/ Deployments
Caching at every layer Performance
- Test in isolation - Integration tests Testing
Everything Automate
Warning! Polyglot?
Reuse & Consistency
Nooo! Centralised Database
Keep checking the big picture
/api/v2/gorillas Versioning
Parallel HTTP requests
Small steps
Conclusions
1. Discipline pays
2. Minimise coupling
3. Small services
4. Reduce complexity
5. Check the big picture
START SMALL STAY SMALL
The future
None
None