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
700
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Djangocong Apps to Services
Craig Kerstiens
April 14, 2012
More Decks by Craig Kerstiens
See All by Craig Kerstiens
Product planning w/ gridding - Effort vs. Impact rule of thirds
craigkerstiens
0
350
Five sharding data models and which is right? PGDay Nordic
craigkerstiens
0
240
Postgres at any scale
craigkerstiens
1
950
Five data models for sharding and which is right
craigkerstiens
0
180
Postgres Performance for Humans - All things Open
craigkerstiens
1
350
Postgres Performance for Humans - PyCaribbean
craigkerstiens
1
190
Postgres present and future
craigkerstiens
1
370
Marketing for Developers
craigkerstiens
0
290
Postgres – A Data Platform
craigkerstiens
2
520
Other Decks in Programming
See All in Programming
Datadog LLM Observabilityで実現する 安全なLLM Usage 管理
3150
0
130
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
150
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
250
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
Webフレームワークの ベンチマークについて
yusukebe
0
180
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
130
Lessons from Spec-Driven Development
simas
PRO
0
230
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
420
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
810
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
200
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
990
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Embracing the Ebb and Flow
colly
88
5.1k
It's Worth the Effort
3n
188
29k
GraphQLとの向き合い方2022年版
quramy
50
15k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Un-Boring Meetings
codingconduct
0
330
エンジニアに許された特別な時間の終わり
watany
107
250k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
240
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
The Cult of Friendly URLs
andyhume
79
6.9k
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