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)
- Instalación Golang
- Instalación Beego y Bee
- Instalación Postgres
- Instalación pgAdmin3
- Instalación pgModeler
- Instalación Oh My ZSH
- Nombres para Repositorios
- Lineamiento y Metodología para Branches
- Contenido README
- Limpieza de Branches
- Etiquetas en comentarios de Commits
- .gitignore
La arquitectura definida para los sistemas en desarrollo en la OAS es módelo por microservicios.
- Lineamientos Modelos de datos relacionales
- Lineamientos Mongo
- Guía de comentariado
- SQL vs NOSQL - Diferencias y principales características
- Grabación capacitación SQL vs NOSQL
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:
- Generar API Beego
- Refactorizar API Beego (Contol de Errores)
- Versionar BD en API Beego (Beego Migrations)
- Variables de Entorno en API Beego (Beego Migrations)
- (health check) validación de estado en APIs
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:
- Generar Logs en API Beego
- Migrar Modelo de API a bd Nuevas
- Refactorizar APIs MID y CRUD (Monitoreo de APIs con AWS X-Ray)
- Generar API NestJS
- Variables de Entorno API NestJS
- Refactorización del proyecto para manejar controlador, modelos y servicios
- Manejo de error, filtros (query), logger, healtcheck
- Generación de swagger y detalle de .drone para despliegue
- Generar API Flask
- Prerrequisitos
- Refactorizacion modelo y confirguracion de archivos
- Esctructura del API Flask
- Variables de Entorno API Flask
- Prerrequisitos
- Creación API usando SAM
- Ejecución en local
- Cambios en el codigo
- Construcción de la aplicación
- Despliegue de la aplicación
- Configuración en AWS
- 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 de carga (:heavy_check_mark:)
- Pruebas de estrés (:heavy_check_mark:)
- Pruebas de volumen
- Pruebas de configuración (:heavy_check_mark:)
- Pruebas de seguridad (:heavy_check_mark:)
- Evaluacion de vulnerabilidades (:heavy_check_mark:)
- Análisis de codigo estático (:heavy_check_mark:)
- Implementar evaluaciones periódicas (:heavy_check_mark:)
- Pentesting (:heavy_check_mark:)
- Fases de un Pentesting (:heavy_check_mark:)
- Por qué Realizar Pentesting (:heavy_check_mark:)