47 puntos por GN⁺ 2023-09-18 | 3 comentarios | Compartir por WhatsApp
  • De 2010/10 a 2011/11, en alrededor de 1 año, pasaron de 0 a 14 millones de usuarios. Solo tenían 3 ingenieros
  • Siguieron 3 principios
    • Mantener todo muy simple (Keep things very simple.)
    • No reinventar la rueda (Don’t re-invent the wheel.)
    • Usar tecnologías probadas y sólidas cuando sea posible (Use proven, solid technologies when possible.)

Un vistazo simple al stack desde la perspectiva del usuario

  • La infraestructura inicial corría en Ubuntu Linux sobre AWS EC2
  • La app de Instagram salió primero solo en iOS y, como fue antes del anuncio de Swift, es muy probable que haya sido Objective-C + UIKit
  • Para balanceo de carga usaban Elastic Load Balancer de Amazon y 3 instancias de NGINX
  • Backend
    • El servidor de aplicaciones estaba desarrollado en Python, usando Django y Gunicorn como servidor WSGI
    • Usaban Fabric para ejecutar el mismo comando en múltiples instancias al mismo tiempo. Con esto podían desplegar código en cuestión de segundos
    • Operaban 25 máquinas Extra-Large de CPU de alto rendimiento. Todas eran stateless, así que podían agregar más fácilmente cuando fuera necesario
  • Almacenamiento de datos general
    • IDs de fotos relacionadas, la foto real correspondiente a ese ID y los datos de usuario sobre la foto
    • El servidor de aplicaciones traía los datos desde PostgreSQL
    • Entre Django y PostgreSQL usaban pgbouncer para pooling
    • Instagram usaba IDs ordenables por tiempo: 41 bits de milisegundos + 13 bits de shard ID + 10 bits de secuencia autoincremental
  • Almacenamiento de fotos: S3 y Cloudfront
  • Caché: Redis y Memcached
    • Mediante hashing inteligente almacenaban el mapeo de 300 millones de claves en menos de 5GB de espacio
    • Y dos años después, Facebook publicó un paper sobre cómo escalar Memcached para manejar decenas de miles de millones de solicitudes por segundo
  • Tanto Postgres como Redis corrían en modo Master-Replica. Hacían respaldos continuos con snapshots de Amazon EBS
  • Push notifications y tareas async: para notificaciones usaban pyapns. Para la cola de tareas, Gearman
  • Para monitorear errores en tiempo real usaban Sentry, una app open source de Django; para métricas de todo el sistema usaban Munin; y para monitoreo de servicios externos usaban Pingdom y PagerDuty

3 comentarios

 
botplaysdice 2023-09-19

En sus inicios, Instagram se sentía más bien como una app de filtros de imagen vistosa (cuando tercamente solo daba soporte a iPhone). Jamás imaginé que se volvería un éxito tan enorme. (Mi imaginación llegaba solo hasta ahí ;;;)

 
princox 2023-09-18

Recuerdo haber visto, al comparar productos que incluso llegaron al exit, que Instagram tenía un monto de exit por persona bastante alto. Creo que hay mucho que aprender de eso.

 
GN⁺ 2023-09-18
Opiniones de Hacker News
  • Un artículo sobre cómo Instagram consiguió 14 millones de usuarios con solo tres ingenieros
  • Debate sobre el lenguaje, asumiendo que Instagram fue escrito en Objective-C y UIKit
  • Algunos comentarios elogian la simplicidad del stack tecnológico de Instagram y sugieren que muchas empresas podrían beneficiarse de un enfoque similar
  • La importancia de elegir a los miembros del equipo queda enfatizada en un comentario: "Si eliges a las personas adecuadas, solo necesitas unas cuantas. Si no, acabarás necesitando a todas."
  • Curiosidad sobre cómo Instagram actualizaba al instante los feeds de millones de usuarios, considerado un trabajo más desafiante que escalar lecturas en sistemas distribuidos
  • Especulación sobre hasta dónde podría haber escalado Instagram con tecnología moderna, considerando Django, Postgres, Redis y los avances en la velocidad del hardware
  • Un artículo que provoca debate sobre el tamaño de los equipos de ingeniería; a algunas personas les cuesta entender por qué ciertas organizaciones con aplicaciones CRUD básicas necesitan miles de ingenieros
  • Entre algunos lectores, una sensación de inspiración que expresa el deseo de crear su propia versión de Instagram
  • Se menciona que en los primeros días de Instagram solo existía un frontend, la app de iOS, y que tenía menos funciones que las plataformas modernas de redes sociales
  • Compartir una experiencia interna reciente sobre el desarrollo de la app Threads de Meta sobre la infraestructura de Instagram, destacando el éxito de la app y el tamaño de los equipos involucrados