Resumen

  • Roblox afirmó que el tráfico externo máximo y una experiencia particular no causaron la interrupción de octubre de 2021. Atribuyó el incidente a dos problemas técnicos en Consul bajo su carga de trabajo: contención asociada con una función de streaming y rendimiento patológico de BoltDB. Un único clúster de Consul que cumplía varias funciones fundamentales amplió el impacto, mientras que las dependencias de monitoreo dificultaron la detección del problema.
  • La restauración requirió más que eliminar las causas inmediatas. Los ingenieros tuvieron que reconstruir los cachés, corregir el estado de programación, reiniciar los servicios con la capacidad adecuada y verificarlos, para luego admitir tráfico gradualmente. El registro muestra que las herramientas de recuperación y los ejercicios de inicio en frío son controles de continuidad separados, no detalles que puedan improvisarse después de una falla.
  • Roblox posteriormente describió telemetría independiente, separación adicional de Consul, un segundo centro de datos, infraestructura celular y experimentos activo-activo. Estos cambios son evidencia significativa de prioridades cambiadas, pero la rendición de cuentas duradera aún depende de la conmutación por error medida, los mapas de dependencias, los simulacros de restauración, los métodos de impacto en los creadores y el cierre público de las acciones correctivas.

El tiempo de actividad se convirtió en parte del acuerdo de plataforma

Cuando Roblox se desconectó en octubre de 2021, ya era más que un catálogo de juegos. Era una plataforma gestionada en la que las personas se reunían, los creadores publicaban experiencias y artículos virtuales, y los desarrolladores construían negocios. Roblox proporcionaba gran parte de la infraestructura que un estudio independiente tendría que ensamblar: alojamiento, almacenamiento, redes, distribución, facturación, moderación, atención al cliente, cumplimiento global y acceso a una gran audiencia. Ese acuerdo reducía el costo de la creación. También concentraba el control operativo.

La distinción es importante para la rendición de cuentas. Una interrupción convencional de entretenimiento impide que un cliente use un servicio adquirido durante un período. Una interrupción de plataforma puede interrumpir varias relaciones a la vez. Los usuarios pierden el acceso a espacios sociales y de entretenimiento. Los creadores pueden perder participación, transacciones y la capacidad de operar experiencias, dependiendo de cómo su trabajo dependa de las funciones de la plataforma afectadas. Los equipos que dependen de los ingresos de la plataforma pueden perder tiempo de trabajo y impulso comercial.

Roblox mismo pierde actividad, reservas y confianza. Las partes no tienen la misma capacidad para prevenir o reparar la falla, porque Roblox controla los sistemas fundamentales.

Las propias cifras de la empresa ilustran la escala de ese acuerdo. Su informe técnico posterior al incidente indicó que aproximadamente 50 millones de jugadores usaban Roblox regularmente cada día en el momento del incidente. Sus materiales financieros de 2021 informaron un rápido crecimiento en usuarios activos diarios, participación y ganancias de desarrolladores. Roblox luego dijo que la comunidad de desarrolladores ganó más de quinientos millones de dólares en 2021. Estas cifras describen diferentes poblaciones y medidas; no deben combinarse en un solo recuento de personas afectadas.

Su relevancia es más simple: a finales de 2021, la continuidad del servicio tenía consecuencias tanto económicas como para los consumidores.

Esto no significa que una plataforma grande prometa disponibilidad perfecta. Los sistemas distribuidos complejos fallan, y los operadores deben hacer concesiones entre latencia, costo, control y resiliencia. La rendición de cuentas comienza con una pregunta más práctica: ¿la organización diseñó, probó y gobernó sus sistemas para la dependencia que había invitado?

Esa prueba incluye la arquitectura antes de un incidente, la calidad de la validación de cambios, la independencia de la observabilidad, la capacidad de reiniciar desde un inicio en frío, el método utilizado para medir el impacto en las partes interesadas y la evidencia producida después del trabajo correctivo.

Roblox tomó una decisión de infraestructura deliberada. Operó sistemas centrales en sus propios centros de datos porque creía que la infraestructura privada era más económica y predecible a su escala, particularmente para cargas de trabajo sensibles a la latencia. La empresa dijo que esos ahorros influyeron en lo que podía devolver a los creadores. Esa puede ser una estrategia racional. Pero la propiedad cambia el mapa de responsabilidades.

Una empresa que controla la computación, el almacenamiento, las redes y la orquestación fundamentales tiene menos base para atribuir la responsabilidad de la continuidad a un proveedor de nube pública cuando surge una falla en su propio plano de control. Es dueña de la arquitectura, el modelo operativo y la capacidad de restauración que justifican la decisión.

La interrupción es, por lo tanto, más útil como caso de control. Muestra cómo un mecanismo técnico diseñado para mejorar la eficiencia puede interactuar con la escala, las dependencias compartidas y las limitaciones de recuperación que se hicieron visibles durante la restauración. También muestra por qué un informe detallado posterior al incidente, por valioso que sea, es solo una parte de la rendición de cuentas. El estándar más difícil pregunta si la organización puede demostrar que las lecciones se convirtieron en controles independientes que continúan funcionando a medida que la plataforma crece.

Una falla en el plano de control se convirtió en una interrupción de la plataforma

El relato detallado de Roblox comienza a las 13:37, hora del Pacífico, del 28 de octubre, cuando el rendimiento de Vault se degradó y un servidor de Consul mostró una alta carga de CPU. Los jugadores aún no se veían afectados. La plataforma dependía de un conjunto de tecnologías de HashiCorp. Nomad programaba contenedores. Vault respaldaba los flujos de trabajo de autenticación y secretos. Consul proporcionaba descubrimiento de servicios, comprobaciones de salud, bloqueo de sesiones y almacenamiento clave-valor. A la escala de Roblox, estas no eran herramientas periféricas.

Ayudaban a miles de servicios y contenedores a localizarse y confiar entre sí.

La arquitectura significaba que un clúster de Consul no saludable podía afectar varias funciones de control juntas. Los servicios no podían descubrir sus dependencias de manera confiable. Nomad y Vault también dependían de Consul. Programar nuevos contenedores y recuperar secretos de producción se volvió difícil. Por lo tanto, un problema en el plano de control se propagó a un problema de disponibilidad de la aplicación, aunque las bases de datos de usuarios subyacentes no se describieron como la causa inicial.

