En julio de 2024, una actualización de software defectuosa publicada por la empresa de ciberseguridad CrowdStrike provocó el fallo de los sistemas informáticos Windows en todo el mundo. La interrupción de TI resultante generó enormes perturbaciones (y una prensa extremadamente negativa) para la empresa de seguridad. Entonces, ¿qué podemos aprender del incidente? Una cosa es segura: lo ocurrido en julio debería hacer reflexionar a los líderes de la ingeniería de software en todos los sectores industriales. No lo guardes como un secreto: CrowdStrike es una organización sofisticada. Está lleno de ingenieros talentosos que trabajan en tecnología increíblemente compleja. Visto desde fuera, esto no parece un fallo sistémico. Más bien, es una advertencia sobre cómo un pequeño error durante las pruebas de software puede tener un gran impacto. Y le puede pasar a cualquiera. Recordemos qué deberían hacer las organizaciones cuando se trata de pruebas y por qué. Muchos de estos puntos le resultarán familiares y la mayoría le parecerán bastante obvios. Pero en el ajetreo de las tareas diarias, es fácil olvidar algunos pasos o intentar acortar el proceso. Como hemos visto con CrowdStrike, esto puede tener consecuencias bastante onerosas. Pruebas de desarrolladores locales Una de las mejores formas de evitar errores de diseño es iniciar pruebas locales. Las potentes PC actuales son más que capaces de ejecutar una pila completa, lo que significa que sus ingenieros pueden programar y realizar pruebas de forma segura y aislada. Con un poco de previsión, incluso puede permitirles utilizar datos reales en estos entornos de prueba aislados. Cuando las pruebas se ejecutan localmente, los desarrolladores pueden iterar más rápido y realizar cambios basándose en comentarios en tiempo real. No es necesario esperar resultados de servidores distantes. Además, los datos confidenciales permanecen donde pertenecen: bajo su techo. Actualización de contenido y prueba de reversión Si una nueva versión crea un problema inesperado, es beneficioso poder volver a una versión estable anterior con un impacto mínimo. Dado que las organizaciones actuales suelen crear software utilizando canalizaciones de CI/CD, implementar automáticamente la última versión buena no debería ser demasiado difícil. Dicho esto, para minimizar las interrupciones del servicio, recomendamos comprobar que esto puede ocurrir en unos minutos. Asimismo, es importante comprender bien lo que significa «bueno». Esto significa monitorear y comparar su entorno de referencia para garantizar que, cuando realice las pruebas, pueda detectar cualquier discrepancia y problema de rendimiento. Prueba de estrés No puedes escatimar en ésta. Probar sólo lo que sabes, como un flujo de clientes típico, te deja abierto a lo inesperado. Para garantizar que el proceso de prueba de estrés sea exhaustivo, piense en todas las formas posibles en que los usuarios podrían interactuar con el producto y verifique que su solidez vaya más allá de los parámetros operativos normales. Este es uno de esos momentos en los que «lo suficientemente bueno» normalmente no es suficiente. Pruebas de estabilidad/confiabilidad Cuanto más complejo sea el entorno, más crítico será garantizar que el nuevo software pueda manejar cualquier cosa que se le presente sin crear problemas de pérdida de memoria o del sistema operativo. Para optimizar este proceso y resumir escenarios del mundo real, examine los archivos de registro históricos para recopilar eventos que puedan usarse para completar simulaciones. Luego, estos se pueden destilar en un procedimiento de prueba intensivo de una hora en un entorno local. Sin embargo, tenga en cuenta que los entornos más grandes y complejos pueden requerir un enfoque de prueba diferente y más iterativo. Entrega progresiva Si las cosas salen mal, querrás tener una estrategia de entrega que limite el radio de explosión. Los lanzamientos por fases son un enfoque estándar que hace que el proceso de lanzamiento sea más resistente y controlado. Esta tarea puede implicar implementaciones limitadas o selectivas para segmentos de clientes o geografías específicas y luego monitorear la experiencia del usuario antes de un lanzamiento más amplio. Las pruebas beta son otro proceso de entrega continua probado. Validación de terceros Confiar en un tercero experimentado y objetivo para evaluar sus activos y el proceso de desarrollo de software le ayudará a acelerar la entrega de forma segura y sin riesgos. Y aquí es donde podemos ayudar. A lo largo de los años, hemos ayudado a empresas emergentes de rápido crecimiento a establecer mejores prácticas para implementar rápidamente nuevas funciones y actualizaciones de una manera altamente estructurada. Del mismo modo, hemos trabajado con empresas establecidas desde hace mucho tiempo que buscan mejorar su entorno y admitir enfoques modernos de prueba y reversión. Una propuesta especialmente desafiante si sus activos contienen software y sistemas de bases de datos con décadas de antigüedad. El mensaje clave aquí es que donde hay voluntad, siempre hay un camino. Si desea aumentar la seguridad y la solidez de su proceso de desarrollo de software y evitar la posibilidad de que errores lleguen a producción y bloqueen sistemas o aplicaciones, ¿por qué no se pone en contacto con nosotros?
Check Also
Dokku – Proyecto de código abierto de la semana de SD Times
Dokku es una plataforma de código abierto como servicio (PaaS) basada en Docker que se …