Ingeniería del caos

Compartir esta publicación

Share on facebook
Share on linkedin
Share on twitter
Share on email

Uno de los mayores incentivos para asistir a la Software Crafters de Barcelona de este año fueron los open spaces que tuvieron lugar el primer día por la tarde. En estos open spaces se trataron temas tan interesantes como «ramas vs integración continua», «monolitos vs microservicios«, «como gestionar la diversidad en nuestro lugar de trabajo» o compartir las experiencias desastrosas que hemos tenido en salidas a producción.
Es en este último punto en el que queremos hacer hincapié en este artículo, ya que una de las estrategias comentadas en este open space y que más nos sorprendieron fue la de «Ingeniería del caos».

 

Pasos de Ingeniería del caos

Esta técnica se basa en poner a prueba nuestro entorno de producción provocando fallos intencionados en el mismo, de forma que podamos saber cómo reacciona nuestro sistema ante estos fallos en un entorno controlado. Estos fallos podrían ser, por ejemplo, desconectar uno de los microservicios de nuestro sistema, tumbar una base de datos, o simular una caída en la red.

Si llevamos a cabo esta técnica, aunque a primera vista pueda parecer peligrosa, hemos de asumir que los beneficios obtenidos de la misma serán mayores que los riesgos; ya que el hecho de provocar un fallo en nuestro sistema nos permitirá observar qué partes del mismo se comportan correctamente y cuales no, y podremos estar preparados cuando dicho fallo ocurra en un entorno no controlado.

Llevar a cabo estos experimentos no es una tarea trivial, por lo se definen unos pasos para que su ejecución sea lo más segura posible y sus resultados sean válidos. De esta forma podremos tomar las acciones adecuadas a la hora de solucionar los errores que hayamos encontrado. Estos pasos están definidos en la web Principles of chaos y son los siguientes:

 

  1. Definir un estado de ejecución correcto (steady state) de nuestro sistema. Necesitamos definir unos parámetros de ejecución de nuestro sistema (por ejemplo ciertos valores de ciertas métricas) que definan que está funcionando de la forma esperada para poder medir las diferencias cuando provoquemos el fallo. Además, como en todo experimento que se precie, necesitaremos un grupo de control y un grupo experimental; siendo el primero el grupo en el que mantendremos una ejecución normal y el segundo el grupo en el que aplicaremos el experimento.
  2. Definimos la hipótesis de que este estado de ejecución «correcto» continuará en ambos grupos.
  3. Realizamos el experimento. Introducimos las variables en nuestro sistema que reflejen los eventos que queremos simular, como la caída de un servidor o una base de datos.
  4. Buscamos diferencias de funcionamiento en las métricas comparándolas con las definidas en el primer paso, y comparándolas también con el grupo de control. De esta forma tratamos de rebatir la hipótesis definida en el paso dos.

Como programadores, siempre intentamos hacer nuestro código libre de fallos y lo más estable posible, intentando anticiparnos a todos los errores que puedan ocurrir. Ingeniería del caos va un paso más allá y nos habla de observar cómo se comporta nuestro sistema en presencia de estos fallos, de forma que, si los hemos controlado correctamente estaremos a salvo, pero si no lo hemos hecho, nos daremos cuenta de dónde están estos fallos y podremos solucionarlos.

 

Si queréis tener más información sobre ingeniería del caos, no olvidéis de subscribiros a nuestro newsletter mensual aquí

 

Si te gustó este artículo “Ingeniería del caos”, te puede gustar: 

 

Barcelona como ciudad inteligente

Mapa de los “main players”: ecosistema startup y tech en Barcelona

Proyectos IoT que cambiarán el mundo 


banner blog

Ecosistema de salud digital en Barcelona

Cluster de salud digital  

Inovación disruptiva: ejemplos 

Búsqueda visual en el comercio electrónico 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Suscríbete a nuestro boletín de noticias

Recibe actualizaciones de los últimos descubrimientos tecnológicos

Acerca de Apiumhub

Apiumhub reúne a una comunidad de desarrolladores y arquitectos de software para ayudarte a transformar tu idea en un producto potente y escalable. Nuestro Tech Hub se especializa en Arquitectura de Software, Desarrollo Web & Desarrollo de Aplicaciones Móviles. Aquí compartimos con usted consejos de la industria & mejores prácticas, basadas en nuestra experiencia.

Posts populares
Descarga Grow Professionally: Inside Apiumhub's Dev Team

¿Estás orientado a Datos?

Construyamos tu éxito juntos.

Contáctanos

¿Tienes un proyecto desafiante?

Podemos trabajar juntos