Softtek Softtek
  • Our experience
  • Overview
  • Insights
  • Blog
  • Newsroom
  • Careers
  • Contact us
softtek Language Selector
ENGLISH
EUROPE / EN
ESPAÑOL
EUROPA / ES
PORTUGUÊS
中文(简体)
Search button
AI
APPROACH
INDUSTRIES
SERVICES & SOLUTIONS
TRANSCEND
Softtek GenAI
FRIDA AI for Software Engineering
Service Transformation
Portfolio Transformation
Digital Acceleration
Our Work
Agribusiness
Airlines
Automotive
Banking & Financial Services
Consumer Packaged Goods
Energy & Utilities
Fitness & Wellness
Gaming
Government & Public Sector
Higher Education
Healthcare
Industrial
Insurance
Media & Entertainment
Oil & Gas
Pharma & Beauty
Professional Sports
Restaurant & Hospitality
Retail
Technology
Telecommunications
Transportation & Logistics
Digital Solutions
Digital Optimization
Digital Sales
Data Masking Solution
IT Cost Optimization
Fan Engagement Ecosystem
Softtek Digital Enablers
DIEGO
blauLabs
Business OnDemand
Click2Sync Omnichannel
Automotive Digital Assistant
Guest Engagement
Socializer
Collaborative Commuting
Workplace Management
Application Services
Software Development
Quality Engineering
Application Management
Application Services
Cloud & DevOps
Cloud Services
IT Infrastructure
Digital Security
DevOps
Data & Automation
Data and AI
Intelligent Automation
Services Transformation
Core Modernization
Next-Gen IT Operations
Platform Services
AWS
SAP
Microsoft
Salesforce
ServiceNow
Atlassian
BlueYonder
Sustainability by Softtek
Softtek
Language selector
search button
AI
Softtek GenAI
FRIDA AI for Software Engineering
APPROACH
Service Transformation
Portfolio Transformation
Digital Acceleration
Our Work
INDUSTRIES
Agribusiness
Airlines
Automotive
Banking & Financial Services
Consumer Packaged Goods
Energy & Utilities
Fitness & Wellness
Gaming
Government & Public Sector
Higher Education
Healthcare
Industrial
Insurance
Media & Entertainment
Oil & Gas
Pharma & Beauty
Professional Sports
Restaurant & Hospitality
Retail
Technology
Telecommunications
Transportation & Logistics
SERVICES & SOLUTIONS
Digital Solutions
Digital Optimization
Digital Sales
Data Masking Solution
IT Cost Optimization
Fan Engagement Ecosystem
Softtek Digital Enablers
DIEGO
blauLabs
Business OnDemand
Click2Sync Omnichannel
Automotive Digital Assistant
Guest Engagement
Socializer
Collaborative Commuting
Workplace Management
Application Services
Software Development
Quality Engineering
Application Management
Application Services
Cloud & DevOps
Cloud Services
IT Infrastructure
Digital Security
DevOps
Data & Automation
Data and AI
Intelligent Automation
Services Transformation
Core Modernization
Next-Gen IT Operations
Platform Services
AWS
SAP
Microsoft
Salesforce
ServiceNow
Atlassian
BlueYonder
TRANSCEND
Sustainability by Softtek
Our experience
Overview
Insights
Blog
Newsroom
Careers
Contact us
Presencia Global
ENGLISH
EUROPE / EN
ESPAÑOL
EUROPA / ES
PORTUGUÊS
中文(简体)
Softtek Blog

Incidente Microsoft-CrowdStrike: 12 lecciones aprendidas y consejos de QA

Autor
Author Rodrigo Morteo
Publicado el:
ago 6, 2024
Tiempo de lectura:
ago 2024
|
SHARE
Share on LinkedIn
Share on X
Share on Facebook
SHARE
Share on LinkedIn
Share on X
Share on Facebook

