udistrital / autenticacion_mid

0 stars 0 forks source link

Refinamiento de X-Ray MVP #82

Open milo19980525 opened 8 months ago

milo19980525 commented 8 months ago

Se requiere revisar algunas características finales para completar el MVP de X-Ray.

Especificaciones técnicas

Sub Tareas

Criterios de aceptación

Requerimientos

Dependencias

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

a52290451 commented 8 months ago

Estrategia de instrumentación de APIs CRUD en GO, con el SDK de AWS X-Ray

Inyección de código con Hygen o Script en Python

Ya sea empleando la herramienta Hygen para crea una platilla de automatización de código, o utilizando un script en Python, se deben realizar los siguientes pasos:

  1. En local, ubicarse en la carpeta "/go/src/github.com/udistrital/"
  2. Crear una carpeta con el nombre del API:
mkdir nombre_api
  1. Ubicarse en la carpeta recién creada:
cd nombre_api
  1. Clonar el repositorio en local:
git clone "link de repositorio"
  1. Crear la rama "feature/X-Ray" en local:
git checkout -b feature/X-Ray
  1. Descargar la dependencia de xray con:
go get -u github.com/udistrital/utils_oas
  1. Ingresar al archivo main.go
  2. Buscar las líneas de código "import (" y "beego.Run()".
  3. Posterior a "import (", inyectar la importación del paquete xray:
"github.com/udistrital/utils_oas/xray"
  1. Anterior a "beego.Run()", inyectar el inicializador de xray:
xray.InitXRay()
  1. Ejecutar el comando "go mod init" en linea de comandos para actualizar el archivo "go.mod".
  2. Ejecutar el comando "go mod tidy" en linea de comandos para actualizar las dependencias en el archivo "go.sum".
  3. Incluir todos los cambios realizados en el área de preparación del commit con:
git add .
  1. Crear el commit para subir los cambios:
git commit -m "feat: implementación de xray"
  1. Realizar la subida de los cambios en la rama "feature/X-Ray"
git push origin feature/X-Ray

El resto de los pasos no se pueden automatizar ya que son al interior de cada repositorio.

Nota: esta estrategia, para la instrumentación de APIs CRUD con el SDK de AWS X-Ray para GO, puede realizarse con la automatización de código, ya sea utilizando Hygen o Python. Bastaría con ejecutar la plantilla en Hygen o el Script en Python para lograr el refactor automatico de cada API.

Prerrequisitos

  1. Las APIs a ser instrumentadas deben estar codificadas en GO.
  2. Las APIs deben estar ubicadas en el repositorio principal de la OATI.
  3. Se debe contar con un usuario en GitHub que tenga permisos para realizar cambios en todos los repositorios.
  4. En caso de utilizar Hygen, se debe tener instalado Hygen en local, junto con la plantilla del refactor de código.
  5. En caso de utilizar Python, se debe instalar Python 3.x.x, crear un entorno virtual para el mismo, instalar las dependencias necesarias para ejecutar el script y ubicar el script de refactor en la carpeta "github.com/udistrital/".
a52290451 commented 8 months ago

Estrategia de instrumentación de APIs MID en GO, con el SDK de AWS X-Ray

Para la instrumentación de APIs MID es necesario intervenir dos archivos:

  1. main.go
  2. utilidades.go

La intervención en el archivo "main.go" es mínima, basta con agregar dos líneas de código que representan la importación del paquete "github.com/udistrital/utils_oas/xray" y el inicializador de xray "xray.InitXRay()".

Ahora, para el archivo "utilidades.go" es necesario seguir una estructura predefinida para las peticiones entrantes y salientes que se realicen al interior del API. Actualmente, para las APIs mid no se sigue un estándar en cuanto a la realización de estas peticiones, por lo que no todas las APIs tienen el archivo utilidades.go como método de desacoplamiento, o incluso, aquellas que utilizan este archivo, no siguen un estándar definido para los métodos.

Por lo anterior, se propone la siguiente estrategia.

  1. En el repositorio de utilidades de la OATI "github.com/udistrital/utils_oas" se cuenta con un paquete para GO llamado "request" en el cual se definen una serie de métodos para realizar peticiones hacia otras APIs, utilizando un estándar predefinido. El primer paso es complementar este paquete con los métodos necesarios para todas las APIs Mid e instrumentarlo con el SDK de AWS X-Ray.
  2. Una vez se tenga listo el paquete "request" con todos los métodos necesarios, el siguiente paso es definir un lineamiento para que cada una de las 36 APIs MID existentes se refactoricen y realicen todas sus peticiones internas a través de este nuevo paquete. Esto implica realizar manualmente el ajuste en el código fuente de cada API. De esta forma se desacopla la realización de peticiones de las APIs y se garantiza un seguimiento completo con X-Ray de todas las solicitudes.

Nota: para la implementación de esta estrategia no se utiliza una herramienta de automatización de código ya que en cada API se presenta un caso distinto en cuanto al manejo de las peticiones, por lo que no es posible generar un estándar para aplicar una regla que permita generar código automático.

a52290451 commented 8 months ago

El Manual Técnico para el servicio de monitoreo de AWS X-Ray presenta todos los aspectos técnicos y funcionales de su implementación en las APIs, así como otras características importantes.

milo19980525 commented 8 months ago

@a52290451 no se ha terminado el documento técnico.

a52290451 commented 8 months ago

Se realiza la actualización del documento técnico con la inclusión de las secciones Conclusiones y Recomendaciones.

Queda pendiente agregar mas recomendaciones asociadas al manejo de la consola AWS XRAY.

Nota: las recomendaciones asociadas a la instrumentación de APIs aún no se agregan ya que estas van de la mano con las estrategias he instrucciones de implementación.