Agosto de 2025 no fue un mes tranquilo para GitHub. En su reporte de disponibilidad, la plataforma detalla tres incidentes que impactaron el rendimiento de sus servicios. A continuación, analizamos qué sucedió y qué medidas se tomaron para evitar que se repita.
Migración de Base de Datos Causa Problemas (Dos Veces)
El 5 de agosto, a las 15:42 UTC, una migración de base de datos destinada a eliminar una columna innecesaria en una tabla relacionada con la funcionalidad de *pull requests* tuvo consecuencias inesperadas. A pesar de que la columna ya no se utilizaba directamente, el ORM (Object-Relational Mapper) de GitHub seguía referenciándola en algunas consultas. Esto generó un aumento en la tasa de errores en *pushes*, webhooks, notificaciones y, por supuesto, *pull requests*. El impacto máximo alcanzó aproximadamente el 4% del tráfico web y de la API REST.
La solución inicial fue implementar un cambio que instruía al ORM a ignorar la columna eliminada. Aunque la mayoría de los servicios se recuperaron a las 16:13 UTC, el problema persistió en algunos entornos de prueba, causando un incidente secundario que afectó al 0.1% del tráfico de *pull requests* y se resolvió completamente a las 19:45 UTC.
Lo curioso es que el 27 de agosto, a las 20:35 UTC, un incidente similar afectó a Copilot, la web y el tráfico de la API REST. De nuevo, una migración de base de datos para eliminar una columna (esta vez relacionada con la funcionalidad de Copilot) causó que el ORM siguiera referenciándola, provocando errores y una degradación del rendimiento. Copilot experimentó una tasa de fallos promedio del 36%, con un pico del 77%. El problema se solucionó aplicando un parche al esquema de la base de datos a las 21:17 UTC.
Problemas de Conectividad en la Búsqueda de GitHub
El 12 de agosto, entre las 13:30 UTC y las 17:14 UTC, la búsqueda de GitHub sufrió una degradación. Los usuarios experimentaron resultados inexactos o incompletos, fallos al cargar páginas (como *issues*, *pull requests*, proyectos y *deployments*) y componentes rotos (como flujos de trabajo de Actions y filtros de etiquetas).
El mayor impacto se produjo entre las 14:00 UTC y las 15:30 UTC, cuando hasta el 75% de las consultas de búsqueda fallaron y las actualizaciones de los resultados se retrasaron hasta 100 minutos.
La causa raíz fue la intermitencia en la conectividad entre los balanceadores de carga y los servidores de búsqueda. Aunque la lógica de reintento inicialmente enmascaró los problemas, las colas de reintento terminaron sobrecargando los balanceadores de carga, provocando el fallo. La situación se mitigó limitando el flujo de indexación de búsqueda y se resolvió por completo a las 17:14 UTC tras el reinicio automático de un servidor de búsqueda.
Lecciones Aprendidas y Medidas Preventivas
GitHub reconoció que los incidentes revelaron algunas áreas de mejora en sus procesos y sistemas. Como resultado, se están implementando las siguientes medidas:
- Automatización y salvaguardias adicionales para evitar incidentes futuros sin requerir intervención humana.
- Optimización de los cambios en diferentes entornos para prevenir incidentes secundarios.
- Mejora de la monitorización interna y *playbooks*.
- Ajuste de los balanceadores de carga del clúster de búsqueda.
- Bloqueo temporal de todas las operaciones de eliminación de columnas hasta que se implementen salvaguardias más robustas.
- Implementación de degradación elegante para que los problemas de Copilot no afecten a otras características de la plataforma.
Conclusión
La transparencia de GitHub al compartir estos informes de disponibilidad es valiosa para la comunidad. Permite entender los desafíos que enfrenta una plataforma de esta escala y las medidas que se toman para garantizar la estabilidad y el rendimiento. Estaremos atentos a los próximos informes para ver cómo evolucionan estas mejoras y si logran evitar incidentes similares en el futuro. Recuerda que puedes seguir la página de estado de GitHub para obtener actualizaciones en tiempo real.
Fuente: GitHub Blog
Leave a Comment