lunes, 16 de diciembre de 2019

¿Cómo comprobar la salud de un sistema in extremis?

Crash test de AXA - cortesía de Pixabay
Cuando la industria de la automoción crea un coche nuevo, antes de ponerlo en el mercado, coloca un crash test dummy, un maniquí para ensayos de choque dentro, y estampa el coche contra la pared. Esta prueba extrema pone de manifiesto debilidades del coche, debilidades que han de corregirse antes de lanzar un coche seguro al mercado.

Como símil al crash test Netflix ha desarrollado la Simian Army, el ejército de simios que resulta en un conjunto de servicios o "monos" para comprobar la salud de sus sistemas y hacer ensayos de crisis provocando fallos en su software.

La construcción de software es un ingeniería compleja que implica bugs, no se puede garantizar al 100% que alguna parte no pueda fallar. Aún invirtiendo en el hardware más costoso y en las herramientas de software más modernas nada garantiza que en una situación crítica haya un fallo y tengamos un problema en el sistema. En Netflix son conscientes de ello y desarrollaron su arquitectura para que los componentes individuales puedan fallar sin afectar a la disponibilidad del resto del sistema.

Es necesario evaluar constantemente la capacidad del sistema para sobrevivir a todo tipo de fallos. Hemos de poner a prueba nuestro sistema, desenchufar el SAI, cortar el suministro, desconectar un servidor, para ver si de verdad el software está preparados para desplegarlo en producción. Esta es una de las premisas de un sistema resilente con capacidad para sobreponerse a imprevistos para minimizar o eliminar su impacto y no perjudicar a nuestros clientes.

José Luis Martínez nos habla en su post "El ejército de simios de Netflix" de los 8 monos:
Imagen de Wikipedia
  • Chaos Monkey: una herramienta que inhabilitaba de forma aleatoria servidores de producción para garantizar que el servicio se mantiene y no hay impacto para el cliente.
  • Latency Monkey: induce retrasos artificiales en la capa de comunicación cliente-servidor para simular la degradación del servicio y mide si los servicios responden adecuadamente.
  • Conformity Monkey: encuentra servidores que no se adhieren a las mejores prácticas y los apaga.
  • Doctor Monkey: aprovecha los controles de estado que se ejecutan en cada servidor y supervisa otros signos externos de salud (por ejemplo, la carga de la CPU) para detectar estados no saludables.
  • Janitor Monkey: asegura que el entorno se está ejecutando libre de basura y desperdicio. Busca los recursos no utilizados y los descarta.
  • Security Monkey: encuentra violaciones de seguridad o vulnerabilidades y finaliza las instancias ofensivas. También revisa los certificados SSL y DRM.
  • 10-18 Monkey: detecta problemas de configuración y tiempo de ejecución en instancias que atienden a clientes en múltiples regiones geográficas, utilizando diferentes idiomas y conjuntos de caracteres.
  • Chaos Gorilla: es similar a Chaos Monkey, pero simula una interrupción de toda una zona de disponibilidad.
La Simian Army está disponible como Open Source en GitHub, en la descripción se puede leer: "Simian Army consiste en servicios (monos) en la nube para generar varios tipos de fallos, detectar condiciones anormales y probar nuestra capacidad para sobrevivir. El objetivo es mantener nuestra nube segura, protegida y altamente disponible".

Actualización de Netflix

"Todo el software tiene un ciclo de vida y llegó el momento de desarrollar las ideas centrales de Simian Army para satisfacer las necesidades cambiantes del entorno de Netflix. El primer paso más obvio fue separar los servicios para que pudieran evolucionar de forma independiente. Al separarlos, también permitió que cada uno utilizara diferentes tecnologías y modelos de implementación, por ejemplo, integrar la funcionalidad de Conformity Monkey directamente en Spinnaker proporciona a los equipos comentarios en la misma interfaz de usuario que realizan las implementaciones, lo que aumenta la visibilidad de las violaciones y permite la capacidad de mostrar acciones correctivas".
  • Chaos Monkey ahora es standalone
  • Janitor Monkey ha sido reemplazado por Swabbie
  • Conformity Monkey y los servicios de auditoria se han movido a Spinnaker

No hay comentarios:

Publicar un comentario