Cuando eres una empresa del tamaño de Facebook con millones de usuarios en millones de servidores, ejecutando miles de cambios de configuración todos los días que involucran billones de comprobaciones de configuración, como puedes imaginar, la configuración es una gran cosa. Al igual que con la mayoría de las cosas con Facebook, se enfrentan a problemas de escala que pocas empresas tienen que tratar y, a menudo llegan a los límites de las simples herramientas mortales.
Para resolver sus problemas únicos, la compañía desarrolló un nuevo proceso de entrega de configuración denominado Delivery Aware Delivery o LAD para abreviar. Antes de desarrollar LAD, la compañía había estado utilizando una herramienta de código abierto llamada Zoo Keeper para distribuir datos de configuración, y aunque esa herramienta funcionaba, tenía algunas limitaciones bastante sustanciales para una empresa del tamaño de Facebook.
Quizás el mayor de ellos se limitaba a distribuciones de 5 MB con configuraciones limitadas a 2500 suscriptores a la vez. Para darle una idea de cómo funciona la configuración, se trata de entregar un servicio de Facebook como Messenger en tiempo real con la configuración correcta. Eso podría significar entregarlo en inglés para un usuario y en español para otro, todo sobre la marcha en millones de servidores.
Facebook quería crear una herramienta que superara esas limitaciones, separara los datos del mecanismo de distribución, tuviera un tiempo de latencia de menos de cinco segundos y soportara 10 veces más archivos que Zoo Keeper. Ah, sí, y quería que todo eso se ejecutara en millones de clientes y manejara las locas tasas de actualización y picos de tráfico que solo Facebook podría traer a la mesa.
El producto creado por el equipo de ingeniería de Facebook, LAD, consta de un par de partes: un proxy que se encuentra en cada máquina de la familia de Facebook y entrega archivos de configuración a cualquier máquina que quiera o necesite uno . La segunda pieza es un distribuidor, que como su nombre lo indica brinda información de configuración. Lo logra al buscar nuevas actualizaciones y, cuando las encuentra, crea un árbol de distribución para un conjunto de máquinas que buscan una actualización.
Como Ali Haider-Zaveri, de Facebook, escribió en una publicación de blog que anunciaba el nuevo método de distribución, la metodología de árbol ayuda a resolver una serie de problemas que Facebook enfrentó cuando distribuía actualizaciones de configuración a un volumen extremo. “Al aprovechar un árbol, LAD se asegura de que las actualizaciones se envíen solo a los proxies interesados en lugar de a todas las máquinas de la flota. Además, una máquina principal puede enviar actualizaciones directamente a sus hijos, lo que garantiza que ninguna máquina cerca de la raíz esté abrumada “, escribió Haider-Zaveri.
En cuanto a esas limitaciones, la compañía también ha sido capaz de superarlas. En lugar de un límite de actualización de 5 MB, lo han aumentado a 100 MB, y en lugar de un límite de 2500 usuarios, lo han aumentado a 40,000.
Tal sistema no fue fácil. Se requirieron pruebas y nuevas pruebas, pero ha llegado a producción hoy, al menos por ahora, hasta que Facebook enfrenta otro desafío y encuentra una nueva forma de hacer cosas que nadie antes consideró (porque nunca alcanzaron la escala de Facebook).