47 Punkte von GN⁺ 2023-09-18 | 3 Kommentare | Auf WhatsApp teilen
  • Von 10/2010 bis 11/2011, also in etwa einem Jahr, wuchs die Nutzerzahl von 0 auf 14 Millionen. Dabei gab es nur 3 Ingenieure
  • Es wurden drei Prinzipien befolgt
    • Alles sehr einfach halten (Keep things very simple.)
    • Das Rad nicht neu erfinden (Don’t re-invent the wheel.)
    • Wenn möglich bewährte, robuste Technologien einsetzen (Use proven, solid technologies when possible.)

Ein einfacher Blick auf den Stack aus Nutzersicht

  • Die frühe Infrastruktur lief auf Ubuntu Linux in AWS EC2
  • Die Instagram-App erschien zunächst nur für iOS, und da sie vor der Vorstellung von Swift veröffentlicht wurde, ist Objective-C + UIKit sehr wahrscheinlich
  • Für Load Balancing wurden Amazons Elastic Load Balancer und drei NGINX-Instanzen verwendet
  • Backend
    • Die Application Server wurden in Python entwickelt, mit Django und Gunicorn als WSGI-Server
    • Mit Fabric wurden dieselben Befehle gleichzeitig auf mehreren Instanzen ausgeführt. Dadurch konnte Code innerhalb weniger Sekunden ausgerollt werden
    • Es liefen 25 leistungsstarke CPU-Extra-Large-Maschinen. Alle waren stateless und konnten bei Bedarf leicht erweitert werden
  • Allgemeiner Datenspeicher
    • Verwandte Foto-IDs, das eigentliche Bild zu einer ID und Nutzerdaten zu den Fotos
    • Die Application Server holten Daten aus PostgreSQL
    • Zwischen Django und PostgreSQL wurde pgbouncer für das Pooling eingesetzt
    • Instagram verwendete zeitlich sortierbare IDs: 41 Bit Millisekunden + 13 Bit Shard-ID + 10 Bit autoinkrementierende Sequenz
  • Fotospeicher: S3 und Cloudfront
  • Caching: Redis und Memcached
    • Durch intelligentes Hashing konnten Mappings für 300 Millionen Schlüssel auf unter 5 GB Speicher abgelegt werden
    • Und zwei Jahre später veröffentlichte Facebook eine Arbeit darüber, wie Memcached skaliert wurde, um auf Milliarden Requests pro Sekunde zu wachsen
  • PostgreSQL und Redis liefen beide im Master-Replica-Modus. Kontinuierliche Backups erfolgten über Amazon-EBS-Snapshots
  • Push Notifications und Async Tasks: Für Benachrichtigungen wurde pyapns verwendet, als Task Queue kam Gearman zum Einsatz
  • Zur Echtzeitüberwachung von Fehlern wurde die Open-Source-Django-App Sentry verwendet, für systemweite Metriken Munin und für das Monitoring externer Dienste Pingdom und PagerDuty

3 Kommentare

 
botplaysdice 2023-09-19

Instagram wirkte in der Anfangszeit (als es stur nur das iPhone unterstützte) eher wie eine schicke Bildfilter-App. Dass es so ein Riesenerfolg werden würde, hätte ich mir nie vorstellen können. (So weit reichte meine Vorstellungskraft damals eben nicht ;;;)

 
princox 2023-09-18

Ich erinnere mich, dass Instagram beim Vergleich von Produkten, die einen Exit erlebt haben, beim Exit-Betrag pro Person in einem bemerkenswert hohen Bereich lag. Ich denke, dass es daraus viel zu lernen gibt.

 
GN⁺ 2023-09-18
Hacker-News-Kommentare
  • Artikel darüber, wie Instagram mit nur drei Ingenieuren 14 Millionen Nutzer gewann
  • Debatte über die Sprache, wobei angenommen wird, dass Instagram in Objective-C und UIKit geschrieben wurde
  • Einige Kommentare loben die Einfachheit von Instagrams Tech-Stack und schlagen vor, dass viele Unternehmen von einem ähnlichen Ansatz profitieren könnten
  • Ein Kommentar betont die Bedeutung der Auswahl der Teammitglieder: „Wenn man die richtigen Leute auswählt, braucht man nur wenige. Andernfalls braucht man alle.“
  • Neugier darauf, wie Instagram die Feeds von Millionen Nutzern sofort aktualisierte, was als noch größere Herausforderung gilt als das Skalieren von Lesezugriffen in verteilten Systemen
  • Spekulationen darüber, wie weit Instagram mit moderner Technologie hätte skalieren können, wenn man Django, Postgres, Redis und die Fortschritte bei der Hardwaregeschwindigkeit berücksichtigt
  • Der Artikel stößt eine Diskussion über die Größe von Engineering-Teams an; manche können schwer nachvollziehen, warum einige Organisationen mit einer einfachen CRUD-App Tausende von Ingenieuren brauchen
  • Bei einigen Lesern entsteht ein Gefühl der Inspiration und der Wunsch, ihre eigene Version von Instagram zu bauen
  • Es wird angemerkt, dass es in Instagrams Anfangstagen nur ein Frontend gab, nämlich eine iOS-App, und dass diese weniger Funktionen hatte als heutige Social-Media-Plattformen
  • Jüngster Insiderbericht über die Entwicklung der Threads-App von Meta auf Basis von Instagrams Infrastruktur, wobei der Erfolg der App und die Größe des beteiligten Teams hervorgehoben werden