udistrital / autenticacion_mid

0 stars 0 forks source link

Diseño e investigación de Módulo de monitoreo y conexiones entre APIs. #63

Closed a52290451 closed 1 year ago

a52290451 commented 1 year ago

Se requiere diseñar la arquitectura necesaria para el módulo de monitoreo y conexiones entre APIs, de acuerdo a las siguientes especificaciones:

  1. El modulo debe mostrar en tiempo real el estado en que se encuentran todas las APIs de la OAS desplegadas en producción.
  2. Se requiere visualizar gráficamente las conexiones que existen entre APIs.

Adicionalmente, se requiere realizar la investigación de posibles componentes externos que contengan las funcionalidades mencionadas y que puedan ser incluidos como parte de la arquitectura diseñada.

Especificaciones técnicas

Sub Tareas

Criterios de aceptación

Requerimientos

Dependencias

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

a52290451 commented 1 year ago

Arquitectura Monitoreo de APIs drawio (3)

a52290451 commented 1 year ago

Propuestas para componentes externos

AWS X-Ray: AWS X-Ray es un servicio de monitorización y depuración de aplicaciones en la nube de AWS. Proporciona información detallada sobre las llamadas entre los microservicios y te permite visualizar gráficamente las conexiones y el estado de tus APIs.

image

Grafana: Grafana es una plataforma de observabilidad y visualización que puede integrarse con diferentes fuentes de datos, como AWS CloudWatch o Prometheus. Puedes crear paneles personalizados para visualizar el estado de tus microservicios y sus conexiones.

image

NetCrunch Network Monitor: NetCrunch es una herramienta de monitorización de redes que también puede ser utilizada para supervisar el estado de tus APIs. Proporciona una visualización de red completa que muestra las conexiones entre tus servicios y te alerta en caso de fallos.

image

a52290451 commented 1 year ago

Propuestas para componentes externo

  1. Función de monitoreo de Postman: Los monitores Postman se utilizan para garantizar que el rendimiento y la respuesta obtenida de una API se mantengan correctamente. Permiten conocer el estado de las APIs y servicios, realizando consultas cada cierto periodo de tiempo. Los monitores se programan en un intervalo regular de minutos, horas o semanas para todo el día. No posee funcionalidad para ver mapa de conexiones entre APIs, sin embargo, los logs que genera pueden ser utilizados como complemento de otra herramienta.

image

  1. Kong: es una plataforma de gestión de APIs de código abierto y altamente flexible. Proporciona capacidades completas de monitoreo de APIs y análisis de rendimiento, así como opciones de visualización para comprender mejor las conexiones entre tus APIs. (Es una herramienta de pago)

image

a52290451 commented 1 year ago

De cuerdo a un análisis riguroso de las diferentes herramientas, dejando de lado a AWS X-Ray, la mejor herramienta de monitoreo de APIs es GRAFANA.

  1. Es de código abierto, por lo que tiene una versión descargable que se puede ejecutar en local.
  2. Puede ser alimentada con gran variedad de fuentes de datos incluido PostgreSQL.
  3. Cuenta con gran cantidad de plugins para diferentes funcionalidades de monitoreo, incluido la creación de un mapa de conexiones entre APIs.
  4. Presenta un dashboard que puede ser completamente personalizado, dependiendo de las funciones de monitoreo que se requieran.
  5. Permite la opción de generar código para incrustar el tablero de monitoreo en una página WEB.

De esta forma, se propone utilizar GRAFANA como herramienta de monitoreo de APIs. Su configuración debe realizarse en un servidor activo 24/7 para tener un monitoreo constante de las APIs. Para acceder a las funcionalidades de monitoreo desde cualquier PC, se requiere que la configuración del dashboard sea incrustada en una Página Web o que quede disponible en una dirección local a través de una red privada (VPN).

a52290451 commented 1 year ago

La arquitectura propuesta del módulo, adaptando la herramienta GRAFNA es:

Diagrama sin título drawio (2)

a52290451 commented 1 year ago

Investigación - Módulo de monitoreo y conexiones entre APIs con GRAFANA.docx

a52290451 commented 1 year ago

Arquitectura Modulo Monitoreo drawio

a52290451 commented 1 year ago

Explorando un poco mas a fondo las diferentes alternativas, se concluye que la mejor opción es utilizar el servicio AWS X-Ray que permite rastrear, a través de API REST, el flujo de conexiones y estado de cada API implementada en GO. Para esto se requiere incluir el SDK del servicio en el código fuente de cada API.

De esta forma, indicando cuales son los trazos y segmentos que se quieren monitorear en cada API, es posible observar su estado en tiempo real, la latencia y respuesta obtenida de cada servicio expuesto por API.

La opción GRAFANA se descarta ya que la única forma de utilizarla el complemento de mapa de conexiones es consumiendo X-RAY de AWS, lo cual significa un reproceso de datos innecesario.

a52290451 commented 1 year ago

Costos AWS X-Ray:

De acuerdo con la tabla de costos del servicio presentada en:

https://aws.amazon.com/es/xray/pricing/

Se calcula que, si en promedio se realizan 60 solicitudes por hora para cada API, teniendo en cuenta APIs en ambiente de prueba y producción, y que hay APIs con menor y mayor cantidad de solicitudes, y hay 237 grupos de registros de APIs en AWS, se presenta el siguiente costo:

Rastreos registrados al mes = 60 solicitudes por hora × 237 APIs × 24 horas × 31 días × 10% = 1'057'968 rastreos Rastreos facturables registrados al mes = 1'057'968 rastreos – 100'000 rastreos en la capa gratuita = 957'968 rastreos Cargos mensuales por rastreos registrados = 957'968 rastreos × 0,000005 USD = 4,78984 USD/mes