Teoría del Caos
Chaos Engineering
Teoría del Caos
Sebastían Díaz
- Github: @seadiaz
- Twitter: @seadiaz
- LinkedIn: @seadiaz
Underworld Tribe Lead
¿Por Qué?
¿Por Qué?
Monolito => Microservicios
¿Por Qué?
Falacias de los Sistemas Distribuidos
- Las redes son confiables
- La latencia es cero
- El ancho de banda
- La red es segura
- Las topologías no cambia
- Hay un solo administrador
- El costo de transporte es cero
- Las redes son homogenias
¿Por Qué?
Iron Age => Cloud Age
¿Por Qué?
Hardware comóditi
- Discos duros estándar
- Tarjetas de red estándar
- Placas madres estándar
- Procesadores madres estándar
- Memorias madres estándar
- ...
¿Por Qué?
Iron Age => Cloud Age
Monolito => Microservicios
+
= Muchas eventos fuera de control
Pero yo construyo con calidad
Pero yo construyo con calidad
Pero yo construyo con calidad
¿Es suficiente?
Antifragilidad
Antifragilidad
Flexible
Robustez
Robustez
Capacidad de mantenerse funcionando frente a situaciones anómalas
Robustez
- Validar todo tipo de entradas
- Manejar todos caminos con errores
- Cortar conexiones que demoran mucho
- Reciclar conexiones
- Mantener consistentes los pools de conexiones
Resiliencia
Resiliencia
Capacidad de modificar el comportamiento para mantenerse funcionando frente a situaciones anómalas
Resiliencia
- Timeout
- Circuit Breaker
- Bulkhead
- Steady State
- Fail Fast
- Handshaking
- Test Harness
- Decoupling Middleware
- Shed Load
- Create Back Pressure
Antifragilidad
Capacidad de hacerse más fuerte a través de la provocación de un daño controlado
+ Robustez
+ Resiliencia
¿Es suficiente?
¿Es suficiente?
"Demasiadas variables fuera de nuestro control, por lo tanto, el comportamiento es difícil de predecir"
Chaos Engineering
Un poco de historia
Un poco de historia
2010
Netflix créa Chaos Monkey
2011
Netflix evoluciona hacia Simian Army
2012
Netflix libera el código de Chaos Monkey en Github
2014
Netflix crea un nuevo rol
Chaos Engineer
Requisitos
Requisitos
Modelo de gestión de incidentes
- Tipos de severidades
- Tiempos de respuestas
- Rotación de turnos 24/7
- Sistemas de notificación
- Modelo de escalamiento
- Traspasos de información
Requisitos
Monitoreo
- Las 4 señales de oro
- Latencia
- Tráfico
- Tasa de error
- Saturación
- Tendencias
- Dashboard
- Alerting
- Análisis retrospectivo
Requisitos
Medir el impacto de la indisponibilidad
Negocio/Cliente
- Costos
- Reputación
- Tiempo
- Resultado
Sistema
- Disponibilidad
- Durabilidad
- Integridad
Paso a paso
Paso a paso
1) Encontrar un estado de estabilidad
Paso a paso
2) Definir la hipótesis de que el estado se mantiene en un grupo experimental y en uno de control
Paso a paso
3) Introducir variables que reflejen escenarios reales en el grupo de experimentación
Paso a paso
4a) Refutar la hipótesis de que ambos grupos se mantienen estables
Experimento
Paso a paso
4b) Refutar la hipótesis de que ambos grupos se mantienen estables
Experimento exitoso
Principios
Principios
Crea hipótesis basándote en comportamientos de estado estable
Principios
Introduce eventos del mundo real
Principios
Ejecuta los experimentos en producción
Principios
Automatiza los experimentos para que puedan correr de manera continua
Principios
Minimiza el radio de impacto
Priorización de experimentos
Priorización de experimentos
Conocido
Desconocido
Conocidos
Desconocidos
Somos conscientes y entendemos
Somos conscientes y no entendemos
Entendemos pero no somos conscientes
No sabemos ni somos conscientes
Beneficios
Beneficios
Clientes
Un servicios sin indisponibilidad
Negocio
Sin perdidas de ingresos ni costos de mantención
Técnicos
Pueden ocupar su tiempo libre sin preocupaciones
¿Debería aplicarlo en mi contexto ?
¿Debería aplicarlo en mi contexto ?
Tengo
Tengo una infraestructura dinámica
Soy de uso masivo o tengo expectativas de serlo
Tengo resuelto todos los requisitos
¿Cómo sigo?
https://github.com/netflix/chaosmonkey
¿Cómo sigo?
https://principlesofchaos.org/
https://www.gremlin.com/community
https://github.com/dastergon/awesome-chaos-engineering
Chaos Engineering
Chaos Engineering
By Sebastian Diaz
Chaos Engineering
- 119