Resumen

  • Roblox indicó que el tráfico externo máximo y una experiencia en particular no causaron la interrupción de octubre de 2021. Atribuyó el incidente a dos problemas técnicos internos de Consul bajo su carga de trabajo: contención asociada con una función de transmisión y un rendimiento patológico de BoltDB. Un único clúster de Consul que servía varias funciones fundamentales amplió el impacto, mientras que las dependencias de monitoreo hicieron que el problema fuera más difícil de detectar.
  • La restauración requirió más que eliminar las causas inmediatas. Los ingenieros tuvieron que reconstruir cachés, corregir el estado de programación, reiniciar servicios con la capacidad adecuada y verificarlos, y luego admitir tráfico gradualmente. El registro muestra que las herramientas de recuperación y los ejercicios de arranque en frío son controles de continuidad separados, no detalles que se puedan improvisar después de una falla.
  • Roblox luego 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 modificadas, pero la responsabilidad 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 para creadores y el cierre público de las acciones correctivas.

El tiempo de actividad se convirtió en parte del acuerdo de la 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 del entretenimiento impide que un cliente use un servicio adquirido por un período. Una interrupción de la plataforma puede interrumpir varias relaciones a la vez. Los usuarios pierden 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 afectadas de la plataforma. 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 dijo que aproximadamente 50 millones de jugadores usaban Roblox regularmente cada día en el momento del incidente. Sus materiales financieros de 2021 reportaron un rápido crecimiento en usuarios activos diarios, participación y ganancias de los 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: para 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 arranque 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. Operaba 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 influían 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.

Por lo tanto, la interrupción es 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 restricciones 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 exigente 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ó 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 admitía flujos de trabajo de autenticación y secretos. Consul proporcionaba descubrimiento de servicios, verificaciones de salud, bloqueo de sesiones y almacenamiento clave-valor. A la escala de Roblox, esas 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 en mal estado podía afectar varias funciones de control juntas. Los servicios no podían descubrir de manera confiable sus dependencias. 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 aplicaciones, aunque las bases de datos de usuario 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 se vieron afectadas. Actualizaciones posteriores describieron un problema interno del sistema, una recuperación en curso, una causa interna subyacente identificada y una 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 transmisión de Consul relativamente nueva encontró una contención excesiva bajo la combinación de carga de lectura y escritura inusualmente alta presente en el entorno de la empresa. La transmisión estaba destinada a reducir el uso de CPU y ancho de banda de red en comparación con la encuesta larga. 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.

En segundo lugar, la carga de trabajo de Roblox expuso un rendimiento patológico en BoltDB, que Consul usaba 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 activos, lo que provocaba que las pequeñas adiciones lógicas implicaran mucho más trabajo. Ese mecanismo contribuyó a escrituras Raft lentas y líderes inestables.

Estos eran problemas distintos. Sería inexacto reducirlos a un vago error de base de datos, y sería igualmente inexacto describir el único clúster de Consul como la única causa técnica raíz. La contención de transmisión y el comportamiento de BoltDB explican mecanismos de falla importantes. 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 llevaron 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 generalmente pertenecen a diferentes propietarios de control. Un propietario de software puede ser responsable de un lanzamiento de 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 servicio 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 verificables.

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 normales de máquinas. 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 mientras 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. Eso 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 transmisión 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ó la transmisión 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 mitigó el problema inmediato de transmisión. Las fuentes públicas no establecen el registro de aprobación interno, el plan de pruebas, los criterios de implementación ni las decisiones individuales. Asignar 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 por etapas? Un cambio en sistemas distribuidos puede pasar pruebas funcionales y pruebas de carga ordinarias mientras falla bajo la interacción del recuento de transmisiones, la rotación, la combinación 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: lecturas, escrituras, suscripciones, actualizaciones de salud 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 utilizados en producción. La tercera es el impacto en las dependencias: los equipos necesitan 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 expande 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 reducidos.

La implementación por etapas es útil solo cuando las etapas están conectadas a condiciones de aborto explícitas. Un porcentaje de implementación por sí solo 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 de los componentes posteriores que determinen si la siguiente etapa puede continuar. También necesitan una ventana de observación lo suficientemente larga para capturar los ciclos de carga de trabajo.

Un cambio que permanece estable durante una hora aún puede fallar durante una combinación diferente de actualizaciones de enrutamiento, implementaciones y rotación de verificaciones de salud.