A las 16:35, el número de jugadores en línea había caído a aproximadamente la mitad de lo normal, según el informe posterior al incidente. El registro de estado a las 16:00 indicó que muchas experiencias de los jugadores estaban afectadas. Actualizaciones posteriores describieron un problema interno del sistema, recuperación en curso, una causa interna subyacente identificada y restauración incremental del tráfico. Las operaciones normales se marcaron como restauradas a las 16:45 del 31 de octubre. El informe de ingeniería midió el intervalo en 73 horas.

Roblox identificó dos mecanismos técnicos. Primero, una función de streaming relativamente nueva de Consul encontró contención excesiva bajo la combinación de una carga de lectura y escritura inusualmente alta presente en el entorno de la empresa. El streaming estaba destinado a reducir el uso de CPU y el ancho de banda de la red en comparación con el long polling. Sin embargo, bajo el patrón de producción de Roblox, su implementación concentró la contención de una manera que bloqueó las escrituras y degradó el clúster.

Segundo, la carga de trabajo de Roblox expuso un rendimiento patológico en BoltDB, que Consul utilizaba para su registro de escritura anticipada Raft. BoltDB rastreaba páginas reutilizables en una lista libre. Bajo el patrón de uso del incidente, mantener esa estructura se volvió costoso. El informe posterior al incidente describió un almacén de registros cuyo tamaño físico y lista libre eran mucho más grandes de lo que implicaban los datos vivos, lo que provocaba que las adiciones lógicas pequeñas implicaran mucho más trabajo. Ese mecanismo contribuyó a escrituras Raft lentas y líderes inestables.

Estos eran problemas distintos. Sería inexacto colapsarlos en un vago error de base de datos, y sería igualmente inexacto describir el clúster único de Consul como la única causa técnica raíz. La contención del streaming y el comportamiento de BoltDB explican mecanismos importantes de falla. El clúster compartido y la cantidad de funciones que dependían de él explican por qué esos mecanismos tuvieron consecuencias tan amplias. Las limitaciones de observabilidad y arranque ayudan a explicar por qué el diagnóstico y la restauración tomaron tanto tiempo.

Esa separación es central para la gobernanza. La causa raíz, el radio de explosión, la debilidad de detección y la fricción de recuperación suelen pertenecer a diferentes propietarios de controles. Un propietario de software puede ser responsable del lanzamiento de una función. Un equipo de plataforma puede ser propietario de la topología del clúster. Un equipo de observabilidad puede ser propietario de la independencia de la telemetría. Los equipos de servicios pueden ser propietarios del orden de reinicio y los modos degradados. El comando de incidentes puede ser propietario de las decisiones de restauración y las actualizaciones públicas.

Si un informe posterior al incidente asigna cada problema a un solo error, puede dejar a los otros propietarios sin obligaciones comprobables.

La arquitectura también desafía una suposición común sobre la redundancia. Consul mismo usaba votantes y no votantes y podía sobrevivir a fallas de máquinas ordinarias. Eso no impidió que una carga de trabajo y un comportamiento de software hicieran que el clúster no fuera saludable como sistema. Los nodos redundantes dentro de un dominio de falla compartido no son lo mismo que los dominios de falla independientes.

Cuando el mismo clúster transporta descubrimiento de servicios, salud y coordinación para muchas cargas de trabajo, la duplicación dentro de ese clúster puede preservar la disponibilidad contra una máquina fallida, pero ofrece poca protección contra una patología de rendimiento compartida.

Por lo tanto, la pregunta práctica de rendición de cuentas no es si Roblox tenía servidores redundantes. Es si la organización había identificado qué servicios del plano de control podían fallar juntos, cuánto de la plataforma los seguiría y qué camino independiente podría mantener el servicio mínimo o la recuperación. Esto requiere un mapa de dependencias expresado en términos operativos, no solo un diagrama de infraestructura.

Debe indicar qué funciones de usuario, servicios internos, credenciales, programadores, cachés y sistemas de monitoreo dependen de cada componente de control, así como qué sucede cuando el componente se vuelve lento en lugar de completamente no disponible.

Los cambios de eficiencia necesitan pruebas con forma de producción

La función de streaming tenía un propósito atractivo. Estaba diseñada para distribuir actualizaciones con menos sobrecarga de CPU y red. Roblox dijo que habilitó la función en un subconjunto de servicios, observó los beneficios esperados y la expandió durante varios meses. El 27 de octubre, un día antes de la interrupción, habilitó el streaming para un servicio backend responsable del enrutamiento de tráfico. También aumentó el número de nodos de enrutamiento de tráfico en un 50 por ciento en preparación para la demanda esperada de fin de año.

Esta secuencia no debe reducirse a una afirmación simplista de que una implementación causó 73 horas de inactividad. La empresa describió un sistema que parecía funcionar al nuevo nivel durante aproximadamente un día antes del incidente. También encontró un segundo problema de BoltDB después de que se mitigara el problema inmediato de streaming. Las fuentes públicas no establecen el registro de aprobación interno, el plan de pruebas, los criterios de implementación o las decisiones individuales. Atribuir negligencia sin esos registros excedería la evidencia.

Sin embargo, la secuencia plantea una fuerte pregunta de control: ¿qué representaban las pruebas de preproducción y de implementación gradual? Un cambio en sistemas distribuidos puede pasar pruebas funcionales y pruebas de carga ordinarias mientras falla bajo la interacción del recuento de flujos, la rotación, la mezcla de lectura/escritura, la topología de CPU, la contención de bloqueos y el gráfico de dependencias real. Una función que reduce el uso promedio de recursos aún puede crear una cola peligrosa bajo una carga de trabajo particular.

Por lo tanto, las pruebas de escala deben reproducir la forma de la producción, no solo su tasa de transacción promedio.

Para una función del plano de control, las pruebas con forma de producción deben incluir al menos cuatro dimensiones. La primera es la composición de la carga: las lecturas, escrituras, suscripciones, actualizaciones de estado y rotación deben ocurrir en combinaciones realistas. La segunda es la topología: las pruebas deben representar el número de clientes, clústeres, votantes, almacenes de datos y arquitecturas de CPU utilizadas en producción. La tercera es el impacto en las dependencias: los equipos deben saber qué funciones de la plataforma se degradan cuando las operaciones de control se ralentizan.

La cuarta es la reversión: deshabilitar la función debe ser seguro y rápido incluso cuando el propio plano de control está deteriorado.

