Hace apenas unos años, los microservicios eran una curiosidad que los desarrolladores discutían con una especie de entusiasmo vertiginoso ante las posibilidades y oportunidades que presentaba la incipiente arquitectura de aplicaciones.
Hoy en día, incluso los que nos dedicamos a las redes hablamos de ellas porque prácticamente se han convertido, como afirma el último estudio de Lightstep , en algo habitual en las empresas. En serio. En nuestro informe sobre el estado de la entrega de aplicação de 2018, incluso los roles relacionados con la red indicaron que deseaban que los servicios de aplicação se prestaran en contenedores. Por lo tanto, no debería sorprender que la encuesta Lightstep antes mencionada haya descubierto que no solo el 91 % de los encuestados usa o planea usar microservicios, sino que el 86 % también espera que sean la opción predeterminada dentro de cinco años.
Eso no quiere decir que no haya desafíos. De hecho, el 99% de los encuestados por Lightstep informaron desafíos al usar microservicios. A partir de las respuestas, se podría decir razonablemente que prácticamente todo es más difícil (y a veces más caro) con los microservicios.
La encuesta señaló desafíos tanto comerciales como operativos, que van desde el aumento del costo de la agregación de registros (21%) hasta no saber qué hacer con el aumento de datos (17%) y dificultades para solucionar problemas (73%).
Sin embargo, más preocupante fue el hallazgo de que “el 98 % de los que enfrentan problemas para identificar la causa raíz de los problemas en entornos de microservicios informan que tiene un impacto directo en el negocio”.
Este es uno de los desafíos clave que se repite en otros lugares, generalmente utilizando los términos "visibilidad" u "observabilidad", dependiendo de si estás del lado de la red o del lado de DevOps.
Ambos describen esencialmente las mismas capacidades: poder ver lo que sucede mientras los mensajes recorren la red desde el cliente al servicio y viceversa. Dentro del entorno de contenedores, esto es particularmente desafiante debido al alcance y la escala de los servicios involucrados.
Con una aplicación web tradicional de tres niveles, tienes tres conjuntos de registros y tres sistemas que necesitas rastrear. Con una arquitectura de microservicios, probablemente liderada por una API que posiblemente sea utilizada tanto por clientes web como móviles, es posible que tenga decenas o cientos de servicios diferentes de los que necesita realizar un seguimiento.
El modelo de escalamiento sigue siendo el mismo (estamos escalando horizontalmente con clones), pero la magnitud dentro de un entorno de contenedores es significativamente mayor. Es como jugar al juego del topo con cien agujeros en lugar de diez. Descubrir el camino que siguió una determinada transacción será, como mínimo, un desafío. Especialmente cuando el camino puede haber desaparecido. Después de todo, la premisa de la mayoría de los entornos de contenedores es fallar rápidamente y reemplazar instancias en lugar de esperar una intervención manual.
Hay un par de maneras de abordar este desafío. Lo primero y más importante es la instrumentación que ayuda en el rastreo y la resolución de problemas. Este enfoque no es nuevo, pero la naturaleza volátil de los entornos de contenedores lo hace más desafiante. Aun así, la inserción de elementos de seguimiento (como encabezados HTTP personalizados con identificadores únicos) puede ser una gran ayuda para las operaciones cuando intentan rastrear errores o problemas de rendimiento. Si bien no suele ser una capacidad de las opciones de escalamiento de contenedores nativos, es una que las mallas de servicios están abordando como parte de sus ofertas.
En segundo lugar está la capacidad de poner en cuarentena los microservicios con problemas para permitir que operaciones y desarrollo examinen el sistema en el estado que provocó la falla. Básicamente, la cuarentena elimina el contenedor enfermo del entorno activo, de modo que ya no se le envían llamadas, pero lo mantiene activo para su análisis e inspección.
No existe una varita mágica, pero poder rastrear y poner en cuarentena contenedores en implementaciones basadas en microservicios puede ayudar mucho a reducir el tiempo medio de resolución (MTTR) y reducir el impacto en el negocio.