¿Que hay detrás de Pinterest?

imagen / ShardsOfBlue
  
25 de Diciembre de 2014   0  

Pinterest es una aplicación web del tipo red social en el que los usuarios pueden “pinear” diferentes imágenes y administrarlas y agruparlas en tableros según la temática de nuestro interés.

 

Pinterest_Logo

No es de sorprendernos que esta fantástica red social se encuentra escrita con el lenguajePython con ayuda del framework Django, y en este post, explicaremos algunas características técnicas que permiten a Pinterest soportar la gran cantidad de usuarios y visitas que recibe día con día.

Crecimiento exponencial.

Pinterest ha estado experimentando una curva de crecimiento exponencial, duplicando cada mes y medio. Han pasado de 0 a 10 billones de páginas vistas al mes en dos años; de 2 fundadores y un ingeniero a más de 40 ingenieros; de un pequeño servidor MySQL a 180 Web Engines, 240 API Engines, 88 Bases de datos MySQL (cc2. 8xlarge) + 1 esclavo cada uno, 110 instancias Redis y 200 instancias Memcache.

pinterest_pin

Tecnologías utilizadas.

Infraestructura en la nube.

Para el tema de la infraestructura, Pinterest utiliza los servicios EC2 y S3 de Amazon. Hoy en día utiliza más de 150 instancia EC2 y se encuentran almacenados más de 80 millones de objetos en S3 con 410 Terabytes de datos de usuarios

 gpu_amazon_ec2_logo

Motor de base de datos MYSQL.

Actualmente existen alrededor de 88 bases de datos con MYSQL, cada una contando con una base de datos esclavo para el balance de cargas de lectura.

Es increíble cómo MYSQL aún sigue siendo una gran opción para utilizar en proyectos que requieren de gran fiabilidad y estabilidad en el manejo de grandes volúmenes de datos.

mysql_logo

Lenguaje de Programación Python.

La plataforma web y backend se encuentran desarrollados con el lenguaje Python y el uso de una versión modificada de Django.

python

Uso de Caché.

Pinteres actualmente tiene millones y millones de visitas al mes, y por tal motivo, es indispensable tener una gran estrategia de uso de caché para optimizar los tiempos de respuesta de la web, para esto han optado por utilizar herramientas como Varnish, Memcached y Redis, y para servir los archivos estáticos han elegido el servidor web NGINX el cual tiene mayor velocidad de respuesta y menos uso de memoria RAM que Apache. Actualmente cuentan con 100 instancias Redis y 200 instancias Memcache.

varnish-bunnies

Servidor Web.

Para la liberación de la plataforma web, Pinterest hace uso de Tornado el cual es un proyecto Open Source de la compañía Facebook y diversos elementos integrados con Node.JS

tornado

Tareas asíncronas.

RabbitMQ ha sido la opción ideal para integración de tareas asíncronas en Pinterest.

images

Conclusión.

Pinterest, al igual que Reddit, utiliza en gran medida tecnologías Open Source para soportar el procesamiento de grandes volúmenes de datos y tráfico de millones y millones de usuarios por mes. Detrás de estas plataformas web, existe un buen trabajo de ingeniería de software e infraestructura de cómputo en la nube.

Te invito a leer los siguientes links si deseas conocer a detalles la evolución de Pínterest a través de los años:

1. Quora.

2. highscalability.



Alex Dzul

FullStack Python / Django Developer. #jslove