Una quinta dimensión es el margen de crecimiento. La empresa asoció el incidente con el crecimiento en el número de servidores en sus centros de datos. La aprobación de capacidad no puede ser un evento único cuando la población subyacente de servidores, contenedores y servicios se está expandiendo rápidamente. El control debe pronosticar cuándo un diseño por lo demás estable se acerca a un régimen de contención y definir un punto de parada antes de llegar allí. Eso requiere telemetría que pueda distinguir las ganancias de eficiencia saludables de los márgenes de seguridad cada vez más reducidos.

La implementación gradual es útil solo cuando las etapas están conectadas a condiciones de aborto explícitas. Un porcentaje de implementación por sí mismo no es un control. Los operadores necesitan indicadores de nivel de servicio, señales de contención, medidas de estabilidad del líder, umbrales de latencia de escritura y criterios de salud posteriores que determinen si la siguiente etapa puede continuar. También necesitan una ventana de observación lo suficientemente larga como para capturar los ciclos de carga de trabajo.

Un cambio que permanece estable durante una hora puede fallar durante una mezcla diferente de actualizaciones de enrutamiento, implementaciones y rotación de comprobaciones de estado.

La lección organizativa es más amplia que Consul. Las empresas frecuentemente adoptan un componente de plataforma compartido porque estandariza el trabajo y reduce el costo duplicado. El éxito anima a más equipos a depender de él. El componente gradualmente se convierte en un riesgo de modo común incluso si ninguna decisión de adopción individual parece peligrosa. Por lo tanto, la gobernanza debe revisar la concentración a medida que cambia el uso. Una dependencia que era tolerable para diez servicios puede requerir aislamiento, fragmentación o un respaldo independiente cuando soporta cientos.

Por qué las primeras soluciones no solucionaron el incidente

Las interrupciones largas a menudo incluyen varias acciones razonables que no funcionan porque el modelo inicial es incorrecto. El relato de Roblox es inusualmente útil porque describe esas hipótesis fallidas en lugar de presentar un camino retrospectivo limpio.

Los ingenieros primero vieron latencia elevada y sospecharon hardware degradado. A gran escala, el hardware lento es plausible, y un clúster puede reaccionar de manera diferente a una máquina que funciona mal que a una que falla limpiamente. El equipo reemplazó un nodo y luego trasladó el clúster a máquinas más nuevas con el doble de núcleos y almacenamiento más rápido. El rendimiento no se recuperó. El informe posterior al incidente dijo que la arquitectura de más núcleos puede haber empeorado la contención.

Luego, el equipo probó una estrategia de restablecimiento de estado. Apagó Consul y restauró una instantánea del comienzo de la interrupción. Debido a que los servicios dependientes reanudarían inmediatamente las lecturas y escrituras, los ingenieros usaron reglas de red para bloquear el acceso y reintroducirlo de manera controlada. Las métricas inicialmente parecían saludables, pero se degradaron nuevamente cuando el tráfico de servicios regresó. El estado restaurado no había eliminado la carga de trabajo ni la condición de implementación que hacía que el clúster no fuera saludable.

A continuación, el equipo redujo la demanda. Identificó a los usuarios de Consul, deshabilitó el uso no esencial, redujo la escala de los servicios y disminuyó la frecuencia de las comprobaciones de salud. Esas acciones deberían haber dado al clúster espacio para estabilizarse. Sin embargo, el problema regresó bajo mucha menos carga. Ese resultado fue una observación crítica: el tráfico agregado por sí solo no podía explicar la falla.

Solo después de que el equipo examinara la evidencia de rendimiento de nivel inferior, la contención relacionada con el streaming se hizo visible. Deshabilitar el streaming mejoró la latencia de escritura de Consul. Incluso entonces, algunos líderes electos permanecieron lentos. Los ingenieros de HashiCorp más tarde conectaron ese comportamiento con el mantenimiento de la lista libre de BoltDB bajo el patrón de uso de Roblox. Por lo tanto, el incidente involucró una secuencia de revisiones del modelo en lugar de una sola idea tardía.

Esta historia revela dos problemas de rendición de cuentas. El primero es la resiliencia diagnóstica. Un sistema debe preservar suficiente evidencia independiente para probar hipótesis competidoras mientras está degradado. Las métricas de hardware, los perfiles de bloqueo, el comportamiento del líder, la latencia de escritura, la rotación de clientes, la contrapresión de red y la salud de las dependencias deben permanecer disponibles sin depender del mismo plano de control. El segundo es la trazabilidad de las decisiones.

El comando de incidentes debe registrar por qué se adoptó una hipótesis, qué evidencia la falsificaría, qué cambio se hizo, qué sucedió y qué riesgo introdujo el cambio.

Los intentos de remediación fallidos no son evidencia inherente de malas prácticas. Los equipos de incidentes actúan bajo incertidumbre y deben equilibrar la velocidad con la seguridad. Reemplazar hardware sospechoso, restaurar una instantánea conocida y reducir la carga pueden ser racionales. Surgiría un problema de gobernanza si una organización no pudiera mostrar la evidencia utilizada, no definiera criterios de éxito y reversión, o repitiera intervenciones sin aprender de los resultados.

El hardware más potente ofrece una lección particularmente importante. La capacidad a menudo se trata como un remedio universal para fallas de rendimiento. En patologías de concurrencia, puede cambiar el tiempo y la contención de maneras que hacen que el comportamiento sea menos estable. Comprar margen no es un sustituto de comprender los costos de coordinación. Una revisión de gobernanza debe preguntar si los planes de escala modelan la contención de bloqueos, las colas, los efectos entre zócalos y la amplificación de fallas, no solo la utilización de CPU y el rendimiento de almacenamiento.

La recuperación de instantáneas también ilustra la diferencia entre la integridad del estado y la salud del servicio. Restaurar una instantánea anterior puede eliminar el estado corrupto o no deseado. No elimina un patrón de acceso no saludable, un problema de implementación de software o un bucle de dependencia. Los procedimientos de recuperación necesitan un modelo explícito de lo que se espera que repare la instantánea y qué condiciones deben cambiarse antes de que los clientes se reconecten.

Por lo tanto, la duración de 73 horas no fue simplemente tiempo dedicado a buscar un defecto oculto. Incluyó tiempo dedicado a probar explicaciones plausibles, descubrir que el plano de control no podía tolerar su carga de trabajo de retorno, sortear el comportamiento separado del líder y luego reconstruir los servicios por encima de él. Un programa de continuidad honesto debe presupuestar esa cadena. El tiempo medio de reparación no puede pronosticarse a partir del tiempo necesario para reiniciar un componente cuando la tarea real es reconstruir una plataforma dependiente.