La lección organizativa es más amplia que Consul. Las empresas a menudo adoptan un componente de plataforma compartido porque estandariza el trabajo y reduce el costo duplicado. El éxito alienta 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 admite 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 movió 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 de aproximadamente el 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 luego se degradaron nuevamente cuando el tráfico de servicio 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 verificaciones de salud. Estas acciones deberían haberle 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 examinó la evidencia de rendimiento de nivel inferior, la contención relacionada con la transmisión se volvió visible. Deshabilitar la transmisión mejoró la latencia de escritura de Consul. Incluso entonces, algunos líderes electos permanecieron lentos. Los ingenieros de HashiCorp luego conectaron ese comportamiento con el mantenimiento de la lista libre de BoltDB bajo el patrón de uso de Roblox. El incidente, por lo tanto, implicó una secuencia de revisiones del modelo en lugar de una sola percepción 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 competitivas 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 inherentemente evidencia 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. Un problema de gobernanza surgiría 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 sockets 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, trabajar alrededor del 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 se puede pronosticar 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 rediseñada. El informe posterior al incidente dijo que los cachés normalmente manejaban alrededor de 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 para que la recuperación continuara. A las 61 horas, la empresa reportó un clúster de Consul saludable y un sistema de caché saludable. Los servicios restantes luego tenían que iniciarse con la capacidad adecuada y ser verificados antes de que el tráfico pudiera regresar. Los cachés fríos y la incertidumbre sobre la salud del sistema hicieron que un retorno inmediato de todo el tráfico no fuera seguro.

Roblox utilizó la dirección DNS para admitir usuarios gradualmente. El informe posterior al incidente describió un 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 simplemente una fase de comunicación. Fue una prueba de producción controlada de si la plataforma restaurada podía soportar la demanda que regresaba.

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 arranque en frío completo. Un arranque en frío plantea preguntas diferentes. ¿Puede el programador reconstruir un 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?

¿El equipo de incidentes sabe 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 conscientes de las dependencias, automatización que pueda detenerse de manera segura, modelos de capacidad para cachés fríos, verificaciones de validación para la reconstrucción del estado y un controlador de admisión de tráfico con compuertas 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 Roblox. Este último incluye todas las dependencias críticas sobre el plano de control, verificaciones 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 prueba 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 siguen degradados. La evidencia de recuperación debe cubrir un conjunto definido de viajes 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 degrada. 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 y procesos de automatización más amplios permanecían en desarrollo.

También 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 una escala significativa, no solo que fueron planeados.

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 críticos de monitoreo dependían de la infraestructura afectada, lo que reducía la visibilidad cuando los ingenieros más la necesitaban. Roblox dijo que luego eliminó esa dependencia y agregó información más específica sobre el rendimiento de Consul y BoltDB.

Este es un patrón de falla clásico pero persistente. 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 normales de control de producción 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 cambió, 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 basado en 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 con 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 desde una métrica de servidor estrecha.

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 altos directivos 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 comprensible. De lo contrario, el mecanismo de respaldo puede fallar debido a credenciales vencidas, 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 reportó 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 al creador. 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 hace que la medición del impacto en las partes interesadas sea 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 del 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 experiencias nuevas o estacionales. Explicaría si la medida usó 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 precisión falsa. 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 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í mismas no pueden ejecutarse en otro lugar.

El lenguaje del contrato y la política debe hacer comprensibles las expectativas del servicio y los límites de compensación.

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 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 internas.

Los materiales económicos posteriores de Roblox hacen explícita la dependencia. La empresa describió el alojamiento de infraestructura, el almacenamiento, la atención al cliente, la localización, el procesamiento de pagos y la moderación como costos que asumía por las experiencias. También describió miles de millones de transacciones virtuales y el aumento de las ganancias de los creadores. Estos son beneficios de 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 para el 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 entre los tamaños de los creadores. Un solo número de tiempo de actividad de la plataforma puede ocultar una interrupción que afecta desproporcionadamente a las herramientas de las que dependen los creadores.

La divulgación debe separar causas, condiciones y compromisos

