Menta

Blog

¿Cuáles son las ventajas de implementar “Distributed Tracing“?

Aprende qué es “Distributed Tracing“ y cómo ayuda a visualizar, capturar y analizar a través de arquitecturas complejas.

“Distributed Tracing“ es una nueva función de inteligencia que fue dada a conocer en septiembre pasado en el Future Stack de New Relic, en San Francisco. Está diseñada para ayudar a los equipos que trabajan con ambientes modernos a visualizar, capturar y analizar a través de arquitecturas complejas, donde están incluidas tanto las monolíticas como microservicios.

Cualquier usuario de APM puede habilitar esta nueva característica, solo se necesita actualizar los agentes y habilitar el seguimientos distribuido en sus configuraciones. Es importante mencionar que el soporte es para Java, .NET, Node.js, Python, Golang, Ruby y próximamente PHP. Aquí es posible reunir los datos de rastreo que se recopilan en entornos políglotas en un gráfico de dispersión detallado y visualizaciones en cascada.

¿Por qué es importante contar con “Distributed Tracing“?

Cuando se trata de una aplicación web, llamémosla RZXV, que vende entradas para eventos muy concurridos, como conciertos, puestas en escena y eventos deportivos, es necesario que se encuentre en estado óptimo. Actualmente existen muchas opciones de compra y en caso de que los usuarios encuentren alguna falla, rápidamente podrían acudir a cualquier otro de los servicios disponibles, lo que resultaría en una pérdida para la compañía en cuestión.

En un software tan complejo como el de RZXV es común que las peticiones atraviesen un largo camino de elementos de servicio. Si existe algún problema con uno de estos elementos en el trayecto esto puede afectar significativamente el tiempo total de respuesta para dicha solicitud. Lo que estaría provocando pasar de una buena experiencia de usuario a una negativa.L

os equipos de software que trabajan en ambientes donde hay muchos servicios involucrados para dar respuesta a una petición, necesitan entender de forma clara el desempeño de cada servicio, tanto en sentido ascendente como descendente. De esta forma podrán resolver con mayor facilidad los problemas que se presenten. Lo importante es que se pueda medir la salud general del sistema y se prioricen áreas de alto valor para mejorar.

¿Por qué el software moderno es complejo?

Para entender la importancia del “Distributed Tracing“ debemos voltear a ver cómo han ido cambiando los ambientes de software en años recientes. Las compañías modernas de software trabajan ahora con arquitecturas de microservicios, contenedores y plataformas en la nube pública lo que les permite construir, escalar y operar las aplicaciones críticas de sus negocios.

Recordemos que los ambientes de software tradicionales incluían únicamente algunos servicios de gran tamaño, lo que facilitaba la identificación del problema en cuanto éste ocurría. Así, los desarrolladores de estructuras monolíticas podían ir directamente al servicio que fallaba para detectar cuellos de botella o errores críticos.

En cambio, las aplicaciones actuales se componen de diversos servicios que se encuentran en infraestructuras efímeras. Algunos de éstos pueden ser grandes monolitos construidos con tecnologías de legado, mientras que otros son clusters con microservicios dinámicos más pequeños. En cualquiera de los casos, además de las ventajas que traen los servicios a la compañía, los cuales hemos mencionado más arriba, también nos pueden traer algunas desventajas. En primera, la diversidad de lenguaje puede ser amplia, además, el ambiente operativo y la propiedad de los sistemas ocasiona que haya una gran cantidad de tareas por completar para los equipos que intentan gestionar estos servicios.

Ahora bien, el impacto del cambio de arquitectura monolítica a microservicios es muy importante, no solo porque modifica la forma de construir o hacer despliegues, sino por el reto de monitorear dichas arquitecturas. Para asegurarse de que todo está funcionando correctamente hace falta que los equipos DevOps estén bien enterados de cómo pueden optimizar su código en todos los elementos de servicio que comprenden un ecosistema. Ya que, en caso de que exista un problema esta será la vía más rápida para determinar cómo, cuándo y por qué ocurre.  Si sucediera que una serie de hechos desafortunados se alinearan, entonces el sistema colapsaría sin que se tuvieran las herramientas adecuadas para solucionar este inconveniente mayor.

¿En qué consiste el “Distributed Tracing“?

Las partes que componen al “Distributed Tracing“ son principalmente cuatro: es una forma de instrumentar, propagar contexto, registrar y visualizar solicitudes a través de sistemas complejos y distribuidos.

Instrumenta

La configuración de “Distributed Tracing“ se auto instrumenta con el código de la aplicación utilizando distintos agentes que funcionan con muchos lenguajes en distintas bibliotecas y marcos. Se equipa cada servicio involucrado en la solicitud ya sea con monolitos o con microservicios. Además se crean temporizaciones para cada servicio y se envía cada operación medida como un intervalo a la plataforma de origen (APM).

También se añade información importante respecto a la solución de cada tramo. Por ejemplo, cuando la instrumentación crea un intervalo que representa una operación de consulta de base de datos incluye la conexión a base de datos y la consulta SQL como atributos en el intervalo.

Propaga contexto

La plataforma tiene la capacidad de instruir automáticamente sus servicios para crear un ID único para cada una de las solicitudes entrantes. Además, propaga el ID de rastreo, así como la información necesaria de correlación, como el “contexto de rastreo“ en toda la llamada. Por ejemplo cuando un servicio hace una llamada a otro servicio, la plataforma de APM agrega contexto de rastreo al encabezado de solicitud HTTP para que el próximo servicio lo utilice. La auto instrumentación permite eliminar el trabajo de administrar y propagar el contexto, pero, si se requiere instrumentación manual, el agente de la plataforma permite extraer e inyectar contexto de seguimiento.

Registrar

Los agentes de la plataforma de APM envían datos de rastreo al servicio de SaaS, de donde se toman y almacenan los datos que se utilizan en inteligencia de datos. En esta parte es donde se realiza el trabajo más difícil. Ya que toma y almacena grandes cantidades de métricas, eventos y otros tipos de telemetría en una plataforma escalable. De esta forma, las empresas solo tienen que preocuparse por desarrollar su negocio y no por administrar su plataforma de monitoreo.

Visualizar rastros

Finalmente, todo lo anterior se combina en la experiencia de usuario de APM, donde a través de visualizaciones de seguimiento se podrá comprender ¿por qué una solicitud específica es lenta?, ¿dónde se originó un error?, ¿dónde se puede optimizar el código para mejorar la experiencia del cliente? Esto cuenta, además, con una capacidad avanzada de filtrado de seguimiento tanto de APM como de otras herramientas como inteligencia de datos o monitoreo de usuarios reales (RUM).

Ayudar a los equipos que manejan las aplicaciones de tu empresa es muy importante, ya que les permite optimizar sus tiempos, para poder dedicarse de lleno a mejorar el negocio y no solo a administrar sus servicio de monitoreo. Esto es cada vez más accesible gracias a herramientas como APM y la recién adquirida característica de “Distributed Tracing“.

Ahora que sabes todas las ventajas de “Distributed Tracing“ seguramente querrás incluirlo en tu aplicación. Platica con los expertos.

Contáctanos

Por favor introduce tus datos y nos pondremos en contacto contigo.

Recibirás un resumen semanal.