¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
dev
Juan Mas Aguilar Hace 18 minutos Cargando comentarios…
Este post es la tercera parte de una serie dedicada al desarrollo de proyectos de observabilidad. En los anteriores posts hablamos sobre la observabilidad, qué es, por qué es tan interesante y qué pasos deberíamos dar para establecer una correcta estrategia de observabilidad siempre ajustada a los requisitos de la compañía, tanto a nivel de gobernanza, seguridad, disponibilidad, auditoría, etc. Aun así, como todo buen cliffhanger, terminamos antes de finalizar nuestro particular viaje por el modelo. Lo siento por eso ;)
Pero lo prometido es deuda, ¡vamos allá!
Debo aquí una mención especial a una filosofía que implementa muchos mecanismos que nos ayudan a implementar este estado del modelo: la ingeniería de fiabilidad del sitio o, por sus siglas en inglés, SRE.
Dentro de los múltiples conceptos de SRE, es de destacar la aplicación de métricas para analizar no solo la disponibilidad de la plataforma, sino el impacto que esto tiene en los usuarios finales: ¿qué tan fiable es mi aplicación? En concreto, hablamos de las métricas doradas (Golden Metrics) y de los indicadores de servicio.
Las métricas doradas son introducidas por Google (Beyer et al., 2016, #) y representan valores que nos dan un primer vistazo a cómo se comporta una aplicación de cara a la experiencia de usuario (sí, lo sé, han existido siempre, pero es una forma de apoyarme en bibliografía reputada). Existen frameworks parecidos como las métricas RED o USE, pero al final suelen representar el mismo concepto. Definamos las de Google:
Por otro lado, tenemos los indicadores:
Disponer de estas métricas bien definidas nos permitirá ser muy conscientes de la estabilidad de nuestros sistemas, sobre todo desde una perspectiva de cliente. Esto es, al mismo tiempo, una oportunidad para priorizar mejoras y, por otro, una herramienta para plantear estrategias comerciales.
Entendedme aquí la pregunta como algo cómico, pero no lejos de la realidad. No es trivial, pues es un ejemplo mucho más patrio de la clásica pregunta de “¿cuántos usuarios han sido impactados?”. Si no sabemos si nuestros usuarios se ven perjudicados y somos capaces de medirlo, ¿cómo sabemos dónde no llegamos al corte? ¿Cómo sabemos cuál es el problema? ¿Cómo puede el negocio mejorar el proceso? Una pregunta lleva a otra y terminamos tomando decisiones que a lo mejor son demasiado cortoplacistas o creemos que es algo que se puede solucionar de forma técnica, cuando probablemente haya un problema más grave en la ineficiencia del proceso entendido como algo global.
Este es un melón demasiado grande para este texto, ni es el objetivo del mismo. Donde quiero hacer hincapié es en cómo la observabilidad puede ayudar a resolver estas preguntas.
El primer problema cuando hablamos de observabilidad en el negocio es cómo relacionar la capa tecnológica con los procesos de negocio a los que afecta. No es lo mismo el sistema que gestiona el chatbot de ayuda del área personal de un cliente que la web a través de la cual se realizan los procesos de contratación. Normalmente, ambas aplicaciones son gestionadas de forma independiente hasta cierto punto y tienen diferentes responsables porque son parte de procesos distintos del negocio (captación vs retención) con presupuestos distintos y objetivos también distintos.
Los eventos nos ayudan mucho en este sentido. Ya los hemos definido anteriormente, pero revisitar la definición no nos hará daño. Los eventos son logs especialmente estructurados para identificar momentos, cambios de estado, transacciones o errores dentro del proceso de negocio del que forma parte. Un ejemplo sobre un error en el proceso de alta de un nuevo cliente:
Realmente, no es nada complicado ni es algo que no podamos implementar incluso si el estándar que utilicemos no los recogen explícitamente. Ni siquiera son incompatibles entre ellos, tanto así que probablemente nos interesa devolver ambas líneas. Y aun así, nos abren la capacidad de instrumentar nuestras aplicaciones con conocimiento propio del negocio. Es decir, aplicamos la estrategia inicial: que sean las propias aplicaciones las que nos digan lo que ocurre.
Si continuamos con el ejemplo, una cosa es que sepamos que hay 30 de cada 1000 queries a esa base de datos que fallan en ese momento del flujo (un operador puede ir e investigar más en profundidad) y otra que seamos capaces de saber en el mismo momento que 30 de 1000 usuarios que intentan contratar nuestro servicio no se les puede dar de alta en el sistema. La clave está en introducir una trazabilidad clara “top-down” (desde el proceso de negocio hasta la base de datos como capa tecnológica).
Aplicando correctamente esta estrategia obtendremos un conocimiento sólido del rendimiento de nuestro proceso en su completitud. Si a eso le sumamos las métricas doradas de las que hablábamos antes así como los indicadores, tenemos un mapa muy preciso de cada fase del proceso y su comportamiento. Podemos por lo tanto poner la tirita donde más nos duele evitando por el camino frustraciones, apuestas, luchas de egos, esfuerzos en vano e inversiones a fondo perdido. Útil, ¿verdad?
A estas alturas, quienes hayáis llegado hasta aquí habréis caído en la cuenta de lo costoso que es lo que proponemos. Herramientas y licencias aparte, hasta ahora lo que se ha propuesto es “barato” de implementar en términos de esfuerzo. No es necesario realizar proyectos mastodónticos ni “big bangs” para llevar todo lo que hemos comentado hasta ahora a la realidad.
Sin embargo, esto no es así con la observabilidad del negocio. Como bien hemos comentado, si de verdad queremos implementar esta última fase, debemos introducir conocimiento del negocio en la propia aplicación. Básicamente, debemos decirle a la aplicación a qué proceso pertenece y qué eventos son los que lleva a cabo. No tiene complejidad como tal, pero instrumentar este conocimiento en el catálogo completo de aplicaciones de una compañía no es algo que se haga en un espacio corto de tiempo. De hecho, es prácticamente la primera vez que hemos tenido que meternos a modificar el código.
Podría hacer lo contrario y optar por lo que muchos post sensacionalistas en internet suelen hacer: basarme en un estado ideal. Sin embargo, quiero ser honesto, las compañías tienen aplicaciones ya hechas y no van a cambiar todas ellas de la noche a la mañana. Es por ello que, al igual que con todo lo que involucra modernizar, debemos hacer un análisis serio sobre qué aplicaciones son las que nos van a devolver un mayor rendimiento a nuestro esfuerzo y empezar por ellas.
Igualmente, existe otro eje sobre el que no hemos hablado, pero que da título a esta sección y es crucial en esta etapa: la involucración de negocio. Desde la definición de los SLOs y SLAs hasta el inventariado de aplicaciones y procesos de la compañía, la capa de negocio debe trabajar codo con codo en el diseño de la estrategia de observabilidad.
Con todo ello, la observabilidad del negocio termina de implementar la observabilidad como un elemento integral de la compañía. Un resumen rápido de algunas cosas que nos proporciona:
Al igual que todo lo anterior, la observabilidad del negocio no pretende iniciar algo que no existiera antes, sino que pone el foco en la implementación sistematizada de este tipo de aproximaciones.
Llegados a este punto, ya hemos recorrido íntegramente todo el modelo de madurez que hemos propuesto. Partimos de una compañía que apenas tenía experiencia en este mundo y lo hemos puesto a la cabeza de las prácticas de observabilidad del mercado. Nuestra compañía ahora es capaz de entender profundamente el estado de sus sistemas, incluyendo el rendimiento de las mismas. Esto permite incorporar todo el conocimiento a la capa de negocio, pudiendo ponderar de forma precisa el impacto que los sistemas puedan tener en los diferentes procesos de negocio. Acercamos ambos mundos siendo mucho más certeros a la hora de localizar ineficiencias, cuellos de botella y riesgos, tomando decisiones precisas y efectivas que permitan mejorar la experiencia del cliente.
Adicionalmente, disponemos de todo un catálogo de aplicaciones y procesos completamente observados. Conocemos cuáles son sus fases, eventos e involucración dentro del proceso de negocio. Sabemos, además, cómo es la experiencia de usuario de nuestros clientes al usar las aplicaciones y podemos ofrecer a nuestros equipos de operación multitud de herramientas para acelerar la investigación y el tratamiento de las incidencias que puedan surgir.
El nuevo framework permite que los nuevos elementos nazcan también observados, minimizando el impacto que tiene en el desarrollo de la aplicación. La observabilidad ahora es un factor que aparece a la izquierda del proceso de desarrollo, en el mismo diseño de la aplicación. Esto implica una cobertura total de nuestro catálogo, lo que facilita en gran medida la auditabilidad y análisis de la seguridad de nuestros sistemas.
Por último, los equipos de desarrollo serán capaces de analizar profundamente el rendimiento y el comportamiento de sus aplicaciones tanto en ecosistemas complejos de microservicios como en aproximaciones monolíticas que, en muchas ocasiones, eran grandes cajas negras. El acceso libre a esta información permite mejorar la calidad de los desarrollos, mejorando el rendimiento y maximizando el aprovechamiento de los recursos.
Sin embargo, queda una duda: ¿cómo podemos acelerar este proceso? ¿Cómo podemos simplificar la adopción de la observabilidad tal y como la hemos planteado?
Hasta ahora hemos analizado qué es la observabilidad, qué niveles de adopción podemos encontrarnos (sea como sea el modelo de madurez que uséis) y cuál sería la aproximación para implementarlos. Pero seamos sinceros: es laborioso.
Hablamos al final de estandarizar la práctica totalidad de los componentes que forman nuestro panorama informático (servicios, servidores, aplicaciones, procesos, etc) con el único objetivo de poder definir el qué, cuándo, dónde, cómo y por qué de todos ellos. A estos efectos, se promociona actualmente una disciplina que nos puede ayudar en este viaje (no es por el SEO, lo prometo): Platform Engineering.
Platform Engineering es, en esencia, una filosofía basada en diseñar los procesos de desarrollo y operaciones como parte de un producto unificado (gestionada por un equipo habilitador dedicado) que, a través de un portal del desarrollador, provea de capacidades (bases de datos, mensajería, CICD, etc) bajo un modelo de autoprovisión.
El equipo de Plataforma es transversal a la compañía y se encarga de diseñar e implementar las diferentes capacidades (capabilities) de la plataforma. La plataforma se versiona y se gestiona como un producto interno para el que los diferentes equipos de desarrollo son meros clientes. El equipo de desarrollo por su parte, simplemente consume, sin necesidad de preocuparse por lo que se gestiona por debajo o, directamente, sin obligar a reinventar la rueda. El uso de la Plataforma asegura la estandarización, la seguridad, la operación centralizada y, de la misma forma, la observabilidad.
La razón por la que introduzco esta cuña de plataforma como una palanca útil para la adopción de la observabilidad es porque, si se introduce esta última como una capacidad nativa de la plataforma, toda aplicación que nazca en el contexto de esta ya dispondrá de todo lo necesario. La madurez de la plataforma se podrá mapear directamente contra el modelo de madurez elegido y permitirá actuar de manera unificada sin entrar en rediseños o rearquitecturizar las aplicaciones.
Figure out where there’s the most friction in your current development process — whether it is in the deployment pipeline, a Tower of Babel’s worth of different programming languages, or a lack of standardization around observability — and focus your platform team’s efforts there.
Greg Leffler, Director of Developer Evangelism, Splunk
Vivimos en una época de novedades casi continuas, cambios de nomenclaturas, nuevas tecnologías, aproximaciones, arquitecturas e incluso de nuevas oportunidades de negocio. Actualmente, una empresa que no es capaz de abrazar nuevas formas de hacer las cosas es una empresa que tiene un futuro poco prometedor.
La observabilidad plantea, en este caso, dos puntos a considerar a la hora de adoptar nuevas tecnologías:
Por lo tanto, no rechacemos a las nuevas tecnologías una vez tengamos todo nuestro stack montado, sino todo lo contrario. La observabilidad nos permite plantear mejor los cambios tecnológicos, haciendo estimaciones más exactas, aterrizando expectativas y evitando frustraciones.
Antes de cerrar esta serie con mis propias reflexiones, me gustaría ayudaros con un pequeño resumen de todo lo que hemos estado cubriendo hasta ahora. Realmente, con que os quedéis con los puntos que os ofrezco abajo, a mí me basta. Pero quedaría raro que los pusiera al principio, ¿verdad?
Como dije en un principio (o casi en el principio, qué sé yo a estas alturas), este texto está pensado para orientar a todo tipo de perfil. Es posible que el lenguaje o el contenido no sea así, en cuyo caso, me disculpo de antemano. Sin embargo, el ánimo es real y como tal, estoy seguro que sea cual sea tu perfil, querido/a lector/a, hay algo en todo esto que es de utilidad para ti.
No he querido casarme con una implementación tecnológica por muy fan de OpenTelemetry que sea (creo que apenas se ha notado, solo le he dedicado una sección). Esto ha sido con el objetivo de entender que la implementación de la observabilidad tiene más que ver con un esfuerzo de estandarización y definición que con el despliegue de una herramienta concreta o el uso de una librería. Evidentemente, esto se tiene que hacer y no es trivial, pero la implementación se convierte en un infierno mucho mayor si la primera parte no está correctamente cumplimentada.
El modelo de madurez nos ayuda a planificar los pasos siguientes, esos en los que muchas veces no sabemos muy bien por dónde tirar. Existen multitud de frentes y, evidentemente, implementarlos todos no es realista, pero debemos hacer un esfuerzo en tener claros qué subconjunto de técnicas, automatismos y visualizaciones queremos utilizar. Al final, somos como deportistas de élite: sin un trabajo de visualización, probablemente nos la peguemos cuando llegue el momento de la verdad.
Por último, quisiera despedirme de ti con varias reflexiones.
Antes he comentado que muchos proyectos de observabilidad nacen de la necesidad de conseguir información más contextualizada que incluso nos permita tomar decisiones a nivel de procesos de negocio. Sin embargo, también es un producto lógico de una tendencia evidente. Hace unos años, el boom del Cloud hizo que muchas empresas apostaran por una estrategia de pago por uso y se subieron a un carro con un altísimo ritmo de innovación. Esto obligó a las empresas a requerir servicios de gente especializada en estos entornos (que no eran tantos) y se suscribieron servicios de operación y mantenimiento externalizados.
Con el paso del tiempo, las compañías han alcanzado un estado donde ya se ha creado conocimiento interno suficiente como para asumir esas funciones, e incluso muchas de ellas han decidido girar el timón y volver al on-premise o tomar iniciativas de plataforma como una forma de unificar la gestión incluso en entornos híbridos. La necesidad de la gestión interna (ya sea en cloud, on-premise, híbrida, con plataforma o sin ella) ha derivado en una reflexión profunda: los sistemas son ahora mucho más complejos, pero nuestra monitorización no lo es. Si metemos en la coctelera el aumento del uso de servicios SaaS y PaaS con modelos de facturación “creativos”, tenemos un descontrol considerable que deriva en un inevitable caos, frustración e impacto económico.
Por ello, considero que la clave de una correcta adopción radica en el cambio de mentalidad. De nada sirve hacer un inventario de 10.000 métricas de 50 componentes distintos. No nos sirve instalar a mano un agente en cada máquina que instalemos y dar el día por terminado. Tampoco nos sirve depender de que el operador lleve lo suficiente en la empresa como para saber que el servicio A tiene una condición de carrera que afecta al servicio C en el 20% de los casos. Sencillamente, no es práctico ni escalable.
Por desgracia, la observabilidad es, al final, una necesidad evidente que nunca ha tenido la importancia que debería en los proyectos. Pensemos por tanto en la observabilidad como algo necesario para todos los miembros de una compañía, independientemente de su título. Todos se ven beneficiados y a todos nos interesa empujar su correcta implementación, cada uno desde un lado distinto de la mesa, pero todos sentados en la misma.
Esto es especialmente relevante cuando pensamos en el lado humano de cualquier empresa, donde existen personas con diferentes filosofías, formas de trabajar y apertura al cambio. Incidir en que la observabilidad no es únicamente un campo exclusivo de los equipos de operación, sino una forma de controlar, evaluar y mejorar a todos los niveles. La información es poder, y si ponemos esa información al servicio de las personas, es éxito asegurado.
Por lo que ahora te toca a ti, desde tu lado de la mesa, aplicar todo lo que hemos comentado en esta serie. Como se suele decir: zapatero, a tus zapatos.
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.