Este repositorio es un conglomerado de buenas prácticas, lineamientos, configuraciones a realizar en el entorno de desarrollo de las nuevas tecnologías de la Oficina Asesora de Tecnologías e Información (OATI)
En PC Local :computer:
- Instalación Golang
- Instalación Beego y Bee
- Instalación Postgres
- Instalación pgAdmin3
- Instalación pgModeler
- Instalación Oh My ZSH
En Ambiente Dockerizado :whale:
La arquitectura definida para los sistemas en desarrollo en la OAS es módelo por microservicios.
Generación API CRUD
Los API CRUDs son servicios RESTful desarrollados en Go utilizando el framework API Beego. Están diseñados para realizar operaciones CRUD (Crear
, Leer
, Actualizar
, Eliminar
) en la base de datos y proporcionar una interfaz de acceso a datos para los microservicios (API MIDs). El criterio para dividir el proyecto en CRUDs es el siguiente:
Entidades de Dominio: Cada CRUD se encarga de la gestión de una o varias entidades de dominio específicas. Por ejemplo, usuarios, asignaturas, proyectos, etc.
Operaciones CRUD: Los CRUDs proporcionan endpoints RESTful para realizar operaciones CRUD en las entidades de dominio correspondientes. Es importante recordar que por temas de auditoria y trazalabilidad la operación DELETE, no se realiza como tal, en lugar de esto se debe realizar un borrado lógico, inactivando el registro correspondiente.
Interacción con Microservicios: Los CRUDs son consumidos por los microservicios (micro_mids) para acceder y manipular datos de manera eficiente, para permitir la generación de funcionalidades complejas y encapsular procesos de acuerdo con las necesidades de negocio.
A continuación se detalla a nivel técnico el estandar definido para este tipo de APIs:
Generación API MID
Los microservicios (micro_mids) son componentes desarrollados en Go y están diseñados para manejar lógica de negocio específica y orquestar interacciones con los CRUDs correspondientes. El criterio para dividir el proyecto en microservicios se basa en:
Dominio de Negocio: Cada microservicio se centra en un área específica del dominio de negocio. Por ejemplo, gestión de periodos, registro de notas, etc.
Acoplamiento Bajo: Se busca minimizar la dependencia entre microservicios para promover la escalabilidad y la independencia del ciclo de vida.
Funcionalidad Coherente: Los microservicios se definen en función de la funcionalidad coherente que ofrecen y los recursos que consumen.
Interacción con CRUDs: Los micro_mids interactúan con los CRUDs correspondientes para acceder y manipular datos de manera eficiente.
A nivel técnico podemos ver al forma esperada de realizar su implementación:
Generación Reglas de Negocio (RULE)
- [Generar Reglas de Negocio-(Falta)]()
Configuraciones Adicionales y Utilidades
- Generar Logs en API Beego
- Migrar Modelo de API a bd Nuevas
- Refactorizar APIs MID y CRUD (Monitoreo de APIs con AWS X-Ray)
Plantillas para la creación de APIS GO
Pruebas Unitarias API CRUD
Pruebas Unitarias API MID
Generación API
Pruebas Funcionales
- Pruebas unitarias (:heavy_check_mark:)
- Pruebas de humo (:heavy_check_mark:)
- Pruebas de componentes
- Pruebas de integración
- Pruebas de regresión
- Pruebas de cordura
- Pruebas de aceptación (:heavy_check_mark:)
Pruebas No Funcionales
Evaluacion de vulnerabilidades
- Evaluacion de vulnerabilidades (:heavy_check_mark:)
- Análisis de codigo estático (:heavy_check_mark:)
- Implementar evaluaciones periódicas (:heavy_check_mark:)
Pentesting (Penetration Testing)
Proceso