Hagamos un breve repaso de este incidente de AWS desde la perspectiva de un SRE en una startup de AIGC, espero que esto pueda ayudar a todos. Desde que comencé a trabajar, me di cuenta de que nuestros principales clústeres estaban en USE1, así que empecé a hacer algunos preparativos. Las principales acciones que realicé fueron las siguientes: 1. Hice copias de seguridad de nuestras bases de datos clave en múltiples ubicaciones, creando copias en USE1, Tokio y SG. De esta manera, en situaciones extremas, perderíamos una parte de los datos, pero podríamos garantizar la continuidad del servicio. 2. Reestructuré nuestro clúster de pruebas en SG, que originalmente estaba configurado de manera simple en EC2 con K3S, a un clúster estándar de AWS EKS. Esto permite que en momentos de desastre podamos activar rápidamente un clúster reutilizando componentes ya existentes de AWS, minimizando el costo de los cambios en el manifiesto. 3. Elaboré un SOP simple que incluye anuncios a los usuarios, cambios de DNS, cierre de versiones, entre otros. Volviendo a hoy, aproximadamente 10 minutos después del incidente de AWS, descubrí que había nuevos Pods en nuestros contenedores que no podían configurarse. Después de confirmar con el soporte de AWS que era un problema de USE1, me di cuenta de que el evento de ECR estaba necesariamente relacionado con otros eventos, así que decidí actuar de acuerdo con mi propio plan para eventos de nivel Tier1 (para un SRE, este tipo de situaciones se pueden equivocar, pero no se pueden pasar por alto). T+0 min, publiqué un anuncio para todo el personal y comenzamos a entrar en modo de emergencia. Configuré una reunión pública para todos. Todo el personal podía unirse en cualquier momento. T+2 min, confirmé que el incidente se estaba expandiendo como esperaba, emití dos órdenes: 1. Prohibir cualquier incorporación/envío de código (principalmente para evitar que la creación de nuevos recursos causara rotación de Pods, lo que afectaría el tráfico), 2. Pedí a los compañeros de operaciones que prepararan un anuncio. T+3 min, comencé a seguir el SOP y a realizar la recuperación de la base de datos en la región de SG, y a crear en cascada dependencias como OpenSearch/Redis, entre otras. T+5 min, comenzamos a confirmar formalmente los problemas específicos de las dependencias ascendentes y descendentes, confirmando que un nuevo servicio central en línea se había visto afectado. T+10 min, emitimos el anuncio de parada del servicio y el anuncio de los demás servicios afectados. T+10 min, pedí a otros dos compañeros que me ayudaran a configurar un nuevo ECR y limpiar los recursos existentes en el entorno de pruebas, y sincronizamos con el CTO; en situaciones extremas, podríamos tener que tomar decisiones sobre mantener la experiencia a costa de perder datos. T+15 min, finalmente confirmamos que los recursos creados hasta ahora y la dirección del tráfico no se verían gravemente afectados. La opción de cambio se suspendió, pero continuamos preparando los recursos relacionados. T+30 min, completamos la recuperación de nuestra primera base de datos. T+40 min, completamos la recuperación de nuestra segunda base de datos. T+1h, toda nuestra infraestructura central asociada, RDS/ES/Redis, estaba en espera, y configuramos opciones de optimización como maestro/esclavo según la arquitectura de producción. Al mismo tiempo, comenzamos a iniciar nuevos servicios en un nuevo clúster. Afortunadamente, el fallo de AWS no afectó a todos nuestros servicios. No tuvimos que enfrentar el complicado trabajo de reparación de datos después de cambiar el tráfico. Aproximadamente entre T+2h y T+3h, informé oficialmente a todo el personal que el estado de emergencia se había levantado. Por precaución, esta noche seguimos con el cierre de versiones de funciones. Al reflexionar sobre todo el incidente, me doy cuenta de que podría haber hecho más: 1. Hacer público el SOP de casos extremos que preparé para mí mismo, para asegurar que incluso si no estoy en línea, alguien pueda reemplazarme. 2. Podríamos realizar algunos ensayos previos. 3. Las órdenes podrían haberse dado de manera más decisiva. Eso es todo, una pequeña compartición, espero que pueda ayudar a todos.