¿Qué es el rastreo distribuido?
El rastreo distribuido consiste en observar las solicitudes de datos a medida que fluyen por un sistema distribuido. La arquitectura de microservicios moderna suele tener varios componentes pequeños e independientes, que se comunican e intercambian datos constantemente mediante API para realizar tareas complejas. Con el rastreo distribuido, los desarrolladores pueden rastrear (o seguir visualmente) una ruta de solicitud a través de diferentes microservicios. Esta visibilidad ayuda a solucionar o corregir errores y problemas de rendimiento.
¿Cuáles son los beneficios del rastreo distribuido?
Los desarrolladores de software pueden implementar sistemas de rastreo distribuido en casi cualquier entorno nativo en la nube, así como registrar los rastreos distribuidos que generan las aplicaciones en la nube. Además, las herramientas de rastreo admiten numerosos lenguajes de programación y pilas de software, lo que permite que los equipos de software monitoreen y recopilen datos de rendimiento para diferentes aplicaciones en la misma plataforma.
Los equipos de desarrollo utilizan el rastreo distribuido para mejorar la observabilidad, así como para resolver problemas de rendimiento que las herramientas convencionales de depuración y monitoreo de software no pueden resolver.
Las siguientes son otras ventajas del rastreo distribuido.
Acelere la solución de problemas de software
Las aplicaciones modernas se basan en numerosos microservicios para intercambiar datos y cumplir con las solicitudes de servicio en sistemas distribuidos. La solución de problemas de rendimiento en una arquitectura basada en microservicios es considerablemente más difícil que en una aplicación de software monolítica. A diferencia de una aplicación monolítica, la causa raíz de un problema de software específico puede no ser evidente: la superposición y las interacciones complejas entre varios módulos de software pueden dificultar el diagnóstico de los problemas.
Con el rastreo distribuido, los equipos de software pueden monitorear los datos que pasan por rutas complejas que conectan varios microservicios y almacenamiento de datos. Mediante herramientas de rastreo distribuidas, los equipos de software rastrean las solicitudes y visualizan las rutas de propagación de datos con precisión. Los equipos de software pueden resolver los problemas de rendimiento con prontitud y minimizar las interrupciones del servicio.
Mejore la colaboración entre desarrolladores
Con frecuencia, varios desarrolladores participan en la creación de una aplicación en la nube, y cada uno es responsable de uno o varios microservicios. El proceso de desarrollo de software se ralentiza si los desarrolladores no pueden rastrear los datos intercambiados por los microservicios. Con los sistemas de rastreo distribuido, los desarrolladores pueden colaborar proporcionando datos de telemetría, como registros y rastreos, para cada solicitud de servicio que realice el microservicio. Los desarrolladores pueden responder con precisión a los errores y otros problemas de software descubiertos durante las pruebas y la producción.
Reduzca el tiempo de comercialización
Las organizaciones que implementan plataformas de rastreo distribuido pueden optimizar y acelerar los esfuerzos para lanzar aplicaciones de software para los usuarios finales. Los equipos de software revisan los rastreos distribuidos para obtener información que acelere el desarrollo de software, minimice los costos de desarrollo, comprenda el comportamiento de los usuarios y mejore la preparación para el mercado.
¿Cuáles son los diferentes tipos de rastreo distribuido?
Los equipos de software utilizan herramientas de rastreo distribuidas para supervisar, analizar y optimizar las aplicaciones.
Rastreo de códigos
El rastreo de código es un proceso de software que inspecciona el flujo de códigos fuente en una aplicación al realizar una función específica. Ayuda a los desarrolladores a comprender el flujo lógico del código y a identificar problemas desconocidos. Por ejemplo, los desarrolladores utilizan el rastreo de código para validar que la solicitud de servicio haya invocado pasos para consultar una base de datos. Si algunas funciones del software no responden, el sistema de rastreo recopilará el estado de error apropiado y llamará la atención sobre el tiempo de respuesta.
Rastreo de programas
El rastreo de programas es un método en el que los desarrolladores pueden examinar las direcciones de las instrucciones y variables llamadas por una aplicación activa. Cuando se ejecuta una aplicación de software, procesa cada línea de código que reside en un espacio de memoria asignado específico. La aplicación también procesa las variables almacenadas en la memoria de la máquina. Inspeccionar los cambios en las memorias de datos y programas sin una herramienta automatizada es todo un desafío. Con el rastreo de programas, los equipos de software pueden diagnosticar problemas de rendimiento muy arraigados, como el desbordamiento de memoria, el consumo excesivo de recursos y el bloqueo de operaciones lógicas.
Rastreo completo
Con el rastreo de extremo a extremo, los equipos de desarrollo pueden rastrear la transformación de datos a lo largo de la ruta de solicitud de servicio. Cuando una aplicación inicia una solicitud, envía datos a otros componentes del software para su posterior procesamiento. Los desarrolladores utilizan herramientas de rastreo para rastrear y compilar los cambios que sufren los datos críticos de extremo a extremo. Ofrece una vista centrada en la aplicación de las solicitudes que fluyen a través de la aplicación.
¿Cómo funciona el rastreo distribuido de extremo a extremo en la arquitectura de microservicios?
Al usar aplicaciones, los usuarios inician las solicitudes de servicio, y los diferentes componentes de la aplicación procesan la solicitud.
Piense en un usuario que hace una reserva de entradas en una aplicación de reserva de películas en línea. El usuario introduce sus datos de contacto, los detalles de la película y la información de pago, y elige Reservar ahora. Se crea una solicitud que se dirige a:
- Microservicio A que valida los datos introducidos por el usuario.
- Microservicio B que toma los datos de A y crea un registro en la base de datos de clientes.
- Microservicio C que toma los datos de B y valida el pago.
- Microservicio D que toma los datos de C, asigna un asiento y genera datos de la entrada de cine.
- Microservicio E que toma los datos de D y crea un archivo PDF de la entrada formateada.
A continuación, se devuelve una respuesta que contiene el PDF de la entrada a la cadena de microservicios de E a D a C a B a A, hasta que, finalmente, llega al usuario. El ejemplo anterior es sencillo: una solicitud suele pasar por varias docenas de microservicios e incluso por cadenas de componentes de software de terceros fuera de la aplicación. Esto hace que el proceso sea cada vez más complejo.
Los sistemas de rastreo distribuido rastrean estas interacciones de las solicitudes de servicio con otros microservicios y componentes de software en el entorno de computación distribuida. Un seguimiento distribuido representa el cronograma y todas las acciones que se producen entre la generación de la solicitud y la recepción de la respuesta. Los equipos de software utilizan el rastreo para seguir el movimiento de los datos a través de varios microservicios con los que interactúa la solicitud inicial.
Intervalo
Al procesar una solicitud de servicio, una aplicación puede realizar varias acciones. Estas acciones se representan como intervalos en el rastreo distribuido. Por ejemplo, un intervalo puede ser una llamada a la API, la autenticación de usuarios o la habilitación del acceso al almacenamiento. Si una sola solicitud da como resultado varias acciones, el intervalo inicial (o principal) puede dividirse en varios intervalos secundarios. Estas capas anidadas de tramos principales y secundarios forman una representación lógica continua de los pasos realizados para cumplir con la solicitud de servicio.
ID de rastreo
El sistema de rastreo distribuido asigna un ID único a cada solicitud para rastrearla. Cada intervalo hereda el mismo ID de rastreo de la solicitud original a la que pertenece. Los intervalos también se etiquetan con un ID de intervalo único que ayuda al sistema de rastreo a consolidar los metadatos, los registros y las métricas que recopila.
Recopilación de métricas
A medida que cada intervalo pasa por diferentes microservicios, agrega métricas que les proporcionan a los desarrolladores información profunda y precisa sobre el comportamiento del software. Puede recopilar la tasa de errores, la marca de tiempo, el tiempo de respuesta y otros metadatos con los intervalos. Una vez que el rastreo completa un ciclo completo, la herramienta de rastreo distribuido consolida todos los datos recopilados.
Por ejemplo, una llamada a la API se evalúa con el tiempo de respuesta, el estado del error y el desglose de las funciones secundarias que cumplen varios servicios de terceros. La herramienta de rastreo convierte los datos en formularios visuales, destacando los indicadores clave y los resúmenes de rendimiento. De esta manera, los ingenieros de fiabilidad del sitio pueden identificar rápidamente los errores, inspeccionar los elementos de datos críticos y colaborar con los equipos de desarrollo para corregir los problemas de rendimiento y garantizar el cumplimiento de los acuerdos de nivel de servicio (SLA).
¿Qué son los estándares de rastreo distribuido?
Los estándares de rastreo distribuido proporcionan un marco común y herramientas de software para los desarrolladores. Estos estándares monitorean, visualizan y analizan las solicitudes de servicio en entornos de aplicaciones modernos. Al estandarizar el flujo de trabajo de rastreo distribuido, los equipos de software pueden instrumentar el rastreo de solicitudes sin estar sujetos a la dependencia de un proveedor.
En las siguientes secciones, se describen los estándares introducidos para permitir la interoperabilidad al realizar el rastreo distribuido.
OpenTracing
OpenTracing es un estándar de rastreo distribuido de código abierto desarrollado por Cloud Native Computing Foundation (CNCF). OpenTracing se centra en permitir que los desarrolladores generen seguimientos con una API de instrumentación. Esto permite que los desarrolladores generen seguimientos distribuidos a partir de diferentes partes de la base de código, la biblioteca u otras dependencias.
OpenCensus
OpenCensus consiste en bibliotecas multilingües capaces de extraer métricas de software y enviarlas a sistemas de back-end para su análisis. Los desarrolladores pueden utilizar la API proporcionada para gestionar la forma en que se generan y recopilan los seguimientos. A diferencia de OpenTracing, los desarrolladores trabajan con OpenCensus desde un único repositorio de proyectos en lugar de bases de código y bibliotecas individuales.
OpenTelemetry
OpenTelemetry unifica OpenTracing y OpenCensus. Combina las mejores características de ambos estándares para proporcionar un marco de rastreo distribuido integral. OpenTelemetry proporciona amplios kits de desarrollo de software, API, bibliotecas y otras herramientas de instrumentación para implementar el rastreo distribuido con mayor facilidad.
¿Cuál es la diferencia entre el rastreo distribuido y el registro?
El registro es una práctica que consiste en registrar eventos específicos que se producen cuando se ejecuta una aplicación. Las herramientas de registro recopilan eventos con marcas de tiempo (como errores del sistema, interacciones de los usuarios, estados de las comunicaciones y otras métricas) para ayudar a los equipos de desarrollo a detectar anomalías en el sistema. Por lo general, hay dos tipos de registro:
- El registro centralizado recopila todas las actividades registradas y las almacena en una única ubicación.
- El registro distribuido almacena los archivos de registro en ubicaciones independientes de la nube.
Ambos métodos de registro proporcionan una descripción general estática de los incidentes que muestran a los desarrolladores lo que ocurrió en la aplicación. Por el contrario, el rastreo distribuido proporciona una pista de auditoría que aclara por qué se produjo un incidente al correlacionar varios datos de telemetría recopilados durante el período de una solicitud de servicio. El rastreo distribuido puede usar el registro y otros métodos de recopilación de datos para rastrear una solicitud de servicio específica.
¿Cuáles son los desafíos del rastreo distribuido?
El rastreo distribuido ha simplificado los esfuerzos de los desarrolladores para diagnosticar, depurar y solucionar problemas de software. A pesar de ello, siguen existiendo los siguientes desafíos que los equipos de software deben tener en cuenta al elegir las herramientas de rastreo.
Instrumentación manual
Algunas herramientas de rastreo requieren que los equipos de software instrumenten manualmente sus códigos para generar los seguimientos necesarios. Cuando los desarrolladores modifican los códigos para rastrear las solicitudes, existe el riesgo de que se produzcan errores de codificación que afecten a las versiones de producción. Además, la falta de automatización complica el rastreo, lo que provoca retrasos y, posiblemente, una recopilación de datos inexacta.
Cobertura de front-end limitada
Es posible que los desarrolladores no puedan obtener una supervisión completa de los problemas de rendimiento si sus herramientas de rastreo se limitan al análisis de back-end. En algunos casos, el sistema de rastreo distribuido solo comienza a recopilar datos cuando el primer servicio de back-end recibe la solicitud. Esto significa que los desarrolladores no pueden detectar ni inspeccionar los problemas que surjan de los servicios front-end durante la sesión de usuario correspondiente.
Muestreo aleatorio
Algunas herramientas no permiten que los equipos de software prioricen el rastreo, lo que limita la observabilidad a los rastreos muestreados aleatoriamente. Con datos de muestra limitados, las organizaciones necesitan enfoques adicionales de solución de problemas de software para capturar los principales problemas que escapan a la herramienta de rastreo.
¿Cómo puede ayudarlo AWS con sus requisitos de rastreo distribuido?
AWS X-Ray es una plataforma de rastreo distribuido que ayuda a los desarrolladores de software a rastrear las solicitudes de los usuarios e identificar los cuellos de botella en sus aplicaciones en la nube. Las organizaciones utilizan X-Ray para visualizar las métricas de las aplicaciones y mejorar la disponibilidad de las cargas de trabajo. Con AWS X-Ray, puede:
- Integrarse en todas aplicaciones que se ejecuten en Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda y AWS Elastic Beanstalk.
- Establecer la frecuencia de muestreo adecuada para proporcionar una visibilidad de extremo a extremo para el seguimiento.
- Visualizar los datos agregados con un mapa de servicios que muestre las métricas clave, como la latencia y las tasas de errores.
Cree una cuenta hoy mismo para comenzar a utilizar el rastreo distribuido en AWS.
Pasos siguientes en AWS
Obtenga acceso instantáneo al nivel Gratuito de AWS.
Comience a crear en la consola de administración de AWS.