- 2010/10’dan 2011/11’e kadar yaklaşık 1 yılda 0’dan 14 milyon kullanıcıya ulaştı. Mühendis sayısı sadece 3’tü
- 3 ilkeye bağlı kaldılar
- Basit tutmak (Keep things very simple.)
- Tekerleği yeniden icat etmemek (Don’t re-invent the wheel.)
- Mümkün olduğunda kanıtlanmış, sağlam teknolojiler kullanmak (Use proven, solid technologies when possible.)
Kullanıcı perspektifinden stack’e basit bir bakış
- İlk altyapı AWS EC2 üzerinde Ubuntu Linux’tu
- Instagram uygulaması önce yalnızca iOS’ta çıktı; Swift duyurulmadan önce olduğu için büyük olasılıkla Objective-C + UIKit kullanıyordu
- Yük dengeleme için Amazon Elastic Load Balancer ve 3 adet NGINX instance’ı kullanıldı
- Backend
- Uygulama sunucuları Python ile geliştirildi; Django ve WSGI sunucusu olarak Gunicorn kullanıldı
- Fabric ile birden çok instance üzerinde aynı komut eşzamanlı çalıştırıldı. Bu sayede kod birkaç saniye içinde deploy edildi
- 25 adet yüksek performanslı CPU Extra-Large makine çalıştırıldı. Hepsi stateless olduğu için gerektiğinde kolayca daha fazlası eklenebiliyordu
- Genel veri deposu
- İlişkili fotoğraf ID’leri, bu ID’lerin gerçek fotoğrafları ve fotoğraflara ait kullanıcı verileri
- Uygulama sunucuları verileri PostgreSQL’den alıyordu
- Django ile PostgreSQL arasında pgbouncer ile pooling yapıldı
- Instagram, zamana göre sıralanabilen ID’ler kullanıyordu: 41 bit milisaniye + 13 bit shard ID + 10 bit otomatik artan sequence
- Fotoğraf depolama: S3 ve Cloudfront
- Caching: Redis ve Memcached
- Akıllı hashing sayesinde 300 milyon anahtar eşlemesi 5 GB’tan az alanda saklandı
- Ayrıca 2 yıl sonra Facebook, Memcached’i ölçekleyerek saniyede milyarlarca isteği nasıl büyüttüğüne dair bir makale yayımladı
- Hem Postgres hem de Redis Master-Replica modunda çalıştırıldı. Amazon EBS snapshot’larıyla sürekli yedeklendi
- Push notification ve async task: Bildirimler için pyapns, task queue için Gearman kullanıldı
- Hataları gerçek zamanlı izlemek için açık kaynaklı Django uygulaması Sentry, sistem genelindeki metrikler için Munin, dış servis izleme için ise Pingdom ve PagerDuty kullanıldı
3 yorum
Instagram ilk zamanlarında (inatla yalnızca iPhone'u desteklediği dönemde) daha çok havalı bir görüntü filtresi uygulaması gibi geliyordu. Böyle büyük bir patlama yapacağını hiç tahmin etmemiştim. (Benim hayal gücüm ancak o kadardı ;;;)
Exit yaşamış ürünleri karşılaştırırken, Instagram’ın kişi başına düşen exit tutarının oldukça yüksek olduğunu gördüğümü hatırlıyorum. Öğrenilecek çok şey olduğunu düşünüyorum.
Hacker News görüşleri