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
So you want to be a full-stack developer? How t...
Search
PyCon 2014
April 11, 2014
Programming
15
5.2k
So you want to be a full-stack developer? How to build a full-stack python web application by Kate Heddleston
PyCon 2014
April 11, 2014
Tweet
Share
More Decks by PyCon 2014
See All by PyCon 2014
Postgres Performance for Humans by Craig Kerstiens
pycon2014
29
3.7k
Technical Onboarding, Training, and Mentoring by Kate Heddleston and Nicole Zuckerman
pycon2014
1
2.4k
"My big gay adventure. Making, releasing and selling an indie game made in python." by Luke Miller
pycon2014
2
1.6k
Farewell and Welcome Home, Python in Two Genders by Naomi_Ceder
pycon2014
1
750
Deliver Your Software in an Envelope by Augie Fackler and Nathaniel Manista
pycon2014
1
560
Hitchhikers Guide to Free and Open Source Participation by Elena Williams
pycon2014
6
1.2k
Localization Revisted (aka. Translations Evolved) by Ruchi Varshney
pycon2014
0
710
Smart Dumpster by Bradley E. Angell
pycon2014
0
540
Software Engineering for Hackers: Bridging the Two Solitudes by Tavish Armstrong
pycon2014
0
750
Other Decks in Programming
See All in Programming
NixOS + Kubernetesで構築する自宅サーバーのすべて
ichi_h3
0
800
XP, Testing and ninja testing ZOZ5
m_seki
3
660
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
170
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3.4k
Claude Agent SDK を使ってみよう
hyshu
0
200
Catch Up: Go Style Guide Update
andpad
0
230
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
390
Leading Effective Engineering Teams in the AI Era
addyosmani
5
420
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
180
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
2
860
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
10
6.7k
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
1k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Context Engineering - Making Every Token Count
addyosmani
6
250
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Typedesign – Prime Four
hannesfritz
42
2.8k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Git: the NoSQL Database
bkeepers
PRO
431
66k
The Cult of Friendly URLs
andyhume
79
6.6k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Transcript
Full-stack Python Web Applications
Kate Heddleston @heddle317
Python is often one part of a much larger system.
None
What we’re going to talk about... 1. A (semi) typical
web application 2. Dev, staging, production, deploy system 3. Helpful python libraries
What we’re not going to talk about... • Massively scalable
web applications. • Every single installation on the machine. • Nitty gritty details of anything.
Web Application
Parts of a Stack 1. Operating System 2. Web Server
3. Database 4. Application Language
Web Server Apache mod_wsgi Application Code Python Application Code Python
Postgres Database Data
Web Server Apache mod_wsgi Application Code Python Postgres Database
Web Server Application Code Database
Web Server Nginx/ Gunicorn Apache/ mod_wsgi
Application Code Frameworks Python libraries Frontend Static Files (maybe)
Database PostgreSQL MySQL SQLServer Redis MongoDB
Web Server Application Code Database Logging
Logging Log files on the machine
Web Server Application Code Logging Version Control Database
Version Control git svn Github Bitbucket
Web Server Application Code Logging Version Control Database SMTP Server
SMTP Server PostmarkApp Sendgrid Amazon SES
Web Server Application Code Logging Version Control Database SMTP Server
Data Store Async Tasks
Async Frameworks Twisted Tornado Async Tasks Python-rq/Redis Celery/RabbitMQ
Web Server Application Code Logging Version Control Database SMTP Server
Data Store Async Tasks !Exception Handling!
!Exception Handling! Emails
Web Server Application Code Logging Version Control Database SMTP Server
Data Store Async Tasks !Exception Handling!
Web Server Application Code Logging Version Control Database SMTP Server
Data Store Async Tasks !Exception Handling!
Web Server Application Code Logging Version Control Database SMTP Server
Data Store Async Tasks !Exception Handling! Cache
Cache Memcached Redis Varnish
Web Server Application Code Logging Database Data Store Async Tasks
!Exception Handling! Cache Monitoring
Monitoring New Relic Nagios Pingdom
Web Server Application Code Logging Database Data Store Async Tasks
!Exception Handling! Cache
Web Server Application Code Logging Database Data Store Async Tasks
!Exception Handling! Cache
!Exception Handling! Emails Sentry
Web Server Application Code Logging Database Data Store Async Tasks
!Exception Handling! Cache
Logging Log Server Loggly Splunk
Web Server Application Code Logging Database Data Store Async Tasks
!Exception Handling! Cache
Web Server Application Code Database Data Store Async Tasks Cache
Web Server Application Code Cache Load Balancer
Logging !Exception Handling! Monitoring Version Control SMTP Server
Web Server Application Code Database Data Store Async Tasks Cache
Load Balancer Web Server Application Code Cache Data Store Async Tasks Database Database
System of Systems
Production (aka everything you just built) Dev Deploy
Dev Venv & Venvwrapper Vagrant & VirtualBox
Deploy git pull & restart services
Deploy Production (aka everything you just built) Dev Testing
Testing Jenkins CircleCI TravisCI
Deploy Production Dev Testing Staging Dev Dev
Server Config Chef Puppet Ansible SaltStack Docker
Deploy Chef Puppet Ansible SaltStack Docker
Dev Venv & Venvwrapper Vagrant & VirtualBox
Deploy Production Dev Testing Staging Dev Dev Deploy Production Dev
Testing Staging Dev Dev
Hosting AWS Rackspace Linode
Chef Repo for a Web Application https://github.com/heddle317/django-chef-application
PaaS Heroku Elastic Beanstalk
Resources Maps https://github.com/heddle317/full-stack- resources/tree/master/resources_maps
None
None
None
Talk Maps https://github.com/heddle317/full-stack- resources/tree/master/talk_maps
None
None
None
None
3 Takeaways • What are the basic pieces of a
full-stack. • What do these pieces look like in different environments. • Resources for learning more and working with these pieces.
Ask your questions now. Kate Heddleston @heddle317 https://github.com/heddle317/full-stack-resources
“A complex system that works is invariably found to have
evolved from a simple system that works.” — John Gall, Systemantics (1975)
“A system is never finished being developed until it ceases
to be used.” — attributed to Gerald M. Weinberg
“It is as if perfection be attained not when there
is nothing more to add, but when there is nothing more to take away.” — Antoine de Saint-Exupéry, Terre des Hommes (1939)
“There is no such thing as a small change to
a large system.” — systems folklore, source lost in the mists of time
“Everything should be made as simple as possible, but no
simpler.” — commonly attributed to Albert Einstein; it is actually a paraphrase of a comment he made in a 1933 lecture at Oxford