La observabilidad es clave cuando se ejecutan aplicaciones nativas de la nube, donde la funcionalidad de la aplicación surge de la interacción entre un gran número de microservicios que se ejecutan en múltiples ubicaciones. La naturaleza débilmente acoplada de las aplicaciones de microservicios significa potencialmente que cada microservicio informa sobre sus actividades a su manera. Sin una herramienta que compile y correlacione esos datos de telemetría, es enormemente difícil, si no imposible, rastrear el procesamiento de una solicitud de principio a fin, lo cual es crucial para la resolución de problemas.
Al buscar una herramienta de observabilidad multifuncional, el equipo detrás del proyecto NGINX Modern Apps Reference Architecture (MARA) eligió OpenTelemetry . Ahora que nuestro equipo de OSS ha elegido este proyecto emergente, queremos profundizar más en él. En GlueCon 2022 , me reuní con Granville Schmidt, arquitecto de la oficina del CTO de F5, para analizar por qué estamos entusiasmados con el estado actual y las ofertas futuras de OpenTelemetry. Puede ver nuestra conversación a continuación y, en este blog, obtener más información sobre por qué OpenTelemetry es un gran activo para el panorama de aplicação nativas de la nube.
Anunciado por primera vez en KubeCon 2019 en Barcelona, OpenTelemetry ha atraído a un grupo entusiasta de colaboradores. Es el segundo proyecto más popular de la Cloud Native Computing Foundation (CNCF) en términos de cantidad de contribuciones y, en los últimos seis meses, la tasa de contribución ha sido más alta que nunca. Esta gran cantidad de colaboradores demuestra que OpenTelemetry ha madurado y está empezando a superar el abismo entre los primeros usuarios (que desean estar a la vanguardia) y los pragmáticos (que desean productos maduros).
OpenTelemetry se centra en los datos, específicamente, en los datos y el flujo de datos (telemetría) necesarios para comprender, solucionar problemas y mejorar nuestras aplicações. Los datos solo son útiles si se pueden agregar, analizar y visualizar a escala. Si bien OpenTelemetry no brinda instrucciones sobre cómo visualizar los datos, nos permite dejar de preocuparnos por qué datos podemos obtener y, en cambio, centrarnos en lo que podemos hacer con ellos.
OpenTelemetry también permite una correlación natural entre esas fuentes de datos, en lugar de esperar que intentemos esa correlación nosotros mismos. La capacidad de OpenTelemetry para correlacionar eventos entre aplicaciones nos está llevando a Observability 2.0, un nuevo punto de referencia para medir la actividad de las aplicação en la nube. Los datos ya están correlacionados para nosotros, lo que cambia la forma en que vemos nuestro espacio de aplicação . Ya no estamos limitados a saber simplemente si la aplicación se está ejecutando o no; ahora podemos comprender el camino que toma cualquier solicitud a través de nuestras aplicaciones.
Dos proyectos notables de código abierto precedieron a OpenTelemetry: OpenTracing (OT) y OpenCensus (OC) . Ambos asumieron el desafío de estandarizar el formato de los datos de seguimiento para que pudiéramos obtener la información necesaria y comprender cómo impactaba en nuestras aplicaciones modernas. Si bien cada proyecto tenía similitudes, competían por recursos y las empresas a menudo tenían que elegir solo uno. En marzo de 2019, los dos proyectos anunciaron su fusión en OpenTelemetry con el objetivo de unificar la forma en que se generan y formatean los datos de seguimiento. El proyecto OpenTelemetry está definiendo aún más los estándares para adquirir otras clases de datos de observabilidad ( métricas y registros ) a través de los mismos canales de telemetría que los rastros, lo que conduce a una mayor integración y claridad.
A continuación, veamos dos aspectos funcionales interesantes de OpenTelemetry: rastreo distribuido e inteligencia de aplicaciones .
Si bien el rastreo distribuido existe desde hace años, muchos cambios en la última década han aumentado su necesidad. Utilizando el marco Cynefin , podemos destacar algunos de los cambios y desafíos que enfrentamos ahora en las aplicações modernas:
El marco Cynefin ilustra cómo podemos cambiar nuestras prácticas a medida que pasamos de lo simple a lo complejo. El desafío es que nuestro movimiento se realiza a lo largo de dos caminos separados, cada uno con sus propias características, y tratar de tomar un atajo directo de lo simple a lo complejo a menudo crea desorden y progreso incompleto.
Identifiquemos qué elementos crean las rutas en nuestra aplicación moderna y el recorrido nativo de la nube. En nuestra primera ruta (el eje Y en el diagrama de Cynefin), tenemos aplicaciones modernas que generalmente son arquitecturas de microservicios, donde cada aplicación realiza un trabajo específico. En la segunda ruta (el eje X), nuestro entorno complicado es efímero, ya que las instancias de microservicios giran hacia arriba y hacia abajo en respuesta a la demanda y se mueven a diferentes hosts en respuesta a problemas de red.
También debemos considerar el surgimiento y el crecimiento masivo de entornos de nube como Amazon Web Services (AWS), Microsoft Azure y Google Cloud Platform (GCP). Una ventaja de estas nubes es la respuesta elástica: expandir o contraer recursos para adaptarse al nivel actual de demanda. Con el impacto agregado de la orquestación de contenedores (más comúnmente usando Kubernetes), comenzamos a ver un comportamiento caótico a medida que la cantidad y la ubicación de los recursos cambian con el tiempo. (Incluso esta visión relativamente restringida es caótica, y elementos como las funciones sin servidor pueden hacerla aún más caótica).
En una arquitectura moderna, con muchas partes separadas que producen la telemetría que necesitamos para monitorear y mantener nuestras aplicaciones, la carga de datos es masiva y complicada. Es posible que los problemas no se repitan de manera confiable ni que sea fácil detectarlos porque no controlamos completamente la infraestructura y las vías de comunicación. Necesitamos tecnología que nos permita rastrear todas las actividades y elementos relacionados, para que podamos comprender y analizar nuestros entornos cambiantes.
Ahí es donde entra en juego OpenTelemetry.
El rastreo distribuido está provocando grandes cambios en la industria, especialmente en torno a cómo las solicitudes generan una visión interna del rendimiento a través de métricas. Con el rastreo distribuido, podemos rastrear nuevas métricas de muchos tipos, pero las más comunes son aquellas relacionadas con la cantidad de solicitudes por unidad de tiempo, la cantidad de errores por unidad de tiempo y el tiempo que toma una solicitud agregada en esa unidad de tiempo.
Las métricas existen desde hace tiempo: son fáciles de gestionar y almacenar, se agregan fácilmente y se prestan al análisis matemático. En OpenTelemetry, todas las aplicaciones que generan métricas pueden enviarlas a un punto de recopilación común a través de una capa de telemetría (transferencia), lo que ayuda a alinear los datos de los servicios acoplados de forma flexible que los generan. Esto incluye la alineación con la infraestructura subyacente. En resumen, con OpenTelemetry, resulta más fácil adquirir y enviar métricas.
OpenTelemetry también puede ayudar a resolver el problema de la desviación y el sesgo de las marcas de tiempo, lo que dificulta la correlación de eventos. OpenTelemetry asigna a cada solicitud un TraceId , pero los datos aún pueden verse afectados por desviaciones y sesgos, que suelen aparecer en arquitecturas nativas de la nube. Las desviaciones y los sesgos pueden ser resultado de rutas de informes con duraciones variables o de la falta de una sincronización estricta entre los relojes de los distintos hosts. Al rastrear la comunicación entre componentes durante el procesamiento del tráfico, el rastreo distribuido permite a OpenTelemetry medir tramos individuales (las unidades de trabajo y los bloques de construcción de un rastreo) sin requerir una instrumentación profunda de la aplicación asociada.
La combinación de estas tres señales (categorías de telemetría) nos permite corregir problemas y devolver nuestras aplicaciones a la calidad de producción:
Aquí es donde volvemos a la Observabilidad 2.0. La capacidad de obtener trazas y ver inmediatamente qué métricas corresponden a qué traza nos da mucho poder. Por ejemplo, cuando las métricas indican un problema, el seguimiento distribuido le permite regresar a la solicitud específica que causó el problema inicial y seguir el progreso a través de cada paso del cumplimiento de la solicitud. Dado que nuestro seguimiento se compone de los intervalos en el orden en que ocurren, podemos seguir la solicitud a través de cada paso de su recorrido. Tener una comprensión de lo que sucedió, en qué orden (desde el evento inicial hasta el problema indicado y hasta el resultado final) nos permite apuntar exactamente “dónde” dentro de nuestras aplicaciones centrar nuestra atención.
Aunque parezca simple, el aspecto de seguimiento distribuido de OpenTelemetry puede brindarnos una gran perspectiva de lo que experimentan nuestros usuarios, siendo un indicador del éxito de la solicitud y el momento de la ejecución. Como usuario, me preocupo por mi solicitud. Como ingeniero de confiabilidad del sitio (SRE), me preocupan las solicitudes agregadas . OpenTelemetry me ofrece ambas cosas, junto con la capacidad de explorar desde lo agregado hasta lo específico, ya que está diseñado para que todos los datos necesarios estén disponibles en todas las aplicaciones.
Este nuevo flujo de datos de OpenTelemetry también nos permite ser adaptativos y automatizados en nuestro desarrollo y respuesta operativa. Con todos estos datos acumulados, podemos hacer nuestra aplicação más inteligente. Actualmente, F5 se centra en ayudar a nuestros clientes en su camino hacia el desarrollo e implementación de lo que llamamos “ aplicações adaptativas ”. Las aplicaciones adaptativas son exactamente lo que parecen: aplicações que ajustan de forma automática e inteligente su comportamiento en reacción a los cambios en su entorno.
Es por eso que estamos viendo mucha más inteligencia artificial (IA) y aprendizaje automático (ML) en diversas soluciones. Pero no es solo porque sean términos de tendencia: la IA y el ML son útiles porque ahora tenemos suficientes datos para llegar a conclusiones precisas sobre la causalidad y diseñar respuestas apropiadas.
Al hacer que los datos de telemetría sean accesibles y estandarizados, OpenTelemetry hace que el camino hacia aplicaciones adaptables sea mucho más fácil. A medida que diferentes tipos de productos comienzan a generar métricas similares y al utilizar las convenciones semánticas establecidas dentro de OpenTelemetry, se vuelve más fácil correlacionar sus acciones durante el procesamiento de solicitudes y alimentar esa información a algoritmos de ML y AI para permitir que las aplicações y la infraestructura se adapten dinámicamente.
Cuando comprendes la ciencia de datos detrás de todo y te aseguras de que tus datos de telemetría se relacionan con tu IA y ML, es ahí donde la naturaleza basada en datos de las aplicaciones adaptativas puede evolucionar y brillar.
La codificación de la telemetría es una victoria obvia tanto para los usuarios de OpenTelemetry como para las aplicações que lo utilizan como canal de telemetría. Se pueden recopilar datos de múltiples fuentes y enviarlos a cualquier herramienta de análisis y agregación compatible. Además, OpenTelemetry Collector libera a los proveedores de la necesidad de implementar recopiladores ellos mismos. En cambio, pueden centrarse en mejorar su código para realizar análisis significativos y tomar acciones inteligentes, y pueden crear nuevas herramientas para ayudar a comprender este nuevo mundo complejo y caótico. De hecho, OpenTelemetry Collector, respaldado por la innovación del código abierto, es enormemente capaz de trabajar con casi todos los formatos existentes, al tiempo que conecta la tecnología con el futuro.
Al centrarse en las principales clases de datos que necesitamos para comprender nuestras aplicações, OpenTelemetry ha hecho posible que nuestras aplicaciones proporcionen conocimientos más profundos sobre el rendimiento y los problemas de nuestro complejo mundo de aplicação modernas. Al correlacionar nuestros datos y alinearlos con las convenciones semánticas y estándar, OpenTelemetry hace que el viaje hacia las aplicações modernas sea más accesible. Y a medida que el proyecto continúa madurando y la adopción continúa creciendo, OpenTelemetry es el enfoque claro hacia nuestra comprensión más profunda y nuestra capacidad de aplicar técnicas de IA y ML para hacer que esa complejidad sea comprensible.
Para obtener más información sobre cómo los ingenieros de OSS de NGINX utilizan OpenTelemetry, pruebe la Arquitectura de referencia de aplicaciones modernas y la aplicação de muestra (Bank of Sirius).
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.