Meta Indica que bastó un “pequeño equipo” de ingenieros para diseñar su red social Threads, en apenas cinco meses de trabajo. Sin dar todavía demasiados detalles sobre todos los elementos técnicos necesarios para llevar a este competidor de la plataforma sin servidor Async.

ZippyDB es más específicamente una base de datos distribuida de clave/valor que funciona como un servicio totalmente administrado que los ingenieros pueden aprovechar, explicó Meta. Está diseñado desde cero para aprovechar su infraestructura y los espacios clave alojados allí se pueden ampliar o reducir con relativa facilidad y ubicarse de manera flexible en cualquier número de centros de datos según el grupo. “TAO, respaldado por MySQL, se utiliza para almacenar nuestro gráfico social, por lo que puedes encontrar mensajes y respuestas de Threads directamente en esta pila. ZippyDB es nuestra contraparte clave/valor de MySQL, la parte relacional de nuestra pila de datos en línea, y se utiliza para contadores, ordenación/estado de feeds y búsqueda. explicar Meta.

La velocidad a la que Meta escala la capacidad de un espacio clave es posible gracias a dos características: en primer lugar, el servicio opera en un conjunto común de hardware y está integrado en el marco de gestión de capacidad del grupo. "Tan pronto como se asigna nueva capacidad al servicio, las máquinas se agregan automáticamente al grupo de servicios y el equilibrador de carga interviene para mover los datos a las nuevas máquinas", afirma el proveedor. "Podemos absorber miles de máquinas nuevas en cuestión de horas una vez que se agregan al servicio". Sin embargo, esto no es suficiente, ya que el tiempo para aprobar la capacidad, potencialmente drenarla a otros servicios y agregarla a ZippyDB, aún puede requerir algunos días. "También debemos poder absorber una sobrecarga en un período de tiempo más corto", advierte Meta.

Meta de subprocesos del almacén de datos

Con su almacén de datos, el servicio puede evolucionar de forma más o menos transparente, incluso ante una nueva demanda repentina y significativa, considera Meta respecto a Threads. (crédito: Meta)

Para garantizar que esta absorción sea inmediata, Meta se basa en una arquitectura de servicio multiinquilino con fuertes características de aislamiento. "Esto permite que diferentes espacios centrales, con demandas de cargas de trabajo potencialmente complementarias, compartan hosts subyacentes, sin preocuparse de que su nivel de servicio se vea afectado cuando otras cargas de trabajo se ejecuten a plena capacidad", continúa Meta. “El grupo de hosts también tiene margen debido a la capacidad no utilizada en espacios clave individuales, así como buffers para manejar eventos de recuperación ante desastres. Podemos accionar palancas que mueven las asignaciones no utilizadas entre espacios de claves, aprovechando la capacidad sobrante existente y permitiendo que los hosts operen a un nivel de utilización más alto para permitir que un espacio de claves aumente casi de inmediato y lo mantenga durante un breve intervalo (unos pocos días). Estos son cambios de configuración simples para los cuales se han implementado herramientas y automatización, porque son relativamente rutinarios para las operaciones diarias”. Resultado: el servicio puede evolucionar de forma más o menos transparente, incluso ante una nueva demanda repentina e importante.

Async para ejecutar cargas de trabajo a escala

El segundo pilar de la infraestructura de la red social de noticias y debates de Meta es Async. También conocida como XFaaS, es una plataforma sin servidor capaz de diferir la informática hasta las horas de menor actividad, lo que brinda a los ingenieros de Meta la oportunidad de reducir el tiempo entre el diseño de la solución y la implementación de producción. "Async actualmente procesa miles de millones de llamadas a funciones por día en más de 100.000 servidores y puede admitir múltiples lenguajes de programación, incluidos HackLang, Python, Haskell y Erlang", dijo Meta.

La plataforma abstrae los detalles de implementación, cola, programación, escalado, recuperación ante desastres y preparación, para que los desarrolladores puedan liberar a Async de la molestia de las tareas pesadas restantes. Al integrar su código en esta plataforma, heredan automáticamente atributos de hiperescala. La escalabilidad no es la única característica clave de Async. El código subido a la plataforma también hereda garantías de ejecución con reintentos configurables, tiempos de entrega, límites de velocidad y responsabilidades de capacidad. Según Meta, las cargas de trabajo que normalmente se ejecutan en Async son aquellas que no requieren bloquear la experiencia de un usuario activo con un producto y pueden ejecutarse desde segundos hasta horas después de la acción de un usuario. "Async ha desempeñado un papel vital al brindar a los usuarios la capacidad de construir rápidamente una comunidad eligiendo seguir a personas en Threads que ya siguen en Instagram", continúa la compañía. “Específicamente, cuando un nuevo usuario se une a Threads y elige seguir a las mismas personas que sigue en Instagram, la operación computacionalmente costosa de ejecutar la solicitud del usuario para seguir el mismo gráfico social en Threads se realiza a través de Async de manera escalable, lo que evita el bloqueo. o impactar negativamente la experiencia de incorporación del usuario ".

Sin servidor

Async es capaz de absorber grandes cargas de trabajo, ponerlas en cola y controlar su ejecución. (crédito: Meta)

Si bien el volumen de tareas Async generadas por la rápida incorporación de usuarios de Threads fue mucho mayor que nuestras expectativas iniciales, Async pudo absorber el aumento de carga y ponerlo en cola para su posterior procesamiento. ejecución controlada. Específicamente, la ejecución se gestionó dentro de los límites de velocidad, lo que permitió enviar notificaciones y a los usuarios establecer conexiones de manera oportuna sin sobrecargar los servicios posteriores que reciben tráfico de estos trabajos asíncronos. “Async ajustó automáticamente el flujo de ejecución en función de su capacidad y la de los servicios dependientes, como la base de datos de gráficos sociales, todo sin intervención manual de los ingenieros de Threads o de infraestructura”, dice Meta.