Hear about how folks are running their web apps in production. We'll cover tech choices, why they chose them, lessons learned and more.
Brightpath Is a Formative School Assessment Tool
In this episode of Running in Production, Kye Russell goes over running a formative school assessment tool for 800+ schools in Australia. It’s built with Django and it’s been running in production since 2017 on AWS.
Kye is the solo developer on the project. It’s a monolith split across 10+ Django apps. They’ve gone all-in with a bunch of AWS services and Kye sticks to a number of best practices such as having tests, linting and using services to help keep things running smoothly.
Topics Include
- 7:04 – Motivation to rewrite the app in Django and Python
- 9:24 – The Django admin and having a monolith split into 10-15 Django apps
- 14:59 – About 50k lines of Python code, 10k of Django templates and 10k of JS
- 20:38 – Interesting Python / Django libraries used in the project
- 28:35 – Postgres as a main SQL DB and Redis for caching + SQS & Celery for bg jobs
- 32:24 – Docker is being used in development, nginx + uwsgi is being used too
- 35:24 – Going all-in with AWS for hosting and ISO 27001 compliance
- 45:35 – Dealing with a massive amount of user uploads, virus scanning, etc.
- 48:58 – Linting the code base with Black
- 50:28 – Deploying code with Fabric, the Python AWS SDK and baking AMIs
- 55:36 – Database backups, S3 is super reliable and CloudWatch alarms
- 59:40 – Using Sentry for error reporting and APM solutions
- 1:03:06 – Best tips? Use boring technology whenever you possibly can
- 1:05:15 – Kye has a site with 1 blog post and he’s also on Twitter
Links
📄 References- https://aws.amazon.com/compliance/iso-27001-faqs/
- https://en.wikipedia.org/wiki/Application_performance_management
- django →
- python →
- aws →
- backbone →
- cloudformation →
- cloudfront →
- cloudwatch →
- docker →
- nginx →
- postgres →
- rds →
- redis →
- route53 →
- s3 →
- sentry →
- ses →
- sns →
- sqs →
- ubuntu →
- webpack →
- https://github.com/pandas-dev/pandas
- https://github.com/numpy/numpy
- https://github.com/BetterWorks/django-impersonate
- https://github.com/encode/django-rest-framework
- https://bridgekeeper.leigh.party/
- https://github.com/celery/celery
- https://github.com/unbit/uwsgi
- https://github.com/psf/black/
- https://www.fabfile.org/
Support the Show
This episode does not have a sponsor and this podcast is a labor of love. If you want to support the show, the best way to do it is to purchase one of my courses or suggest one to a friend.
- Dive into Docker is a video course that takes you from not knowing what Docker is to being able to confidently use Docker and Docker Compose for your own apps. Long gone are the days of "but it works on my machine!". A bunch of follow along labs are included.
- Build a SAAS App with Flask is a video course where we build a real world SAAS app that accepts payments, has a custom admin, includes high test coverage and goes over how to implement and apply 50+ common web app features. There's over 20+ hours of video.