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
Djangocong Apps to Services
Search
Craig Kerstiens
April 14, 2012
Programming
5
690
Djangocong Apps to Services
Craig Kerstiens
April 14, 2012
Tweet
Share
More Decks by Craig Kerstiens
See All by Craig Kerstiens
Product planning w/ gridding - Effort vs. Impact rule of thirds
craigkerstiens
0
340
Five sharding data models and which is right? PGDay Nordic
craigkerstiens
0
220
Postgres at any scale
craigkerstiens
1
940
Five data models for sharding and which is right
craigkerstiens
0
170
Postgres Performance for Humans - All things Open
craigkerstiens
1
340
Postgres Performance for Humans - PyCaribbean
craigkerstiens
1
190
Postgres present and future
craigkerstiens
1
360
Marketing for Developers
craigkerstiens
0
280
Postgres – A Data Platform
craigkerstiens
2
510
Other Decks in Programming
See All in Programming
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
100
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
210
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
210
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
150
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
460
Windows on Ryzen and I
seosoft
0
410
AI 開発合宿を通して得た学び
niftycorp
PRO
0
180
飯MCP
yusukebe
0
390
Understanding Apache Lucene - More than just full-text search
spinscale
0
140
存在論的プログラミング: 時間と存在を記述する
koriym
5
540
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
130
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
170
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
The Language of Interfaces
destraynor
162
26k
A designer walks into a library…
pauljervisheath
210
24k
The Cult of Friendly URLs
andyhume
79
6.8k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
330
Fireside Chat
paigeccino
42
3.9k
Navigating Weather and Climate Data
rabernat
0
150
Become a Pro
speakerdeck
PRO
31
5.9k
Documentation Writing (for coders)
carmenintech
77
5.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
Typedesign – Prime Four
hannesfritz
42
3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
89
Transcript
Django Apps to Services
Craig Kerstiens @craigkerstiens work at @heroku
Project App A collection of configuration and apps for a
particular Website. (per Django Project) Django
Project App A collection of configuration and apps for a
particular Website. A web application that does something. I.e. Weblog, Poll, Ticket system (per Django Project) Django
Within Django
Project Within Django
Project App Within Django
Project App App Within Django
Project App App App Within Django
Project App App App Tickets FAQ FaqCreator Within Django
REUSABILITY means faster features due to DRY (Don’t Repeat Yourself)
REUSABILITY does not always mean SCALABILITY or MAINTAINABILITY
Project App A collection of configuration and apps for a
particular Website. A web application that does something. I.e. Weblog, Poll, Ticket system (per Django Project) Django
Project App A collection of configuration and apps for a
particular Website. A web application that does something. I.e. Weblog, Poll, Ticket system Django Service Method of communication over the web. Web APIs allow combination of multiple services
None
Tech imitate Teams Project App App App Tickets FAQ FaqCreator
Company Support Knowledge Base
App App Support Knowledge Base Teams Grow
App App Support Knowledge Base Billing Teams Grow
App App Support Knowledge Base Billing Marketing Teams Grow
App App Support Knowledge Base Billing Marketing Analytics Mobile API
Front End Social Teams Grow
App App App Support Knowledge Base Billing Apps Grow Marketing
Analytics Mobile API Front End Social 3 Apps
App App App Support Knowledge Base Billing Apps Grow App
App App Marketing Analytics Mobile App App App API Front End Social 9 Apps
Support Knowledge Base Billing Apps Grow Marketing Analytics Mobile API
Front End Social 9 Apps 1 Codebase
Defined contract for communicating Service
Defined contract for communicating Service $ curl -O $FAQ_API/create/ -X
“question=my\ question source=123”
In Python
In Python data = { ‘question’: “my question”, ‘source’: 123
} requests.POST(os.environ[‘FAQ_API’] + ‘/create/’, data=data)
None
Version Bump data = { ‘question’: “my question”, ‘source’: 123,
‘related’: [456, 789] } requests.POST(os.environ[‘FAQ_API’] + ‘/v2/create’, data=data)
Version Bump data = { ‘question’: “my question”, ‘source’: 123,
‘related’: [456, 789] } requests.POST(os.environ[‘FAQ_API’] + ‘/v2/create’, data=data)
Version Bump
Version Bump data = { ‘question’: “my question”, ‘source’: 123,
‘related’: [456, 789] } requests.POST(os.environ[‘FAQ_API’] + ‘/v2/create’, data=data) STILL VALID requests.POST(os.environ[‘FAQ_API’] + ‘/v1/create’, data=data)
Whats a service Provider API_HOST= http://127.0.0.1
Whats a service Provider Endpoint API_HOST= http://127.0.0.1 /v1/create/
Whats a service Provider Endpoint API_HOST= http://127.0.0.1 /v1/create/ Contract {
‘question’: ‘foo bar’, ‘source’: 123 }
Service App
Service App Models Views URLs Provider Endpoint Contract
A SERVICE means REUSABILITY and enables SCALABILITY and MAINTAINABILITY
A SERVICE means REUSABILITY and enables SCALABILITY and MAINTAINABILITY
Fin. Resources http://bit.ly/djangocong http://bit.ly/appstoservices http://www.12factor.net