La recuperación fue un sistema de ingeniería separado

Una vez que Consul se estabilizó, Roblox no estuvo inmediatamente listo para reabrir. La capa de caché tuvo que ser redesplegada. El informe posterior al incidente dijo que los cachés normalmente manejaban aproximadamente mil millones de solicitudes por segundo en varias capas y contenían datos transitorios que podían repoblarse desde las bases de datos subyacentes. En teoría, eso hacía que el redespliegue fuera sencillo.

En la práctica, la restauración encontró un estado de programación incorrecto, un nodo no saludable que parecía disponible para el programador y herramientas de implementación diseñadas para cambios incrementales en lugar de un gran arranque en frío.

A las 54 horas, Consul era lo suficientemente estable como para que la recuperación continuara. A las 61 horas, la empresa informó un clúster de Consul saludable y un sistema de caché funcional. Luego, los servicios restantes tuvieron que iniciarse con la capacidad adecuada y verificarse antes de que el tráfico pudiera regresar. Los cachés fríos y la incertidumbre sobre la salud del sistema hicieron que el retorno inmediato de todo el tráfico no fuera seguro.

Roblox utilizó el direccionamiento DNS para admitir usuarios gradualmente. El informe posterior al incidente describió el aumento del acceso en pasos de aproximadamente el diez por ciento mientras los ingenieros observaban la carga de la base de datos, el rendimiento del caché y la estabilidad general. La página de estado registró la admisión incremental de tráfico a las 12:51 del 31 de octubre y las operaciones normales a las 16:45. Esto no fue meramente una fase de comunicación. Fue una prueba de producción controlada de si la plataforma restaurada podía soportar la demanda de retorno.

La secuencia expone una debilidad común en la planificación de la resiliencia. Las organizaciones prueban la creación de copias de seguridad y quizás la conmutación por error de componentes, pero no prueban regularmente un inicio en frío completo. Un arranque en frío hace preguntas diferentes. ¿Puede el programador reconstruir el estado preciso? ¿Pueden los cachés calentarse sin abrumar las bases de datos? ¿Pueden los secretos y el descubrimiento de servicios inicializarse en el orden correcto? ¿Son eficientes las herramientas de implementación cuando faltan miles de instancias en lugar de cuando cambia un pequeño porcentaje?

¿Sabe el equipo de incidentes qué servicios son esenciales para una plataforma mínima viable?

Por lo tanto, la ingeniería de recuperación debe tener su propio propietario de producto, requisitos y ejercicios. Necesita planes de inicio que tengan en cuenta las dependencias, automatización que pueda detenerse de manera segura, modelos de capacidad para cachés fríos, comprobaciones de validación para la reconstrucción del estado y un controlador de admisión de tráfico con puertas medibles. Las herramientas deben funcionar cuando las suposiciones normales son falsas.

Esto también cambia la forma en que los operadores deben medir los objetivos de recuperación. Un objetivo de tiempo de recuperación para Consul no es lo mismo que un objetivo para la plataforma de Roblox. Este último incluye todas las dependencias críticas por encima del plano de control, comprobaciones de integridad, calentamiento de caché, autenticación, acceso a datos de usuario, herramientas de creador, pagos y retorno de tráfico controlado. Declarar un componente saludable antes de que el servicio sea utilizable puede ser técnicamente preciso, pero operativamente engañoso.

Lo contrario también es cierto. Restaurar una página pública no demuestra que la plataforma se haya recuperado. Un servicio puede parecer disponible mientras el procesamiento en segundo plano, las herramientas de creador, las transacciones o la integridad de los datos permanecen degradados. La evidencia de recuperación debe cubrir un conjunto definido de recorridos de usuario y creador, no solo una respuesta HTTP o un gráfico de usuarios concurrentes.

Los ejercicios importan porque el código de restauración se deteriora. Las dependencias del servicio cambian, aparecen nuevos cachés, la propiedad se mueve y la documentación operativa se desvía. Un manual que funcionó un año antes puede que ya no represente el sistema. En enero de 2022, Roblox dijo que había rediseñado sus mecanismos de implementación de caché, mientras que la implementación aún estaba en curso y las herramientas de automatización y procesos más amplios permanecían en desarrollo.

Por separado, dijo que las mejoras identificadas de Nomad para activar trabajos grandes después de una larga indisponibilidad estaban programadas para su próxima actualización de Nomad. El seguimiento responsable es la evidencia de que esos mecanismos se ejercitaron repetidamente a escala significativa, no solo que se planificaron.

El monitoreo debe sobrevivir al sistema que monitorea

El informe posterior al incidente identificó una dependencia circular entre la telemetría y Consul. Algunos sistemas de monitoreo críticos dependían de la infraestructura afectada, lo que reducía la visibilidad cuando los ingenieros más la necesitaban. Roblox dijo que más tarde eliminó esa dependencia y agregó información más específica sobre el rendimiento de Consul y BoltDB.

Este es un patrón clásico pero persistente de falla. Centralizar la telemetría puede mejorar las operaciones normales, pero una tubería de monitoreo que comparte dependencias de identidad, descubrimiento, programación, almacenamiento o red con el servicio monitoreado puede desaparecer durante un incidente amplio. Los paneles pueden verse vacíos, las alertas pueden detenerse y los operadores pueden confundir la falta de datos con una mejora.

La observabilidad independiente no requiere una segunda copia de cada sistema de análisis. Requiere una ruta de evidencia mínima con diferentes dependencias de falla. Esa ruta debe preservar un pequeño conjunto de métricas y registros críticos: liderazgo del clúster, latencia de escritura, profundidad de cola, tasas de error, salud del descubrimiento de servicios, disponibilidad de autenticación, cambios de configuración y accesibilidad de red. Debe ser accesible para los respondedores de incidentes incluso cuando los servicios de control de producción normales no están disponibles.

La distinción entre monitoreo y diagnóstico es importante. Una alerta puede informar que la latencia es alta, pero el diagnóstico requiere evidencia histórica y comparativa. Los ingenieros necesitan saber cuándo comenzó el cambio, qué carga de trabajo se desplazó, si el liderazgo cambió, cómo evolucionó la contención de bloqueos y qué servicios posteriores fallaron primero. Si la retención o el acceso a esa evidencia depende de la plataforma deteriorada, la organización pierde la cronología necesaria para elegir entre hipótesis.

