Hear about how folks are running their web apps in production. We'll cover tech choices, why they chose them, lessons learned and more.
Muze Is a Freeform iOS Chat Application
In this episode of Running in Production, Dash Winterson talks about building a new type of chat app for iOS using Django and Python on the back-end. It’s hosted on AWS using Elastic Beanstalk and has been up and running since mid 2020.
Dash covers creating async compatible code in Django, developing a monolithic back-end that a few developers develop against, investing in the AWS ecosystem, end to end message encryption and the Zen of Python.
Topics Include
- 3:05 – Rewriting an existing Django app into a new Django app with 90%+ test coverage
- 8:49 – Async features in Django and not using Celery
- 12:07 – A breakdown of gRPG and Protobuff
- 15:13 – The platform has about 300 daily active users, dead locks and monitoring
- 17:47 – A monolithic Dockerized app with 4 developers working on the project
- 20:05 – There’s only an API back-end in Django, the front-end is a native iOS app
- 22:51 – The SimpleJWT and Redis / ARedis libraries were very helpful in Python
- 27:04 – The phonenumbers library showed to be very useful too
- 30:02 – Using Docker Compose in development with a multi-stage Dockerfile
- 32:22 – Using Elastic Beanstalk in production and a number of other tech choices
- 38:06 – There’s no configuration management tools being used, but that’s next
- 42:09 – Most AWS instance types they are using are medium size
- 44:00 – The process to deploy code from development to production
- 49:20 – Dealing with backing up user generated data and encrypting messages
- 54:06 – Getting alerted of errors through Slack and email
- 58:01 – Best tips? When in doubt stick to the Zen of Python
- 1:00:53 – You can find Dash on GitHub and Twitter
Links
📄 References- https://en.wikipedia.org/wiki/Protocol_Buffers
- https://www.elastic.co/observability
- https://python-poetry.org/
- https://www.python.org/dev/peps/pep-0020/ (The Zen of Python)
- django →
- python →
- swift →
- aws →
- circle-ci →
- docker →
- elasticache →
- nginx →
- rabbitmq →
- rds →
- redis →
- route53 →
- sentry →
- slack →
- terraform →
- https://github.com/encode/django-rest-framework
- https://grpc.io/docs/languages/python/basics/
- https://developer.apple.com/metal/
- https://github.com/SimpleJWT/django-rest-framework-simplejwt
- https://github.com/andymccurdy/redis-py
- https://github.com/NoneGG/aredis
- https://github.com/daviddrysdale/python-phonenumbers
- https://github.com/theskumar/python-dotenv
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.