Así que la lección fue simple. Eliminar peso innecesario, pero mantener la confianza. Un CI más rápido solo importa si los desarrolladores aún creen en el resultado. Así que tres cambios, cada uno tomando un día para implementar. Uno, nuestra colección de métricas del servicio de observabilidad tomaba 120 segundos por pipeline. Cada ejecución de CI estaba utilizando una API síncrona obsoleta. Así que la migramos a un reemplazo por lotes, reduciendo a 20 segundos.
Dos, pre-tiered, precached, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered, pre-tiered. Echemos un vistazo a la solicitud de merge solo de documentación. Incluso teniendo algunos observadores al día, se evitaron pipelines completos, ahorrando alrededor de 240 al mes en computación, medio día de trabajo, y combinados 3.5 días de trabajo, 3.5 minutos de cada pipeline, pequeños individualmente pero se combinan juntos. La velocidad fue una mitad fácil. La estabilidad fue una mitad más difícil. Tasa de fallos del 18%.
La gente había aprendido a hacer clic en reintentar sin leer el fallo. Además, teníamos un mecanismo incorporado para reintentar pruebas que estaba añadiendo un bucle adicional de pruebas, y por supuesto, era un proceso que consumía tiempo. Así que construí un sistema que va más allá de los conteos de reintentos ingenuos. Cuando una prueba falla en tres diferentes solicitudes de merge en una ventana de 12 horas, usualmente en divs no relacionados, se marca como persistent flaky. El clasificador utiliza un LLM más el git diff para distinguir un verdadero error de producto de un flake.
Comments