A medida que surgen más detalles sobre el reciente incidente CrowdStrike-Microsoft—una actualización de software problemática que dejó fuera de servicio a miles de máquinas con Windows—se hace evidente que existen oportunidades significativas de mejora en los procesos de desarrollo y lanzamiento de software. Estas oportunidades de mejora también pueden aplicarse a sus procesos. En esta publicación, discutiremos brevemente qué salió mal en CrowdStrike y luego repasaremos 12 lecciones aprendidas acompañadas de consejos para mejorar sus ciclos de QA y lanzamiento para evitar catástrofes similares.

El Resumen

En la noche del 19 de julio de 2024, CrowdStrike envió una actualización defectuosa a su producto de seguridad insignia "Falcon", causando que miles de máquinas y servidores con Windows 10 y 11 con Falcon instalado se detuvieran con una pantalla azul (conocida como BSOD) después de cada reinicio. La solución inicial propuesta involucraba iniciar cada máquina en "modo seguro", encontrar y eliminar manualmente el archivo problemático y reiniciar. Unos días después, se puso a disposición de los clientes una opción de remediación en la nube.

Lecciones Aprendidas

Considerando las revisiones de la industria y los anuncios públicos de CrowdStrike, aquí hay 12 lecciones aprendidas para mejorar sus procesos de desarrollo y lanzamiento de software con aseguramiento de la calidad de software:

  1. Pruebas unitarias en entornos nuevos: Las pruebas unitarias son esenciales, pero las pruebas no deben ejecutarse solo en la computadora del desarrollador (evitando el problema de "funciona en mi máquina"). Siempre que sea posible, las pruebas deben ejecutarse en entornos recién creados. Los entornos de prueba efímeros, las máquinas virtuales (VMs) personalizadas o las soluciones de Infraestructura como Código (IaC) como Terraform o Ansible pueden ayudar a lograr esto. 
    Consejo: Utilice servicios en la nube como AWS, Azure o Google Cloud para crear rápidamente entornos nuevos para las pruebas.
  2. Asegurar la cobertura del código: Extienda sus pruebas unitarias para cubrir los cambios reales en la base de código. Evite ejecutar las mismas pruebas antiguas repetidamente sin evaluar los cambios en el nuevo código. Utilice herramientas de cobertura de código para identificar partes no probadas de su base de código. 
    Consejo: Herramientas como JaCoCo para Java, Istanbul para JavaScript o Coverlet para .NET pueden ayudar a medir la cobertura del código.
  3. Verifique sus artefactos: Configure sus lanzamientos para firmar o al menos hacer hash de todos los artefactos que acompañan su código. Implemente un proceso de verificación de firma/hash que preceda la ejecución en entornos inferiores y de producción. Esto es crucial para sistemas que reciben actualizaciones o manejan archivos externos. 
    Consejo: Utilice GPG o herramientas similares para firmar artefactos y asegurar su integridad antes del despliegue.
  4. Evolucione sus pruebas negativas: Continúe reflexionando con su equipo sobre posibles modos de falla de su código y escriba pruebas para desencadenar estas fallas. Este enfoque ayuda a mejorar el manejo de errores y excepciones. Comience con escenarios de falla comunes o simples y cubra progresivamente los menos probables. 
    Consejo: Utilice herramientas de ingeniería del caos como Chaos Monkey para simular fallas y probar la resiliencia de su sistema.
  5. Mejorar las capacidades de registro: Los registros estructurados e informativos son vitales para la depuración y las pruebas. Un registro efectivo facilita la identificación de la causa de las fallas. Implemente un sistema de registro dinámico que se pueda ajustar a diferentes niveles de verbosidad según las necesidades y condiciones. 
    Consejo: Bibliotecas como Log4j para Java, Serilog para .NET o Winston para Node.js ofrecen capacidades robustas de registro.
  6. Mejorar las pruebas de integración: Cuando su código tiene dependencias externas (especialmente de terceros), adopte una estrategia de prueba defensiva. Fuerce fallas para asegurar que su código las maneje adecuadamente y se recupere eficazmente. 
    Consejo: Utilice marcos de prueba de integración como Postman para pruebas de API o Test Containers para ejecutar pruebas con dependencias reales en entornos aislados.
  7. Nunca falle silenciosamente: Asegúrese de que todas las declaraciones condicionales (por ejemplo, if, else) y el manejo de excepciones (por ejemplo, try/catch) contengan código, incluso si es solo para registrar. Las fallas silenciosas pueden ocultar problemas críticos. 
    Consejo: Implemente estrategias de manejo de errores integrales y siempre registre condiciones inesperadas.
  8. Validar y sanitizar entradas: Si su código carga archivos o recibe entradas de usuario, mejore la validación y sanitización de las entradas. Siempre que sea posible, maneje estas acciones en procesos o hilos separados para evitar que las excepciones bloqueen el proceso principal. 
    Consejo: Utilice bibliotecas como OWASP ESAPI para Java o incluso Expresiones Regulares para la validación de entradas.
  9. Siga el principio de menor privilegio: Ejecute su código con solo los privilegios necesarios. Identifique y pruebe los permisos requeridos en lugar de ejecutar todo como "root" o "administrador". 
    Consejo: Utilice control de acceso basado en roles (RBAC) y el principio de menor privilegio (PoLP) para minimizar los riesgos de seguridad.
  10. Aproveche el software de prueba en CI: Integre pruebas automatizadas y verificaciones de calidad que tengan sentido en su pipeline de CI/CD. Revise y actualice regularmente su configuración de pruebas para incluir software de prueba nuevo o actualizado. 
    Consejo: Herramientas como Jenkins, GitHub Actions o GitLab CI/CD pueden automatizar eficazmente sus procesos de prueba y despliegue.
  11. Considere estrategias de lanzamiento alternativas: Técnicas como pruebas AB, lanzamientos dirigidos, lanzamientos escalonados o el uso de banderas de características son generalmente menos riesgosas que los lanzamientos completos. Asegúrese de tener monitoreo de la salud del sistema, especialmente para despliegues altamente críticos. 
    Consejo: Utilice herramientas de banderas de características como LaunchDarkly o Unleash para controlar los lanzamientos de características y mitigar riesgos.
  12. Considere cuidadosamente las fechas y horas de lanzamiento: Para sistemas críticos, evite lanzar actualizaciones los viernes por la noche o antes de feriados importantes. Incluso con pruebas exhaustivas y despliegues previos exitosos, planifique con anticipación para pruebas exhaustivas. 
    Consejo: Programe lanzamientos durante períodos de baja actividad y asegure la disponibilidad del personal de soporte para manejar posibles problemas.

