¿Cuál es la tecnología detrás de Instagram?

He respondido la pregunta similar aquí

Pila tecnológica detrás de Instagram:

La infraestructura de Instagram es bastante extensa. No es una sorpresa, si tiene en cuenta las cargas de tráfico y la demanda de ingeniería móvil rápida. Por lo tanto, React Native está en uso debido a la posibilidad de compartir código y la velocidad de iteración.

La pila de tecnología de Instagram también incluye las siguientes herramientas. Servicios web de Amazon para capacidades informáticas y equilibrio de carga: Amazon EC2, Route 53, S3, EBS . Además, Gunicorn como interfaz entre los servidores web y la aplicación.

Curiosamente, Instagram usa Ubuntu Linux 11.04 como su sistema operativo. Como servidor web de aplicaciones, implican el framework Django (en lenguaje Python), que se ejecuta en máquinas con alto CPU. Django es asistido por NGINX , un servidor HTTP y proxy inverso gratuito.

PostgreSQL es la solución óptima para el almacenamiento de datos. Instagram lo usa para acomodar todo, desde datos de usuario y fotos hasta metadatos, etiquetas, etc. Para más detalles, consulte la pila de tecnología de Instagram.

Pero si desea averiguar cuánto cuesta hacer una aplicación como Instagram, consulte este artículo:

¿Cuánto cuesta hacer una aplicación como Instagram?

Buena suerte !

Simplemente trataremos el artículo aquí, está muy bien escrito y va al grano. Definitivamente vale la pena leerlo. Aquí están los elementos esenciales:

  • Lecciones aprendidas: 1) Que sea muy simple 2) No reinventes la rueda 3) Ve con tecnologías probadas y sólidas cuando puedas.
  • 3 ingenieros. (Según los informes, ahora tienen 13 empleados, recuerden que esto fue hace un tiempo)
  • Tienda de Amazon. Usan muchos de los servicios de Amazon. Con solo 3 ingenieros, no tenga tiempo para mirar el autohospedaje.
  • Más de 100 instancias de EC2 en total para diversos fines.
  • Ubuntu Linux 11.04 (“Natty Narwhal”). Sólido, otras versiones de Ubuntu se congelaron en ellos.
  • Elastic Load Balancer de Amazon enruta las solicitudes y 3 instancias nginx se sientan detrás del ELB.
  • SSL termina en el ELB, lo que disminuye la carga de la CPU en nginx.
  • Route53 de Amazon para el DNS.
  • Más de 25 servidores de aplicaciones Django en máquinas extragrandes de alta CPU.
  • El tráfico está vinculado a la CPU en lugar de a la memoria, por lo que las máquinas extragrandes con CPU alta son un buen equilibrio de memoria y CPU.
  • Gunicorn como su servidor WSGI. Apache más difícil de configurar y más intensivo de CPU.
  • Fabric se utiliza para ejecutar comandos en paralelo en todas las máquinas. Un despliegue lleva solo unos segundos.
  • PostgreSQL (usuarios, metadatos de fotos, etiquetas, etc.) se ejecuta en 12 instancias de memoria cuádruple extragrande.
  • Doce réplicas de PostgreSQL se ejecutan en una zona de disponibilidad diferente.
  • Las instancias de PostgreSQL se ejecutan en una configuración de réplica maestra utilizando Streaming Replication. EBS se utiliza para hacer instantáneas, para realizar copias de seguridad frecuentes.
  • EBS se implementa en una configuración RAID de software. Utiliza mdadm para obtener IO decente.
  • Todo su conjunto de trabajo es memoria almacenada. EBS no admite suficientes búsquedas de disco por segundo.
  • Vmtouch (diagnóstico de caché del sistema de archivos portátil) se usa para administrar qué datos hay en la memoria, especialmente cuando se produce una conmutación por error de una máquina a otra, donde todavía no hay un perfil de memoria activo.
  • XFS como el sistema de archivos. Se utiliza para obtener instantáneas consistentes al congelar y descongelar las matrices RAID cuando se toman instantáneas.
  • Pgbouncer se utiliza conexiones de grupo a PostgreSQL.
  • Varios terabytes de fotos se almacenan en Amazon S3.
  • Amazon CloudFront como CDN.
  • Redis potencia su feed principal, feed de actividad, sistema de sesiones y otros servicios.
  • Redis se ejecuta en varias instancias de memoria cuádruple extra grande. Ocasionalmente, particione entre instancias.
  • Redis se ejecuta en una configuración de réplica maestra. Las réplicas se guardan constantemente en el disco. Las instantáneas de EBS respaldan los volcados de la base de datos. Volcar en el DB en el maestro era demasiado agotador.
  • Apache Solr alimenta la API de geo-búsqueda. Al igual que la sencilla interfaz JSON.
  • 6 instancias memcached para el almacenamiento en caché. Conéctese usando pylibmc y libmemcached. El servicio Amazon Elastic Cache no es más barato.
  • Gearman se utiliza para: compartir fotos de forma asíncrona en Twitter, Facebook, etc. notificar a los suscriptores en tiempo real de una nueva foto publicada; alimentar en abanico.
  • 200 trabajadores de Python consumen tareas fuera de la cola de tareas de Gearman.
  • Pyapns (Apple Push Notification Service) maneja más de mil millones de notificaciones push. Roca sólida.
  • Munin para graficar métricas en todo el sistema y alertar sobre problemas. Escriba muchos complementos personalizados con Python-Munin para gráficos, registros por minuto, fotos publicadas por segundo, etc.
  • Pingdom para monitoreo externo del servicio.
  • PagerDuty para el manejo de notificaciones e incidentes.
  • Sentry para informes de errores de Python.

Si tienes alguna aclaración

La publicación original es de aquí:

La arquitectura de Instagram Facebook compró mil millones de dólares geniales – Alta escalabilidad –

Aquí puede encontrar las pilas de tecnología de cada gran empresa ……! 🙂

Instagram ha compartido su stack tecnológico en su blog oficial de tecnología What Powers Instagram: cientos de instancias, docenas de tecnologías

tl; dr
Python / Django
PostgreSQL
Apache Solr
Memcached y Redis