Full-stack Python Web
Applications
Kate Heddleston
@heddle317
Python is often one part of a much larger system.
What were going to talk about...
1. A (semi) typical web application
2. Dev, staging, production, deploy system
3. Helpful python libraries
What were 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.
2.
3.
4.
Operating System
Web Server
Database
Application Language
Web
Server
Apache
mod_wsgi
Application
Code
Python
Application
Code
Python
Postgres Database
Data
Web
Server
Application Code
Apache
mod_wsgi
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
Logging
Database
Application
Code
Logging
Log files on the
machine
Web
Server
Logging
Database
Application
Code
Version Control
Version
Control
git
svn
Github
Bitbucket
Web
Server
Logging
Database
Application
Code
Version Control
SMTP Server
SMTP Server
PostmarkApp
Sendgrid
Amazon SES
Web
Server
Logging
Database
Application
Code
Async Tasks
Data Store
Version Control
SMTP Server
Async Tasks
Python-rq/Redis
Celery/RabbitMQ
Async Frameworks
Twisted
Tornado
Web
Server
Logging
Database
Application
Code
!Exception
Handling!
Async Tasks
Data Store
Version Control
SMTP Server
!Exception
Handling!
Emails
Web
Server
Logging
Database
Application
Code
!Exception
Handling!
Async Tasks
Data Store
Version Control
SMTP Server
Web
Server
Logging
Application
Code
!Exception
Handling!
Database
Async Tasks
Data Store
Version Control
SMTP Server
Web
Server
Logging
Cache
Application
Code
!Exception
Handling!
Database
Async Tasks
Data Store
Version Control
SMTP Server
Cache
Memcached
Redis
Varnish
Web
Server
Logging
Cache
Application
Code
!Exception
Handling!
Database
Async Tasks
Data Store
Monitoring
Monitoring
New Relic
Nagios
Pingdom
Web
Server
Logging
Cache
Application
Code
Database
!Exception
Handling!
Async Tasks
Data Store
Web
Server
Logging
Cache
Application
Code
Database
!Exception
Handling!
Async Tasks
Data Store
!Exception
Handling!
Emails
Sentry
Web
Server
Cache
Application
Code
Database
!Exception
Handling!
Logging
Async Tasks
Data Store
Logging
Log Server
Loggly
Splunk
Web
Server
Cache
Application
Code
Database
!Exception
Handling!
Logging
Async Tasks
Data Store
Web
Server
Application
Code
Cache
Database
Load
Balancer
Web
Server
Application
Code
Cache
Async Tasks
Data Store
Version Control
SMTP Server
Monitoring
!Exception
Handling!
Logging
Web
Server
Application
Code
Cache
Database
Load
Balancer
Database
Web
Server
Application
Code
Cache
Database
Async Tasks
Async Tasks
Data Store
Data Store
System of
Systems
Production
(aka everything you just
built)
Deploy
Dev
Dev
Venv & Venvwrapper
Vagrant & VirtualBox
Deploy
git pull
&
restart
services
Production
(aka everything you just
built)
Deploy
Testing
Dev
Testing
Jenkins
CircleCI
TravisCI
Production
Deploy
Testing
Staging
Dev
Dev
Dev
Server Config
Chef
Puppet
Ansible
SaltStack
Docker
Deploy
Chef
Puppet
Ansible
SaltStack
Docker
Dev
Venv & Venvwrapper
Vagrant & VirtualBox
Production
Deploy
Testing
Staging
Dev
Dev
Dev
Production
Deploy
Testing
Staging
Dev
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-stackresources/tree/master/resources_maps
Talk Maps
https://github.com/heddle317/full-stackresources/tree/master/talk_maps
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-Exupery, 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