El artículo posterior de Roblox sobre confiabilidad describió un modelo de control más amplio construido en torno a indicadores de nivel de servicio, indicadores de dependencia, revisiones arquitectónicas, informes de incidentes e informes mensuales de confiabilidad. Ese modelo es significativo porque trata las dependencias como contribuyentes medibles a los resultados del servicio. Un servicio puede cumplir su objetivo de salud interno mientras falla a sus consumidores porque una dependencia es lenta o inalcanzable.

Medir desde la perspectiva del consumidor reduce la posibilidad de declarar el éxito a partir de una métrica estrecha del servidor.

La prueba de gobernanza es si estas medidas impulsan decisiones. Un panel no reduce el riesgo por existir. Los equipos necesitan umbrales, propietarios y consecuencias: una dependencia por debajo de su objetivo de servicio desencadena trabajo correctivo; una nueva dependencia no puede lanzarse sin una revisión del modo de falla; una acción de incidente permanece abierta hasta que la evidencia muestre que el control funciona; y los líderes senior pueden ver las dependencias comunes que cruzan los límites del equipo.

La observabilidad independiente también debe ejercitarse. Durante una prueba de resiliencia, la ruta de telemetría principal puede aislarse deliberadamente para confirmar que la ruta mínima permanece disponible, confiable y comprendida. De lo contrario, la copia de seguridad puede fallar por credenciales caducadas, enrutamiento faltante, capacidad insuficiente o herramientas desconocidas en el mismo momento en que se necesita.

La dependencia del creador cambia la prueba de continuidad

La economía del creador no es una parte ornamental de este caso. Roblox promovió un modelo en el que los creadores podían construir, publicar y monetizar experiencias sin operar su propia infraestructura global. La empresa manejaba los servicios de la plataforma y distribuía las ganancias a través de Robux y el programa Developer Exchange. En 2021, Roblox informó tarifas de intercambio de desarrolladores por cientos de millones de dólares y dijo que su comunidad ganó más de quinientos millones de dólares.

Esas cifras no establecen la cantidad perdida durante la interrupción. Una cifra de ganancias de desarrolladores cubre un período y un programa definido. Los usuarios activos diarios miden la actividad, no los negocios. Las horas de participación, las reservas y las transacciones son métricas diferentes. Un análisis de rendición de cuentas no debe multiplicar un promedio diario por 73 horas y llamar al resultado daños a los creadores. El uso varía según el tiempo, la geografía y la experiencia, y una plataforma no disponible puede desplazar la actividad en lugar de eliminar cada transacción de forma permanente.

El punto relevante es la asimetría de control. Los creadores podían diseñar experiencias y gestionar sus propios equipos, pero no podían restaurar el descubrimiento de servicios, los cachés o los centros de datos de Roblox. El modelo gestionado de la plataforma transfirió el trabajo de infraestructura lejos de los creadores y lo concentró dentro de Roblox. Cuando la plataforma falló, esos creadores tenían alternativas técnicas limitadas.

Eso convierte la medición del impacto en las partes interesadas en un control de continuidad. La primera actualización de Roblox dijo que implementaría una política para compensar económicamente a la comunidad de creadores. El compromiso indica que Roblox trató el incidente como si tuviera implicaciones económicas más allá de las molestias para el usuario. Las fuentes públicas en el registro actual no proporcionan suficiente detalle para concluir cómo se midió o compensó a cada creador. Un compromiso y un resultado son hechos diferentes.

Un método de compensación defendible definiría la elegibilidad, los períodos afectados, la actividad de referencia, las exclusiones, las apelaciones y el tratamiento de las experiencias nuevas o estacionales. Explicaría si la medida utilizó Robux esperados, pagos basados en la participación, transacciones, publicidad u otro proxy. También abordaría a los creadores cuya pérdida principal fue operativa en lugar de directamente transaccional, como un lanzamiento retrasado por la interrupción o el tiempo del personal dedicado a gestionar las expectativas de la comunidad.

Ningún modelo puede recrear un contrafactual perfecto. La rendición de cuentas no exige una falsa precisión. Exige reglas transparentes, aplicación consistente y evidencia de que los casos atípicos pueden revisarse. El método debe evitar recompensar solo a los creadores más grandes cuyos datos históricos son más fáciles de modelar, mientras pasa por alto a los equipos más pequeños con dependencia concentrada.

El diseño de continuidad también puede dar a los creadores mejores opciones antes de un incidente. Las interfaces de estado de la plataforma deben distinguir el acceso de usuario, Studio, entrega de activos, almacenes de datos, transacciones y publicación. Las comunicaciones dirigidas a los creadores deben indicar qué funciones están degradadas y qué trabajo es seguro realizar. Las funciones de exportación y copia de seguridad pueden reducir la dependencia de los activos fuente y los registros comerciales, incluso cuando las experiencias en sí no pueden ejecutarse en otro lugar.

El lenguaje contractual y de políticas debe hacer comprensibles las expectativas de servicio y los límites de remedio.

Los mismos principios se aplican más allá de Roblox. Los mercados, las tiendas de aplicaciones, las plataformas en la nube y los ecosistemas de software invitan a terceros a construir negocios sobre infraestructura gestionada. La plataforma puede no garantizar ingresos, pero debe poder explicar cómo mide la continuidad, protege las dependencias comunes, comunica los incidentes y evalúa el daño. El crecimiento aumenta esa obligación porque más actividad externa se acopla a las decisiones de control interno.

Los materiales posteriores de Roblox sobre la economía hacen explícita la dependencia. La empresa describió el alojamiento de infraestructura, almacenamiento, atención al cliente, localización, procesamiento de pagos y moderación como costos que asumía por las experiencias. También describió miles de millones de transacciones virtuales y ganancias crecientes de los creadores. Estos son beneficios de la escala, pero también son evidencia de que la disponibilidad es parte de la arquitectura económica.

Por lo tanto, un operador debe tratar la continuidad del creador como un riesgo a nivel de la junta directiva junto con la participación del usuario y los ingresos. Las medidas útiles incluyen la disponibilidad del servicio orientado al creador, la integridad de las transacciones, la disponibilidad de publicación, el tiempo para conciliar pagos retrasados, el tiempo de procesamiento de reclamos y la distribución del impacto según el tamaño del creador. Un solo número de tiempo de actividad de la plataforma puede ocultar una interrupción que afecta de manera desproporcionada a las herramientas de las que dependen los creadores.

La divulgación debe separar causas, condiciones y compromisos

