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
240
Five sharding data models and which is right? PGDay Nordic
craigkerstiens
0
160
Postgres at any scale
craigkerstiens
1
660
Five data models for sharding and which is right
craigkerstiens
0
100
Postgres Performance for Humans - All things Open
craigkerstiens
1
240
Postgres Performance for Humans - PyCaribbean
craigkerstiens
1
120
Postgres present and future
craigkerstiens
1
330
Marketing for Developers
craigkerstiens
0
190
Postgres – A Data Platform
craigkerstiens
2
430
Other Decks in Programming
See All in Programming
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
190
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
スクラムマスターって孤独じゃないですか?
yoshitaroyoyo
1
140
CSC307 Lecture 13
javiergs
PRO
0
150
英語
s_shimotori
1
220
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
81k
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
GraphQL はいいぞ! ~Laravel で学ぶ GraphQL 入門~
azuki
1
160
SRE チーム立ち上げ前に考えたこと・取り組んだこと / Considerations and Preparations Before Establishing an SRE Team
mackey0225
3
320
3 Effective Rules for Success with Signals in Angular
manfredsteyer
PRO
0
120
MIERUNE BBQにおけるユーザー中心設計()
mierune
PRO
1
110
Android開発者のための Kotlin Multiplatform入門
ntaro
0
190
Featured
See All Featured
What the flash - Photography Introduction
edds
65
11k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Side Projects
sachag
451
42k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
34
1.9k
Building Flexible Design Systems
yeseniaperezcruz
323
37k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
Writing Fast Ruby
sferik
623
60k
Clear Off the Table
cherdarchuk
89
320k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
Web Components: a chance to create the future
zenorocha
307
41k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
52k
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