Conclusión

Cuando se trata de desarrollo de software, pueden ocurrir errores humanos en cada paso del camino. Revisar y mejorar constantemente sus prácticas de desarrollo de software puede tener un impacto significativo en la mitigación de tales errores.

En Softtek, hemos desarrollado un enfoque totalmente personalizable de gestión de calidad de software que se adapta a su contexto organizacional, necesidades de producto, stack tecnológico y dinámica de equipo. Esto le ayuda a adoptar las mejores prácticas de la industria, adherirse a las regulaciones y mantener procesos de prueba lean, observables y trazables. Visite nuestra página de Ingeniería de Calidad para explorar nuestros servicios y conectar con nuestros expertos.

Related posts

dic 17, 2024
Evita ser víctima del efecto látigo dentro de la cadena de suministro
Pintura digital de un puerto marítimo al atardecer, con elementos sutiles de datos que representan logística impulsada por IA e integración digital en la cadena de suministro
abr 29, 2025
3 estrategias proactivas para adaptar su cadena de suministro a la evolución arancelaria en 2025
Estantes bien organizados en una tienda de moda masculina de lujo
feb 26, 2025
3 Prompts de IA para Inspirar Estrategias de Retail en Tiendas Físicas y Aumentar las Ventas

Let’s stay in touch!

Get Insights from our experts delivered right to your inbox!

Follow us:
Softtek LinkedIn
Softtek Twitter
Softtek Facebook
Softtek Instagram
Softtek Instagram
Follow us:
Softtek LinkedIn
Softtek Twitter
Softtek Facebook
Softtek Instagram
Softtek Instagram

© Valores Corporativos Softtek S.A. de C.V. 2025.
privacy notice
legal disclaimer
code of ethics
our policies
webmaster@softtek.com