Cómo monitorizar los servicios de tu portafolio

En una ocasión hubo un momento en que un par de proyectos que había realizado dejaron de funcionar por diversas razones así que me di la tarea de buscar una herramienta que me ayudará a monitorear esos servicios. Encontré un par de alternativas como CheckMK o Prometheus que si bien cumplían mis necesidades con creces sentí que ambas soluciones eran algo excesivo para la simpleza de lo que buscaba. Lo que quería era una interfaz que me mostrara las aplicaciones que tenía y si estaban funcionando o no. Era una idea simple que tomó varias aristas interesantes.

Primero había pensado en un micro servicio que, con cada petición consultará cada aplicación y retorne un arreglo de objetos que tuviesen la información necesaria pero, ese proceso tenía un problema, si cien personas entraban a la aplicación al mismo tiempo Se iba a hacer a cada aplicación cien peticiones distintas, eso se traduce a recursos y los recursos cuestan, entonces, pensé que esa tarea debería ser cada cierto tiempo y tener un histórico en una base de datos, donde tendría disponible la información que necesaria.

Con esta solución encontré el qué hacer pero el cómo también me puso a pensar un poco pues por un lado se tenían que hacer las peticiones a cada aplicación con cierta periodicidad y por otro un endpoint que debía consultar la base de datos con cada petición. Hasta este punto había tomado dos decisiones, en primer lugar que todos estos procesos iban a estar integrados dado a que si no fuese así sería más tedioso el mantenimiento del código y en segundo lugar, que debería minimizar el uso de recursos hasta donde me fuese posible y con una lectura a la base de datos por cada petición no se estaba logrando eso.

Con las ideas más claras, la etapa del proceso de carga y distribución de datos quedó de la siguiente manera; con la librería de python APScheduler cree dos procesos en segundo plano que se inicializan haciendo uso del ciclo de vida de FastAPI donde el primero se encarga de hacer las peticiones a cada aplicación Y almacenarlos en la DB y el segundo se encarga de periódicamente traer la información más reciente disponible y almacenarla en un JSON por ultimo, un endpoint que con cada petición consulta el JSON Creado en el paso anterior. De esta forma tenemos un agente que puede monitorizar con periodicidad y distribuir información a demanda.

Para la parte visual estaba pensando si hacer uso de frameworks que familiares para mi como Angular y Astro o, incursionar por nuevos frameworks como React o Next.js pero despues me parecio hizo más interesante el hacerlo con FastAPI haciendo uso de HTML, Tailwind CSS (que al final no salió tan bien), Javascript y Chat GPT. Si bien con esta decisión la aplicación se volvería monolítica la simpleza de la misma hacía que esto no fuese un problema.

El resultado de este ejercicio fue la herramienta de monitoring, herramienta que permite de forma visual y cómoda estar al tanto de cada proyecto que realice con el fin de garantizar una disponibilidad constante de los servicios.

© Copyright 2023 by Ecadem.

Built with ♥ by Eduardo V. Parga