15 puntos por brainer 2024-06-16 | Aún no hay comentarios. | Compartir por WhatsApp

El recorrido de escalamiento de Pinterest

El proceso de escalamiento de Pinterest se divide en cuatro etapas:

  1. La era del autodescubrimiento: un pequeño equipo de ingeniería manejó la creación rápida de prototipos y los requisitos cambiantes del producto.
  2. La era de la experimentación: el crecimiento acelerado de usuarios exigió escalar rápidamente, pero eso llevó a un sistema complejo y frágil.
  3. La era de la madurez: simplificaron la arquitectura usando tecnologías maduras y escalables como MySQL, Memcache y Redis.
  4. La era de la regresión: una vez que tuvieron la arquitectura adecuada, continuaron creciendo mediante escalamiento horizontal.

Tecnologías clave

Pinterest priorizó tecnologías centradas en la confiabilidad, la facilidad de comprensión y la escalabilidad:

  • MySQL: una base de datos relacional estable y fácil de mantener.
  • Memcache: almacena en memoria caché los datos a los que se accede con frecuencia para descargar lecturas de la base de datos.
  • Redis: un almacén de datos flexible capaz de manejar varias estructuras de datos.
  • Solr: una plataforma de búsqueda lista para usar rápidamente.

Escalamiento de base de datos: clustering vs sharding

Pinterest consideró dos enfoques para distribuir su base de datos:

Clustering
  • Cuando llegan los datos, se determina el nodo óptimo y los datos se replican en varios nodos.
  • Tiene ventajas como autoescalado, facilidad de configuración y garantía de disponibilidad de datos, pero también desventajas como complejidad, falta de madurez y dificultad para actualizar.
Sharding
  • Divide los datos en fragmentos pequeños y coloca cada fragmento en un servidor independiente.
  • Tiene ventajas como una arquitectura simple, escalamiento independiente y propiedad clara de los datos, pero también desventajas como la imposibilidad de hacer joins y transacciones a nivel de base de datos, además de una mayor complejidad en la aplicación.

Pinterest eligió sharding debido a su experiencia negativa con clustering.

Transición a una arquitectura con sharding

Pinterest hizo la transición gradualmente a sharding durante un congelamiento de funcionalidades:

  1. Eliminar joins: eliminaron todos los joins de MySQL y aprovecharon la desnormalización de datos y el caché.
  2. Sharding basado en ID: aplicaron sharding con base en IDs de 64 bits para simplificar el enrutamiento de datos.

Desventajas del sharding y soluciones

  • Scripts de migración: transferir datos a la infraestructura de sharding consumía mucho tiempo.
  • Lógica de aplicación: fue necesario mantener la consistencia de los datos ante la ausencia de joins y transacciones a nivel de base de datos.
  • Modificación de esquema: planificaron y aplicaron cambios de esquema en todos los shards.
  • Generación de reportes: generaron reportes unificando varios shards.

Lecciones

Las principales lecciones del recorrido de escalamiento de Pinterest:

  • La simplicidad importa: elegir tecnologías fáciles de entender ayuda a resolver problemas y reducir riesgos.
  • La escalabilidad primero: en entornos de crecimiento acelerado, priorizar la escalabilidad incluso si eso implica sacrificar funciones de base de datos.
  • Diseñar para escalamiento horizontal: elegir una arquitectura que permita agregar recursos a medida que crece la base de usuarios.

Aún no hay comentarios.

Aún no hay comentarios.