Django PostgreSQL Amazon highload Instagram
instagram-engineering.tumblr.com — рассказ про архитектуру Instagram.
Краткое резюме:
1. Amazon EC2 — для хостинга.
2. Ubuntu 11.04 — основная OS.
3. PostgreSQL (12 Quadruple Extra-Large High-Memory nodes + 12 replicas) — для основной части данных. Pgbouncer для пулинга.
4. Redis (several Quadruple Extra-Large Memory nodes) — для фидов и сессий.
5. PostGIS → Apache Solr — для гео-поиска.
6. Memcached (6 instances) — для... ни за что не угадаете. Не используют Amazon Elastic Cache, потому что невыгодно экономически.
7. Django (>25 High-CPU Extra Large nodes) over Gunicorn — для динамики.
8. Nginx (3 nodes) позади Amazon Elastic Load Balancer (проверяющим их доступность) — для балансировки загрузки. ELB также и терминирует SSL.
9. Amazon Route 53 — для DNS.
10. Fabric — для автоматизации деплоймента.
11. Gearman — для очереди задач. PyAPNS — PUSH-нотификации.
12. Munin — метрики. Sentry — error reporting. Pingdom — внешний мониторинг доступности. PagerDuty — информация о инцидентах.