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
280
Five sharding data models and which is right? PGDay Nordic
craigkerstiens
0
180
Postgres at any scale
craigkerstiens
1
760
Five data models for sharding and which is right
craigkerstiens
0
120
Postgres Performance for Humans - All things Open
craigkerstiens
1
280
Postgres Performance for Humans - PyCaribbean
craigkerstiens
1
140
Postgres present and future
craigkerstiens
1
330
Marketing for Developers
craigkerstiens
0
220
Postgres – A Data Platform
craigkerstiens
2
440
Other Decks in Programming
See All in Programming
時計仕掛けのCompose
mkeeda
1
280
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
110
DROBEの生成AI活用事例 with AWS
ippey
0
130
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
480
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
200
CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜
nnaka2992
0
220
2,500万ユーザーを支えるSREチームの6年間のスクラムのカイゼン
honmarkhunt
6
5.1k
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
0
130
[JAWS-UG横浜 #79] re:Invent 2024 の DB アップデートは Multi-Region!
maroon1st
1
140
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
770
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
160
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
110
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
The Cult of Friendly URLs
andyhume
78
6.2k
Speed Design
sergeychernyshev
25
780
We Have a Design System, Now What?
morganepeng
51
7.4k
How to train your dragon (web standard)
notwaldorf
90
5.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
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