Gestión del caos de microservicios y contenedores

Por octubre 11, 2018

Efecto Mariposa

Imagine un entorno en el que el error de un componente de aplicación perjudique un servicio completo. Podemos decir que no se trata de un gran problema, puesto que esto ocurre siempre que se administran aplicaciones monolíticas, salvo por el hecho de que cuando “falla uno, fallan todos”, característicos de solo un código ejecutable lógico.

Pero imagine un ambiente en el que la falla de un componente que ni conocíamos y que tal vez ni exista provoque la caída de todo el sistema. Ahora sí estamos lidiando con la complejidad y el caos.

Señoras y señores, bienvenidos al mundo de la monitorización de contenedores y microservicios.

El reto de la complejidad

Los microservicios y contenedores son excelentes para los desarrolladores porque eliminan el problema de la fragilidad, escala e implementación asociado a arquitecturas de aplicaciones bien acopladas. Al desmembrar las aplicaciones en servicios independientes menores con el soporte en la nube y entrega continua, las arquitecturas de microservicios permiten que los desarrolladores creen códigos con más rapidez; sin tener que esperar por la reconstrucción, la reimplementación y las pruebas de integración demoradas del sistema, ni preocuparse si un cambio en una línea del código puede causar una pérdida de memoria y derribar el sistema.

Por consiguiente, como desarrollador, ¿no le gustaría trabajar con algo que lo libre de esa preocupación? Claro que sí, pero hay un problema – esta preocupación nunca desaparece, sólo cambia de lugar. Con el avance de las aplicaciones monolíticas para microservicios, otros grupos ahora tienen que encarar el “reto de la complejidad” y todo el nuevo conjunto de cuestiones asociadas, además de los nuevos profesionales mantenedores de la tecnología, es decir, los ingenieros de confiabilidad del sitio web, los profesionales de DevOps y operaciones de TI.

 Nuevos niveles de complejidad

Desde el punto de vista de la monitorización de aplicaciones, la arquitectura de microservicios, que estructura una aplicación como una colección de servicios distintos o superficialmente acoplados, implica un nivel de complejidad totalmente nuevo. En primer lugar, estas arquitecturas aumentan naturalmente la proliferación de instancias de software debido a la descomposición de aplicaciones monolíticas – y esto es sólo el comienzo. Añada allí los contenedores, donde los servicios individuales pueden ser orquestados de forma dinámica para que se inicien, se detengan y reinicien en cualquier parte del entorno, dificultando el descubrimiento y el rastreo de los problemas. Como uno de mis colegas dijo de forma tan acertada: “monitorizar microservicios es como intentar rastrear un colibrí en una gran bandada de colibríes”. Una tarea difícil, que empeora aún más debido al aumento del número de dependencias, y posibles identificadores del contenedor, como dirección de IP, que son oscurecidos por el sistema host en el que se ejecutan.

Impacto en la gestión del rendimiento de las aplicaciones

La naturaleza momentánea de las aplicaciones en los contenedores presenta numerosos desafíos para los equipos de gestión de rendimiento de las aplicaciones, ya que necesitan entender cómo está el desempeño de los contenedores y su contribución para el rendimiento general de la aplicación. Además, los equipos necesitan obtener una visibilidad precisa, que no se obtiene fácilmente utilizando herramientas tradicionales, donde la densidad de los estándares de microservicios hace que los mapas de topología sean incomprensibles. Por otro lado, hay un aumento exponencial en los datos a causa de las interacciones de los microservicios que potencialmente generan cientos de transacciones y el proceso de definición manual de las líneas de base de rendimiento se vuelve casi imposible. Por último, y no menos importante, los microservicios en contenedores generalmente exhiben comportamientos desconocidos, que no permiten determinar el desempeño por medio del análisis de componentes individuales.

Estos problemas determinan la necesidad de un nuevo modelo para la gestión del rendimiento de aplicaciones (APM – Application Performance Management), exigiendo que los equipos evalúen la eficacia de las soluciones actuales para resolver los desafíos de monitorización de microservicios y contenedores. Las áreas a seguir deben tener prioridad:

  • Implementaciones leves – las soluciones tradicionales basadas en agentes pueden ser inadecuadas para determinados estilos y aumentar los gastos. Sin embargo, otras situaciones tendrán los beneficios de las métricas de rendimiento avanzadas proporcionadas por agentes. Busque métodos de soluciones que puedan incorporar los dos estilos.
  • Rastreo de transacciones ‘en todos los puntos’ – con microservicios en contenedores, la complejidad cambia para la comunicación entre los microservicios; es aquí donde muchos problemas probablemente surgirán. Las transacciones se vuelven menos limitadas, como en el caso de sistemas monolíticos y sus componentes (front-end, middleware y base de datos); en su lugar, se extienden a muchos servicios a través de las API. Por lo tanto, el rastreo de transacciones adquiere una mayor importancia, sobre todo si se cuenta con el soporte al rastreo de punta a punta del rendimiento de la API referente a las transacciones específicas de microservicios.
  • Métodos y análisis estadísticos – incluso con mayores tasas de frecuencia de recolección de datos, es difícil definir el desempeño real cuando los servicios en los contenedores oscilan dinámicamente. Es por ello que las soluciones modernas de monitorización de aplicaciones incorporan métodos estadísticos comprobados para establecer intensidades de variación a partir de comportamientos estandarizados de rendimiento. En CA APM recibe el nombre de Análisis Diferencial, que a diferencia de la línea de base estática tradicional, ha sido creada para los ambientes dinámicos de los microservicios.
  • Flujos de trabajo de la selección asistida – en la selección de problemas en entornos en contenedores, velocidad y claridad son elementos esenciales, que implican la verificación de cuáles, cuándo, quién (es impactado), cuándo y por qué ocurren los eventos. La selección asistida de CA APM lo hace posible, identificando los eventos más significativos que suceden en los entornos de los microservicios y proporcionando informaciones contextualizadas (historias). En lugar de buscar manualmente informaciones en mapas de topología complejos después del hecho, las acciones de selección asistida de eventos (como condiciones y variaciones anómalas detectadas por el análisis diferencial) automáticamente reúnen y presentan las evidencias en un “cuaderno” de análisis, acelerando el análisis de causa raíz y reduciendo la fatiga de alertas.

Monitorización de aplicaciones de CA

Sin lugar a dudas, los microservicios y los contenedores aumentan el nivel de monitorización de aplicaciones. En CA Technologies lo reconocemos, y por eso continuamos invirtiendo en el suministro de las capacidades necesarias para que las organizaciones aprovechen los beneficios de estas arquitecturas dinámicas. Aunque estos recursos estén incluidos en nuestra solución CA APM, también reconocemos la importancia de debates y discusiones continuos, ya que estas plataformas maduran y evolucionan. Por eso, tenemos la satisfacción de patrocinar un nuevo eBook sobre monitorización de contenedores, que describe detalladamente los desafíos mencionados anteriormente, además de los nuevos enfoques y técnicas de monitorización necesarias para futuras expansiones de esas tecnologías.

Este eBook y otros recursos están en nuestra página de monitorización de contenedores.

Escrito por Peter Waterhouse
Senior Strategist at CA Technologies
LinkedIn: @peterwaterhouse