Best practices for scaling Django
Anton Pirker
A story about
DjangoCon Europe 2016 / Budapest
Betty
Backend Development
Marissa
Management
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2373530/1.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2373531/2.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2311179/beispielseite-simple.png)
Yoga Videos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2374222/diagram1.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2313455/django-debug-toolbar.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2345340/djdtt-vorher.png)
select_related
and
prefetch_related
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2345342/djdt-nachher.png)
Basic Django Montoring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Achievement Unlocked!
Optimized queries
Achievement Unlocked!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Basic Django Montoring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2308111/newrelic.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2364907/servers1-overview-resized.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2364926/servers2-overview-resized.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2374225/diagram2.png)
Hardware Monitoring
Achievement Unlocked!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Optimized queries
Basic Django Montoring
Dedicated database server
Achievement Unlocked!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Hardware Monitoring
Optimized queries
Basic Django Montoring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365029/mem.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2374226/diagram3.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2382930/caching-trick.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2382948/cookies.png)
Cookies...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2383020/beispielseite-simple-logged-in-cut.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2389341/cat-scared.jpg)
Django Caching
Achievement Unlocked!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Dedicated database server
Hardware Monitoring
Optimize queries
Basic Django Montoring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2364933/bad-gateway-resized.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2312063/connection-errors-detail.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2388715/connection-errors-detail-2.png)
Pg Bouncer
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2374227/diagram4.png)
Database connection pooling
Achievement Unlocked!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Django Caching
Dedicated database server
Hardware Monitoring
Optimized queries
Basic Django Montoring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2413217/sync.png)
Sync
Async
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2413236/async.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2313489/celery-logo.png)
Celery
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2313488/redis-logo.png)
Redis
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2374229/diagram5.png)
Celery FloweR › Dashboard
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2372938/celery1-worker-snipped-scaled.png)
Celery FloweR › Dashboard
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2314197/celery1-worker-snipped.png)
Celery FloweR › Broker
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2372938/celery1-worker-snipped-scaled.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2372958/celery1-queue-snipped-scaled.png)
!
Celery FloweR › Dashboard
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2372978/celery2-worker-snipped-scaled.png)
Celery FloweR › Dashboard
Celery FloweR › Broker
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2372978/celery2-worker-snipped-scaled.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2373004/celery2-queue-snipped-scaled.png)
Async Tasks
Achievement Unlocked!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365449/achievement-unlocked.png)
Database connection pooling
Django Caching
Dedicated database server
Hardware Monitoring
Optimize queries
Basic Django Montoring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2390849/diagram7.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2390850/diagram8.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2390852/diagram9.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2390864/diagram10.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2390859/diagram11.png)
You've achieved developer level:
Level up!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365525/level-up.png)
2
(of 800)
Level 1 Summary
Basic Django Montoring
Optimize queries
Hardware Monitoring
Dedicated database server
Django Caching
Database connection pooling
Async Tasks
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365525/level-up.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/443301/images/2365525/level-up.png)
Thank's
for listening!
Best practices for scaling Django
By antonpirker
Best practices for scaling Django
DjangoCon Europe 2016 / Budapest
- 4,602