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
670
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
250
Five sharding data models and which is right? PGDay Nordic
craigkerstiens
0
160
Postgres at any scale
craigkerstiens
1
690
Five data models for sharding and which is right
craigkerstiens
0
100
Postgres Performance for Humans - All things Open
craigkerstiens
1
250
Postgres Performance for Humans - PyCaribbean
craigkerstiens
1
130
Postgres present and future
craigkerstiens
1
330
Marketing for Developers
craigkerstiens
0
200
Postgres – A Data Platform
craigkerstiens
2
430
Other Decks in Programming
See All in Programming
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
370
Kotlin 2.0 and Beyond
antonarhipov
2
150
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
960
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
0
520
o1モデルのプロンプトエンジニアリングって?
ktc_wada
0
150
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
420
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
270
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
140
マルチモジュールにおけるテスト最適化
fxwx23
0
210
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
170
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
540
GenU導入でCDKに初挑戦し、悪戦苦闘した話
hideg
0
160
Featured
See All Featured
Visualization
eitanlees
142
15k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
Design by the Numbers
sachag
277
19k
Become a Pro
speakerdeck
PRO
22
4.9k
GitHub's CSS Performance
jonrohan
1029
450k
Automating Front-end Workflow
addyosmani
1365
200k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
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