La divulgación de Roblox evolucionó en etapas. La actualización del CEO del 1 de noviembre se disculpó por la duración, describió un sistema central desbordado bajo carga pesada, rechazó el tráfico externo y una experiencia particular como causas, dijo que no se conocía pérdida de datos persistentes y prometió un remedio para los creadores. El informe detallado posterior al incidente llegó en enero después de que la empresa dijera que había completado más análisis y progresado en mejoras de confiabilidad.

Esa secuencia tiene fortalezas. La primera declaración corrigió rumores sin pretender contener el relato técnico final. El documento posterior describió hipótesis fallidas, concentración arquitectónica, debilidad de monitoreo y dificultad de recuperación. También reconoció responsabilidad y enumeró cambios en curso.

El registro aún debe leerse con atribución. El relato causal, la declaración de que no se conocía pérdida de datos y las descripciones de remediación son hallazgos y representaciones de Roblox. La colaboración con HashiCorp añade peso técnico, pero los documentos públicos no son una auditoría independiente. El análisis responsable puede usarlos ampliamente mientras mantiene claridad sobre su origen.

Una buena comunicación de incidentes separa al menos cuatro capas. La primera es el impacto observado: qué servicios fallaron, cuándo y para quién. La segunda es la comprensión actual: el modelo causal de trabajo y su confianza. La tercera es la acción operativa: qué se está cambiando y qué riesgo permanece durante la restauración. La cuarta es el remedio: cómo se identificarán y apoyarán las partes afectadas.

Mezclar estas capas crea problemas evitables. Una causa preliminar puede confundirse con un hallazgo final. Un sistema marcado como operativo puede interpretarse como que cada flujo de trabajo de creador está restaurado. Un control planificado puede tratarse como completado. Un compromiso de compensación puede informarse como prueba de que la compensación ocurrió.

El registro de estado es útil porque preserva los cambios contemporáneos en el estado operativo. Muestra investigación, identificación, recuperación, monitoreo, admisión incremental de tráfico y resolución. El informe posterior al incidente proporciona la narrativa técnica que la página de estado no pudo proporcionar durante el incidente. Los dos documentos sirven propósitos diferentes y no deben forzarse en una sola línea de tiempo sin respetar su nivel de detalle.

Un cierre responsable conectaría cada hallazgo importante con un propietario, fecha límite y método de verificación. Por ejemplo, eliminar una dependencia de telemetría circular debe ir seguido de una prueba de resiliencia que muestre que las métricas críticas permanecen disponibles durante el aislamiento de Consul. Dividir las cargas de trabajo debe ir seguido de un ejercicio de radio de explosión. Mejorar el arranque debe ir seguido de un simulacro completo de inicio en frío. Construir otro centro de datos debe ir seguido de una conmutación por error medida.

La divulgación pública no necesita exponer configuraciones sensibles ni crear un riesgo de seguridad. Puede indicar el objetivo de control, el tipo de prueba y el resultado en un nivel apropiado. Esa evidencia es más valiosa que una larga lista de proyectos cuyo estado operativo no puede juzgarse.

De un centro de datos activo a células

La retrospectiva de infraestructura de Roblox de 2023 describió un cambio sustancial en la topología después de la interrupción. En el momento del incidente, dijo, la plataforma tenía un centro de datos activo, aunque los componentes dentro de él tenían copias de seguridad. La empresa construyó un segundo centro de datos en otra región geográfica y alcanzó un acuerdo activo-pasivo: un sitio manejaba las cargas de trabajo mientras el otro estaba listo como respaldo.

Esto aborda un modo de falla que la redundancia a nivel de nodo no puede. Si una dependencia común o un error operativo hace que todo un sitio sea inutilizable, un sitio separado puede proporcionar otra ruta de recuperación. Pero la protección activo-pasivo es tan fuerte como la replicación, la preparación y la conmutación por error. Un sitio pasivo puede desviarse, carecer de capacidad o heredar el mismo defecto de software. Su valor debe demostrarse mediante ejercicios que incluyan consistencia de datos, disponibilidad del plano de control, credenciales, enrutamiento de red y retorno de tráfico.

Roblox también describió infraestructura celular dentro de sus centros de datos. Una célula es un conjunto acotado de máquinas y servicios destinado a contener fallas. Los servicios pueden replicarse entre células, lo que permite eliminar una célula no saludable mientras otras continúan operando. La empresa dijo que una célula contenía aproximadamente 1400 máquinas y que más del 70 por ciento del tráfico de servicios backend se servía desde células en el momento en que se publicó el artículo de 2023.

Las células son una respuesta al radio de explosión, no simplemente una técnica de empaquetado. Funcionan cuando las dependencias, los sistemas de implementación y el acceso a los datos respetan el límite. Si cada célula depende de un servicio de control global, una base de datos compartida o un empuje de configuración común, la separación aparente puede ser más débil de lo que sugiere el diagrama. La propia Roblox dijo que los experimentos activo-activo identificaron suposiciones de diseño, particularmente en torno al acceso a datos, que requerían reelaboración.

La uniformidad crea otra compensación. Las células intercambiables facilitan la conmutación por error y el reaprovisionamiento. El mismo software y configuración uniformes también pueden propagar un defecto rápidamente. Por lo tanto, la resiliencia requiere diversidad controlada en capas seleccionadas, implementación escalonada entre células y la capacidad de detener la propagación. Una arquitectura celular debe definir qué cambios pueden llegar a todas las células a la vez y cuáles deben cruzar una puerta de observación.

El objetivo a largo plazo era la operación activo-activo, en la que ambos centros de datos transportan tráfico y un balanceador de carga toma decisiones basadas en latencia, capacidad y salud. El modelo activo-activo puede reducir el retraso de conmutación por error porque la ruta alternativa ya está sirviendo a los usuarios. También aumenta la complejidad de coordinación. La consistencia de datos, el estado de sesión, la identidad, los pagos y los activos de los creadores pueden comportarse de manera diferente cuando el tráfico se mueve entre regiones.

La métrica responsable no es si una organización tiene dos centros de datos o 34 células. Es cuánta actividad de usuarios y creadores sobrevive a una falla realista. Un recuento de topología es una entrada. Las medidas de resultado incluyen el porcentaje de participación preservada, el tiempo para aislar una célula, el tiempo para cambiar el tráfico, la tasa de error de reconciliación de datos y si las herramientas de creador siguen siendo utilizables.

