47 poin oleh GN⁺ 2023-09-18 | 3 komentar | Bagikan ke WhatsApp
  • Dari 2010/10 hingga 2011/11, dalam sekitar 1 tahun, bertumbuh dari 0 menjadi 14 juta pengguna. Engineer hanya 3 orang
  • Mengikuti 3 prinsip
    • Menjaga semuanya tetap sederhana (Keep things very simple.)
    • Jangan menciptakan ulang roda (Don’t re-invent the wheel.)
    • Jika memungkinkan, gunakan teknologi yang sudah terbukti dan kokoh (Use proven, solid technologies when possible.)

Melihat stack secara sederhana dari sudut pandang pengguna

  • Infrastruktur awal berjalan di AWS EC2 dengan Ubuntu Linux
  • Aplikasi Instagram pertama kali hanya tersedia di iOS, dan karena dirilis sebelum Swift diumumkan, kemungkinan besar menggunakan Objective-C + UIKit
  • Untuk load balancing, digunakan Amazon Elastic Load Balancer dan 3 instance NGINX
  • Backend
    • Server aplikasi dikembangkan dengan Python, menggunakan Django dan server WSGI Gunicorn
    • Menggunakan Fabric untuk menjalankan perintah yang sama secara bersamaan di banyak instance. Dengan ini, kode bisa di-deploy dalam hitungan detik
    • Menjalankan 25 mesin Extra-Large dengan CPU berperforma tinggi. Semuanya stateless sehingga mudah ditambah jika diperlukan
  • Penyimpanan data umum
    • Photo ID terkait, foto aktual untuk ID tersebut, dan data pengguna untuk foto itu
    • Server aplikasi mengambil data dari PostgreSQL
    • Pooling antara Django dan PostgreSQL menggunakan pgbouncer
    • Instagram menggunakan ID yang bisa diurutkan berdasarkan waktu: 41-bit milidetik + 13-bit shard ID + 10-bit urutan auto-increment
  • Penyimpanan foto: S3 dan Cloudfront
  • Caching: Redis dan Memcached
    • Melalui hashing yang cerdas, pemetaan 300 juta key disimpan dalam ruang kurang dari 5GB
    • Lalu 2 tahun kemudian, Facebook menerbitkan makalah tentang cara menskalakan Memcached untuk menangani miliaran request per detik
  • Postgres dan Redis sama-sama berjalan dalam mode Master-Replica. Backup terus dilakukan dengan Amazon EBS snapshot
  • Push Notification dan Async Task: notifikasi menggunakan pyapns. Task queue menggunakan Gearman
  • Untuk memantau error secara real-time, digunakan Sentry, aplikasi Django open source; untuk metrik seluruh sistem digunakan Munin; dan untuk pemantauan layanan eksternal digunakan Pingdom dan PagerDuty

3 komentar

 
botplaysdice 2023-09-19

Pada masa awal, Instagram terasa seperti sekadar aplikasi filter gambar yang keren (pada era ketika mereka keras kepala hanya mendukung iPhone). Saya sama sekali tidak membayangkan ini akan menjadi sukses sebesar ini. (Ya, segitulah imajinasi saya;;; )

 
princox 2023-09-18

Di antara perbandingan produk yang pernah mencapai exit, saya ingat melihat bahwa Instagram berada dalam kondisi dengan nilai exit per orang yang sangat tinggi. Saya rasa ada banyak hal yang bisa dipelajari.

 
GN⁺ 2023-09-18
Komentar Hacker News
  • Artikel tentang bagaimana Instagram berhasil meraih 14 juta pengguna hanya dengan tiga insinyur
  • Perdebatan soal bahasa yang mengasumsikan Instagram ditulis dengan Objective-C dan UIKit
  • Beberapa komentar memuji kesederhanaan tech stack Instagram, dan menyarankan banyak perusahaan bisa mendapat manfaat dari pendekatan serupa
  • Pentingnya memilih anggota tim yang tepat, seperti ditekankan dalam salah satu komentar: "Jika Anda memilih orang yang tepat, Anda hanya membutuhkan sedikit orang. Jika tidak, Anda akan membutuhkan semua orang."
  • Rasa penasaran tentang bagaimana Instagram memperbarui feed jutaan pengguna secara instan, yang dianggap lebih menantang daripada menskalakan pembacaan dalam sistem terdistribusi
  • Spekulasi tentang seberapa jauh Instagram bisa diskalakan dengan teknologi modern, mengingat Django, Postgres, Redis, dan kemajuan kecepatan perangkat keras
  • Artikel ini memicu diskusi tentang ukuran tim engineering, dengan sebagian orang kesulitan memahami mengapa beberapa organisasi dengan aplikasi CRUD dasar membutuhkan ribuan insinyur
  • Rasa terinspirasi di antara beberapa pembaca yang ingin membuat versi Instagram mereka sendiri
  • Disebutkan bahwa pada masa awal Instagram, hanya ada satu frontend berupa aplikasi iOS, dan fiturnya lebih sedikit dibandingkan platform media sosial modern
  • Berbagi pengalaman internal terbaru dalam mengembangkan aplikasi Threads milik Meta di atas infrastruktur Instagram, sambil menyoroti kesuksesan aplikasi tersebut dan ukuran tim terkait