Erik van Zijst
- Number of videos:
Today Bitbucket is more than 30 times bigger than at the time of acquisition almost 4 years ago and serves repositories to over a million developers.
This talk lays out its current architecture in great detail, from Gunicorn and Django to Celery and HA-Proxy to NFS.
This talk explores the challenges of ensuring responsiveness of applications under varying conditions like suddenly increased load, code regressions and problematic user data that reveal code paths with unusually high time complexity.
I'll be looking at interrupt-driven techniques to help bring the 95 percentile of the response times of your application closer to the (usually much lower) mean.
In this talk, we'll go beyond traditional tricks like caching, sharding and data denormalization and instead look at tools that can interrupt execution of overly expensive code paths, such that you can guarantee an upper bound in response time.
Interruptingcow and django-timelimit will be some of the tools that will be covered in this talk.
The context for most of this is web applications, and I'll be drawing many examples from our ongoing experiences with running and scaling Bitbucket, which is entirely written in Python.
Having said that though, many of the tools and techniques demonstrates will apply just as well to other types of applications and situations.