El artículo de 2024 del Grupo de Infraestructura de Roblox vinculó el trabajo de disponibilidad directamente con la interrupción de 2021. Describió un objetivo mensual de tiempo de actividad del usuario del 99.99% y presentó la disponibilidad, el costo de servicio y la productividad de ingeniería como medidas centrales. Ese marco reconoce una tensión real. La redundancia máxima puede ser costosa y operativamente compleja. La reducción de costos puede debilitar los márgenes. Las herramientas de productividad pueden crear dependencias compartidas.

La gobernanza debe hacer explícitas las compensaciones en lugar de permitir que una sola métrica domine.

La empresa también describió una huella de infraestructura que respalda miles de servicios internos, más de 135.000 servidores y cientos de millones de conexiones concurrentes. Las cifras exactas difieren según la fecha y la definición, por lo que no deben compararse sin cuidado. Su dirección es clara: la plataforma continuó creciendo después del incidente. Por lo tanto, una arquitectura correctiva debe superar el crecimiento. Un control que era suficiente en el momento de la implementación puede volverse inadecuado a medida que se multiplican los servicios, las máquinas y los creadores.

Las presentaciones posteriores preservan la pregunta de riesgo residual

Las retrospectivas de la empresa describen el progreso, mientras que las presentaciones ante la SEC continúan describiendo el riesgo de interrupción. Los dos no son contradictorios. La remediación puede reducir un modo de falla conocido sin eliminar la posibilidad más amplia de interrupción de la plataforma.

El Formulario 10-K de Roblox de 2021 identificó la interrupción de octubre y advirtió que las interrupciones podrían dañar las relaciones con usuarios, desarrolladores y creadores, reducir la participación, dañar la marca y afectar los resultados financieros. Presentaciones posteriores discutieron el costo y la complejidad de operar infraestructura tecnológica, la dependencia de servicios internos y externos, los límites en la redundancia y la recuperación ante desastres, y la posibilidad de que el seguro de interrupción del negocio no cubriera cada pérdida.

El Formulario 10-K de 2023 dijo que la Nube de Roblox estaba diseñada para ser tolerante a fallas y preparada para la recuperación ante desastres. Por separado, dijo que los servidores propiedad de la empresa operaban desde centros de datos y centros de datos perimetrales regionales en 19 ciudades, y que Roblox continuaba expandiéndose a múltiples centros de datos dentro y a través de regiones geográficas para mejorar la confiabilidad y la tolerancia a fallas.

La presentación también continuó identificando las interrupciones de octubre de 2021 y mayo de 2022 en su discusión de riesgos y reveló una recuperación de seguro de interrupción del negocio de cinco millones de dólares reconocida en 2023 en relación con la interrupción de la plataforma del cuarto trimestre de 2021.

Esa partida contable debe interpretarse de manera restringida. No es una estimación de pérdida total, una cifra de daños a los creadores ni una prueba de remediación. Muestra que el incidente tuvo una consecuencia comercial asegurable registrada más tarde. También ilustra cómo los efectos de la interrupción pueden cruzar períodos de presentación de informes.

El lenguaje de los factores de riesgo tiene su propio límite. Una presentación puede describir lo que podría suceder, no lo que sucedió en un incidente particular. Es útil para identificar la exposición declarada y el entorno de control de la empresa, pero no debe utilizarse para fabricar una falla no reportada. Por el contrario, el lenguaje de riesgo repetido después de la remediación no prueba que la remediación fallara. Refleja el hecho de que una plataforma de esta escala conserva un riesgo de continuidad.

La comparación más informativa es entre las afirmaciones de control y los resultados medibles. Si una empresa dice que las células limitan el radio de explosión, los informes de incidentes deben mostrar que menos usuarios se ven afectados cuando falla una célula. Si la protección activo-pasivo está completa, los ejercicios deben mostrar que el segundo sitio puede asumir la carga dentro de un período definido. Si el monitoreo es independiente, las pruebas deben mostrar que los respondedores retienen datos críticos durante una falla del plano de control.

Si el arranque se ha mejorado, los simulacros de inicio en frío deben completarse dentro del objetivo de recuperación.

Esta evidencia debe ser tendenciada a lo largo del tiempo. Una sola prueba exitosa puede demostrar que una ruta funcionó una vez. No muestra que la ruta permanezca lista después de cambios de software, personal y datos. Los controles de continuidad requieren garantía recurrente.

Un estándar práctico de rendición de cuentas

El caso de Roblox respalda un estándar de continuidad con diez pruebas vinculadas.

Primero, mapear las dependencias de control desde el consumidor hacia atrás.Comenzar con los recorridos de usuario y creador en lugar de los productos de infraestructura. Para cada recorrido, identificar las dependencias de identidad, descubrimiento de servicios, programación, almacenamiento, cachés, pagos, redes, configuración y monitoreo. Marcar los servicios compartidos en muchos recorridos y la ruta mínima necesaria para recuperarse.

Segundo, definir los dominios de falla en términos operativos.Los nodos, clústeres, células y centros de datos son etiquetas útiles solo si sus dependencias respetan el límite. Probar la falla lenta también como la falla limpia. Un plano de control degradado puede ser más difícil que uno no disponible porque las comprobaciones de salud y los reintentos amplifican la carga mientras los componentes permanecen nominalmente alcanzables.

Tercero, hacer que las pruebas de cambio se asemejen a la producción.Representar la mezcla real de lectura/escritura, rotación de clientes, población de flujos, topología de CPU, recuento de servicios y ciclos pico. Un despliegue debe tener condiciones de aborto cuantitativas y una ruta de reversión probada. Los planes de capacidad deben monitorear el acercamiento a regímenes de contención, no solo la utilización promedio.

Cuarto, preservar la evidencia independiente.La telemetría crítica debe sobrevivir a la falla de los sistemas que observa. Mantener una ruta mínima fuera del dominio para el liderazgo, latencia de escritura, profundidad de cola, errores, cambios de configuración y salud de dependencias. Ejercitar esa ruta y verificar el acceso bajo condiciones de incidente.

Quinto, tratar el inicio en frío como un producto.Documentar y automatizar el orden de inicio, la reconstrucción del estado, el calentamiento de la caché, la disponibilidad de secretos, la protección de la base de datos y el servicio mínimo viable. Probar desde un inicio en frío a escala representativa. Registrar dónde permanece la intervención manual y reducirla deliberadamente.

Sexto, controlar el retorno del tráfico.La restauración debe usar etapas medibles. En cada etapa, evaluar las tasas de error, latencia, rendimiento de la caché, presión de la base de datos, corrección de las transacciones y disponibilidad de las herramientas de creador. Definir las condiciones de parada y reversión antes de que el tráfico comience a regresar.