La divulgación de Roblox evolucionó por etapas. La actualización del CEO del 1 de noviembre se disculpó por la duración, describió un sistema central abrumado bajo carga pesada, rechazó el tráfico externo y una experiencia en particular como causas, dijo que no se conocía pérdida de datos de persistencia y prometió una compensación para los creadores. El informe detallado posterior al incidente llegó en enero después de que la empresa dijo que había completado más análisis y había progresado en las 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ó la responsabilidad y enumeró los 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 agrega peso técnico, pero los documentos públicos no son una auditoría independiente. Un 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 la compensación: 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 del creador está restaurado. Un control planificado puede tratarse como completado. Un compromiso de compensación puede reportarse como prueba de que se produjo la compensación.

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 para diferentes propósitos 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, una fecha de vencimiento y un 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 arranque 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 arreglo 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 un sitio completo no sea utilizable, un sitio separado puede proporcionar otra ruta de recuperación. Pero la protección activo-pasiva solo 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 pico cuando se publicó el artículo de 2023.

Las células son una respuesta al radio de explosión, no solo 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 push de configuración común, la separación aparente puede ser más débil de lo que sugiere el diagrama. El propio Roblox dijo que los experimentos activo-activo identificaron supuestos 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 por etapas 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. 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 la sesión, la identidad, los pagos y los activos del creador 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 usuario y creador sobrevive a una falla realista. Un recuento de topología es un insumo. Las medidas de resultado incluyen el porcentaje de participación conservada, el tiempo para aislar una célula, el tiempo para cambiar el tráfico, la tasa de errores de reconciliación de datos y si las herramientas del 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 de tiempo de actividad de usuario mensual 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 cuestión del 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 2021 de Roblox 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. Las presentaciones posteriores discutieron el costo y la complejidad de operar la 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 comercial no cubriera cada pérdida.

El Formulario 10-K de 2023 dijo que Roblox Cloud estaba diseñado para ser tolerante a fallas y estar preparado 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 periféricos regionales en 19 ciudades, y que Roblox continuaba expandiéndose a múltiples centros de datos dentro y entre 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 comercial 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 estricta. No es una estimación de pérdida total, una cifra de daños al creador ni una prueba de remediación. Muestra que el incidente tuvo una consecuencia comercial asegurable registrada posteriormente. También ilustra cómo los efectos de la interrupción pueden cruzar períodos de informe.

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 usarse para fabricar una falla no reportada. Por el contrario, la repetición del lenguaje de riesgo después de la remediación no prueba que la remediación haya fallado. Refleja el hecho de que una plataforma de esta escala conserva el 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 una célula falla. Si la protección activo-pasiva 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 mejora, los simulacros de arranque en frío deben completarse dentro del objetivo de recuperación.

Esta evidencia debe ser tendencial a lo largo del tiempo. Una prueba exitosa puede probar que un camino funcionó una vez. No muestra que el camino permanezca listo 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 viajes de usuario y creador en lugar de los productos de infraestructura. Para cada viaje, 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 viajes y la ruta mínima necesaria para la recuperación.

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 así como la falla limpia. Un plano de control degradado puede ser más difícil que uno no disponible porque las verificaciones de salud y los reintentos amplifican la carga mientras los componentes permanecen nominalmente accesibles.

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

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

Quinto, tratar el arranque en frío como un producto.Documentar y automatizar el orden de inicio, la reconstrucción del estado, el calentamiento del caché, la disponibilidad de secretos, la protección de la base de datos y el servicio mínimo viable. Probar desde un arranque 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, la latencia, el rendimiento del caché, la presión de la base de datos, la corrección de las transacciones y la disponibilidad de las herramientas del 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. Una compensación para el creador debe publicar las reglas de elegibilidad y cálculo y proporcionar una ruta 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, una fecha objetivo y un método de validación. Cerrar una tarea porque el código se envió es más débil que cerrarla porque un ejercicio de falla demostró el resultado deseado.

Noveno, gobernar la concentración continuamente.Las plataformas compartidas se vuelven más riesgosas a medida que crece la 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 siguiente umbral de escala, no después.

Décimo, informar la continuidad como un portafolio de resultados.Un solo porcentaje de tiempo de actividad es insuficiente. Rastrear la disponibilidad del usuario, la disponibilidad de las herramientas del creador, la integridad de las transacciones, el tiempo de conmutación por error, el tiempo de restauración, el radio de explosión, la antigüedad de los elementos de acción y los resultados de los ejercicios. La alta dirección debe 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 las 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 nube privada y pública. Roblox argumentó que la infraestructura privada ofrecía ventajas de costo y latencia a su escala y usaba nube pública cuando 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 llevaba varias funciones 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 arranque en frío requerido. Los creadores dependían del regreso 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 la 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 basándose en la 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 mantienen 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