Python is often one part of a much larger system.
Topics to be covered
- A (semi) typical web application
- Dev, staging, production, deploy system
- Helpful python libraries
- Not going to be covered
- massively scalable web apps
- every single installation on the machine
- nitty gritty details of anything
There's a song!
Parts of a stack
- Operating system
- Web server
- Database
- Application language
Adding to the stack
- Logging
- small apps can just use log files on the server machine
- Version Control
- SMTP server for sending emails
- Asynchronous tasks + data store
- Python-rq/Redis
- Celery/RabbitMQ
- Twisted
- Tornado
- Exception handling
Scaling; move everything to new servers!
- Need to make network calls
- May want to cache some database calls...
- Logging moves off...
- Monitoring
- Load balancer to multiple web servers
- Database replications: master -> slave configuration
The system of systems
- different environments: dev, prod
Testing
- Jenkins, CircleCI, TravisCI
Multiple developers
- dev/dev/dev --> staging --> testing --> production
- want all envs to be the same
Server provisioning automation and deployment
- chef, puppet, ansible, etc.
Development environment automation
- virtualenv, vagrant/virtualbox
Hosting