Séptimo, medir el impacto en las partes interesadas con denominadores válidos.Separar usuarios, creadores, transacciones, horas de participación y negocios. Explicar las suposiciones y la incertidumbre. Un remedio para creadores debe publicar las reglas de elegibilidad y cálculo y proporcionar una vía de apelación en lugar de presentar un total opaco.

Octavo, conectar los hallazgos con acciones verificadas.Cada condición importante del incidente necesita un propietario, fecha objetivo y método de validación. Cerrar una tarea porque se envió código es más débil que cerrarla porque un ejercicio de falla demostró el resultado previsto.

Noveno, gobernar la concentración continuamente.Las plataformas compartidas se vuelven más riesgosas a medida que crece su adopción. Reevaluar si un clúster, servicio de identidad, plano de configuración o sistema de observabilidad se ha convertido en una dependencia de modo común. Exigir aislamiento o respaldo antes del próximo umbral de escala, no después.

Décimo, informar la continuidad como un conjunto de resultados.Un solo porcentaje de tiempo de actividad es insuficiente. Hacer seguimiento de la disponibilidad del usuario, disponibilidad de herramientas de creador, integridad de las transacciones, tiempo de conmutación por error, tiempo de restauración, radio de explosión, antigüedad de los elementos de acción y resultados de los ejercicios. Los líderes senior deben ver dónde las decisiones de costo y productividad alteran esos resultados.

Estas pruebas asignan responsabilidad sin pretender que un equipo controle todo. Los proveedores de software son dueños de los defectos y correcciones en sus productos. Los operadores de plataforma son dueños de cómo se prueban, configuran, aíslan y monitorean los productos. Los equipos de servicio son dueños de los modos degradados y la preparación para el reinicio. El comando de incidentes es dueño de las decisiones coordinadas. Los ejecutivos son dueños del apetito de riesgo y las compensaciones de recursos. Una plataforma de creadores es dueña del método utilizado para evaluar y abordar el daño al ecosistema que opera.

Las pruebas también evitan un debate inútil entre la nube privada y la pública. Roblox argumentó que la infraestructura privada ofrecía ventajas de costo y latencia a su escala y usaba la nube pública donde era apropiado. Cualquier modelo puede fallar. Una nube pública puede proporcionar zonas independientes y planos de control gestionados, pero los clientes aún pueden crear dependencias compartidas o rutas de recuperación débiles. La infraestructura privada ofrece control, pero el operador debe construir y verificar capacidades que un proveedor podría proporcionar de otro modo.

La rendición de cuentas sigue al control y la dependencia, no a una categoría de marketing.

El incidente de 2021 sigue siendo importante porque expuso varias capas a la vez. Una función diseñada para la eficiencia interactuó mal con una carga de trabajo inusual. Un segundo comportamiento de almacenamiento desestabilizó a los líderes. Un clúster compartido cumplía varios roles fundamentales, creando una pregunta de riesgo de concentración. El monitoreo dependía del entorno afectado. Las herramientas de recuperación no estaban diseñadas para el inicio en frío requerido. Los creadores dependían del retorno de la plataforma.

El relato detallado de Roblox y el trabajo arquitectónico posterior proporcionan evidencia inusualmente rica de aprendizaje. La empresa describió mecanismos técnicos específicos, reconoció la telemetría circular, construyó otro centro de datos, introdujo células y experimentó con operación activo-activo. Esas son señales más fuertes que una promesa genérica de invertir en confiabilidad.

Sin embargo, el juicio final de rendición de cuentas debe seguir siendo basado en evidencia. La pregunta adecuada no es si Roblox declaró que aprendió de la interrupción. Es si la plataforma puede demostrar repetidamente que una falla comparable del plano de control ahora permanece contenida, observable y recuperable mientras los usuarios y creadores retienen un nivel aceptable de servicio. A medida que la plataforma crece, esa demostración debe renovarse.

Fuentes

  1. https://about.roblox.com/intelligence team/2021/11/update-recent-service-outage
  2. https://about.roblox.com/intelligence team/2022/01/roblox-return-to-service-10-28-10-31-2021
  3. https://about.roblox.com/intelligence team/2022/01/2021-year-review-letter-ceo
  4. https://about.roblox.com/intelligence team/2022/01/year-roblox-2021-data
  5. https://about.roblox.com/intelligence team/2022/02/supporting-protecting-roblox-developer-user-community
  6. https://about.roblox.com/intelligence team/2022/04/delivering-large-scale-platform-reliability
  7. https://about.roblox.com/intelligence team/2022/10/team-behind-the-tech-creator-group
  8. https://about.roblox.com/intelligence team/2023/03/enabling-creation-anything-anywhere-anyone
  9. https://about.roblox.com/intelligence team/2023/04/team-behind-tech-economy-group
  10. https://about.roblox.com/intelligence team/2023/07/vision-roblox-economy
  11. https://about.roblox.com/intelligence team/2023/12/making-robloxs-infrastructure-efficient-resilient
  12. https://about.roblox.com/intelligence team/2024/07/how-the-infrastructure-group-drives-the-future-of-everything-we-do-at-roblox
  13. https://about.roblox.com/intelligence team/2023/03/tech-stack-metaverse
  14. https://about.roblox.com/intelligence team/2024/08/how-roblox-is-fueling-career-opportunities-across-the-us
  15. https://www.sec.gov/Archives/edgar/data/1315098/000131509821000030/rblx-2021118xexhibit991.htm
  16. https://www.sec.gov/Archives/edgar/data/1315098/000131509821000030/rblx-2021118xexhibit992.htm
  17. https://www.sec.gov/Archives/edgar/data/1315098/000131509822000035/rblx-20220215xexhibit991.htm
  18. https://www.sec.gov/Archives/edgar/data/1315098/000131509822000035/rblx-20220215xexhibit992.htm
  19. https://www.sec.gov/Archives/edgar/data/1315098/000131509822000058/rblx-20211231.htm
  20. https://www.sec.gov/Archives/edgar/data/1315098/000131509822000084/rblx-20220331.htm
  21. https://www.sec.gov/Archives/edgar/data/1315098/000131509822000125/rblx-20220630.htm
  22. https://www.sec.gov/Archives/edgar/data/1315098/000131509823000035/rblx-20221231.htm
  23. https://www.sec.gov/Archives/edgar/data/1315098/000131509824000026/rblx-20231231.htm
  24. https://status.roblox.com/pages/incident/59db90dbcdeb2f04dadcf16d/617b33af51fec9053d6122a1