So you want to be a full-stack developer? How to build a full-stack python web application.

Kate Heddleston (resources on GitHub)

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
    • git, svn, etc.
  • SMTP server for sending emails
  • Asynchronous tasks + data store
    • Python-rq/Redis
    • Celery/RabbitMQ
    • Twisted
    • Tornado
  • Exception handling
    • emails!

Scaling; move everything to new servers!

  • Need to make network calls
  • May want to cache some database calls...
    • memcached, redis, etc.
  • Logging moves off...
  • Monitoring
    • New Relic, etc.
  • 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