• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • Averigüemos cómo puede mantener su producción confiable con la ayuda de las herramientas de Ingeniería del Caos.

    La ingeniería del caos es una disciplina en la que experimenta en su sistema o aplicación para revelar sus debilidades y fallas de capacidad. Estos son algo que no pensaste que podría suceder mientras lo creaste. Por lo tanto, causaría algunas fallas a propósito en su sistema para mostrar sus debilidades para hacer las correcciones y hacer que su sistema y su aplicación sean más resistentes.

    Muchas organizaciones populares como Netflix, LinkedIn y Facebook realizan ingeniería del caos para comprender mejor sus microservicios arquitectura y sistemas distribuidos. Ayuda a encontrar nuevos problemas antes que las quejas reales de los usuarios y a tomar las medidas necesarias para corregirlos. Así es como estas organizaciones pueden servir a millones de usuarios, aumentar su productividad y ahorrar millones de dólares 🤑.

    Beneficios de la ingeniería del caos:

    • Controle las pérdidas de ingresos detectando problemas críticos
    • Reducción de fallas en el sistema o la aplicación
    • Mejor experiencia de usuario con menos interrupciones y alta disponibilidad del servicio
    • Le ayuda a aprender sobre el sistema y ganar confianza.

    ¿Qué tan seguro está de la fiabilidad de su producción? ¿Es realmente a prueba de desastres?

    Averigüemos con la ayuda de las siguientes herramientas populares de prueba de caos.

    Malla del caos

    Malla del caos es una solución de gestión de ingeniería del caos que inyecta fallas en cada capa de un Kubernetes sistema. Esto incluye pods, la red, la E / S del sistema y el kernel. Chaos Mesh puede matar automáticamente los pods de Kubernetes y simular latencias. Puede interrumpir la comunicación de pod a pod y simular errores de lectura / escritura. Puede programar reglas para los experimentos y definir su alcance. Estos experimentos se especifican mediante archivos YAML.

    Chaos Mesh tiene un panel para ver análisis de experimentos. Se ejecuta sobre Kubernetes y es compatible con la mayoría de la plataforma en la nube. Es de código abierto que fue aceptado recientemente como un proyecto de caja de arena de CNCF. Puede agregar Chaos Mesh a su flujo de trabajo de DevOps para crear aplicaciones resistentes mediante el uso de principios de ingeniería del caos.

    malla del caos - geekflare

    Características de Chaos Engineering:

    • Fácilmente implementable en clústeres de Kubernetes sin modificaciones en la lógica de implementación
    • No se requieren dependencias únicas para la implementación
    • Define objetos de caos usando CustomResourceDefinitions (CRD)
    • Proporciona un panel para realizar un seguimiento de todos los experimentos.

    Kit de herramientas del caos

    Kit de herramientas del caos es una herramienta simple y de código abierto para la automatización de experimentos de ingeniería del caos.

    chaostoolkit cli

    Usted integra Chaos ToolKit con su sistema usando un conjunto de controladores o complementos que admite AWS, Google Cloud, Slack, Prometeo, etc.

    chaostoolkit

    Características de Chaos ToolKit:

    • Proporciona API abierta declarativa para crear experimentos de caos independientes de un proveedor o tecnología
    • Puede integrarse fácilmente en tuberías CICD para la automatización
    • Proporciona soporte comercial y empresarial también a través de ChaosIQ

    ChaosKube

    Como puede adivinar por el nombre, es para Kubernetes.

    Chaoskube es una herramienta de caos de código abierto que mata pods aleatorios periódicamente en el clúster de Kubernetes. Le ayuda a comprender cómo reaccionará su sistema cuando falle el módulo. De forma predeterminada, mata un pod en cualquier espacio de nombres cada 10 minutos. Puede filtrar los pods de destino en Chaoskube usando espacios de nombres, etiquetas, anotaciones, etc. Se puede instalar fácilmente usando Chaoskube.

    chaoskube

    Mono del caos

    Mono del caos es una herramienta que se utiliza para verificar la resistencia de los sistemas en la nube creando fallas deliberadamente para que esos sistemas comprendan su reacción. Netflix lo creó para probar la capacidad de recuperación y resiliencia de su infraestructura AWS. Fue nombrado Chaos Monkey porque crea destrucción como un mono salvaje y armado para probar los fallos.

    Además, fue Chaos Monkey, que dio origen a la nueva práctica de ingeniería Chaos Engineering. Fue creado sobre el principio de que es mejor fallar repetidamente para evitar cualquier falla significativa repentinamente.

    mono caos

    Características de Chaos Monkey:

    • Le ayuda a prepararse para fallas de instancias aleatorias.
    • Fomenta la redundancia para fallas inesperadas
    • Utiliza Spinnaker para permitir la compatibilidad entre nubes
    • Proporciona un programa configurable para simular fallas
    • Integrado con gobernador para agregar nuevas dependencias al mono del caos

    caos mono spinnaker

    Simmy

    Simmy es una herramienta de caos de inyección de fallas que se integra con el proyecto de resiliencia Polly para .NET. Te permite crear políticas de inyección de caos a través de Polly, donde ejecutas tus códigos. Ofrece diferentes políticas como la política de excepciones para inyectar excepciones en el sistema, la política de comportamiento para inyectar cualquier comportamiento nuevo, etc. Estas políticas están diseñadas para inyectar el comportamiento de forma aleatoria.

    Simmy

    Características de Simmy:

    • Proporciona políticas de Monkey o políticas de Chaos para inyectar caos
    • Fácil de probar cualquier falla de dependencia
    • Ayuda a volver al modelo de trabajo rápidamente y controla el radio de explosión.
    • Está listo para producción.
    • También puede definir fallas basadas en factores externos (por ejemplo, fallas debido a la configuración global)

    Pystol

    Pystol es una herramienta que se utiliza para inyectar inyecciones defectuosas en entornos nativos de la nube. Observa eventos en el ETCD a través de operadores de Kubernetes. Cuando se ejecuta una acción de inyección de fallas, los operadores crean los pods y ejecutan algunas colecciones de Ansible. Por lo tanto, los desarrolladores no necesitan escribir sus propias acciones para realizarlas.

    Pystol proporciona acciones preparadas para probar el sistema. Aún así, si un desarrollador desea crear una nueva acción, puede hacerlo usando GoLang y Python.

    Proporciona un panel de integración continua para ofrecer una vista resumida de todas las operaciones del trabajo. Puede ejecutar Pystol localmente o implementarlo en un contenedor usando su imagen de ventana acoplable. Pystol proporciona dos interfaces, una es la interfaz de usuario web y la otra es a través de CLI. Obviamente, la interfaz de usuario web es una mejor opción.

    pystol

    Muxy

    Muxy es un proxy para probar sus patrones de resistencia y tolerancia a fallas para fallas de sistemas distribuidos del mundo real. Puede alterar el nivel de transporte (capa 4), el nivel de sesión TCP (capa 5), ​​el nivel de protocolo HTTP (capa 7).

    muxy

    Características de Muxy:

    • Arquitectura modular y fácilmente ampliable
    • Tiene contenedor Docker oficial
    • Fácil de instalar, no se requieren dependencias.
    • Ideal para pruebas continuas de resiliencia
    • Simula problemas de conectividad de red para sistemas distribuidos y dispositivos móviles

    Pumba

    Pumba es una herramienta de línea de comandos que realiza pruebas de caos para contenedores acoplables. Con Pumba, bloquea intencionalmente los contenedores de la ventana acoplable que ejecutan la aplicación para ver cómo reacciona el sistema. También puede realizar pruebas de estrés en los recursos del contenedor, como CPU, memoria, sistema de archivos, entrada / salida, etc.

    También puede ejecutar Pumba en un clúster de Kubernetes. Tienes que usar DaemonSets para implementar Pumba en los nodos de Kubernetes. Puede utilizar varios contenedores de Pumba para ejecutar varios comandos de Pumba en el mismo DaemonSet.

    pumba

    ChaosBlade

    ChaosBlade es una herramienta de código abierto para inyectar experimentos en los sistemas de Alibaba. Prueba todas las fallas que Alibaba ha enfrentado en los últimos diez años y aplica las mejores prácticas para evitarlas. Sigue los principios de la ingeniería del caos para comprobar la tolerancia a fallos de los sistemas distribuidos.

    caosblade

    Características de ChaosBlade:

    • Proporciona escenarios experimentales para múltiples recursos como CPU, red, memoria, disco, etc.
    • Proporciona escenarios experimentales para nodos, redes y pods en la plataforma Kubernetes.
    • Proporciona comandos CLI fáciles de usar para ejecutar experimentos

    Tornasol

    Tornasol sigue los principios de ingeniería del caos nativos de la nube. La misión de la herramienta tornasol es ofrecer un marco completo para encontrar debilidades en sus sistemas Kubernetes y sus aplicaciones en ejecución en Kubernetes.

    Tiene un operador de caos y los CRD (CustomResourceDefinitions) alrededor de eso, lo que permite la capacidad plug-and-play. Se trata de poner la lógica del caos en una imagen de la ventana acoplable, ponerla en un marco de tornasol y orquestarlos utilizando los CRD.

    Características de tornasol:

    • Ayuda a los ingenieros y desarrolladores de Site Reliability a encontrar debilidades en el sistema Kubernetes
    • Proporciona experimentos genéricos listos para usar
    • Proporciona Chaos API para la gestión del flujo de trabajo del caos
    • Litmus SDK admite Go, Python y Ansible para crear sus propios experimentos.

    duendecillo

    duendecillo ayuda a los ingenieros a crear software más resistente. Proporciona una plataforma para ejecutar experimentos de ingeniería del caos de una manera segura y sencilla.

    Puede inyectar cuidadosamente fallas en hosts o contenedores con gremlin independientemente de dónde se encuentren, ya sea en la nube pública o en su propio centro de datos.

    duendecillo

    Características de Gremlin:

    • Instala un agente ligero en sus hosts o contenedores para inyectar fallas
    • Proporciona más de 10 modos de ataque de infraestructura diferentes
    • Los gremlins estatales le permiten manipular la hora del sistema, apagar o reiniciar hosts y matar procesadores.
    • Los gremlins de red pueden inyectar latencia para introducir la pérdida de paquetes o eliminar el tráfico.
    • Los ataques a la biblioteca Alfi de Gremlin se pueden configurar, iniciar y detener a través de la aplicación web. API o CLI
    • Le permite apuntar al radio de explosión que desea atacar con precisión
    • Le permite detener todos los ataques y hacer que el sistema vuelva a un estado estable

    Steadybit

    Steadybit tiene como objetivo reducir el tiempo de inactividad de forma proactiva y proporciona visibilidad de los problemas del sistema. Puede ejecutar esta herramienta localmente en su infraestructura o en la nube como servicio (SaaS).

    bit estable

    Para usar Steadybit, usted define la situación, simula los experimentos, ejecuta los experimentos simulados en producción y automatiza todos los experimentos. Ejecuta agentes inteligentes en su sistema para descubrir posibles problemas y debilidades. Se integra con múltiples sistemas con facilidad.

    Conclusión

    Siga adelante y sea lo suficientemente valiente para aplicar los principios de la ingeniería del caos y probar su producción con las herramientas que mencioné anteriormente. Estas herramientas lo ayudarán a encontrar múltiples debilidades no identificadas en su sistema y le ayudará a que su sistema sea más resistente.