Autores:
- Juan Diego Higinio Aranzazu – CC 1054862785
- Tomás Restrepo Chica – CC 1055358329
GenoSentinel es una plataforma distribuida construida bajo una arquitectura de microservicios desacoplados, enfocada en la integración de datos genómicos y clínicos para análisis oncológicos. El sistema permite consultar, procesar y exponer información biomédica mediante un API Gateway centralizado, garantizando escalabilidad, modularidad y facilidad de despliegue.
La aplicación está compuesta por 3 microservicios independientes, cada uno con su propia base de datos, siguiendo principios de:
- Domain-Driven Design (DDD)
- Separación de responsabilidades
- Despliegue independiente
- Escalabilidad horizontal
Además, todo el ecosistema está preparado para despliegues modernos en Kubernetes, utilizando Deployments, Services, Ingress, PVCs y Secrets.
La plataforma está compuesta por tres microservicios principales, cada uno implementado en una tecnología diferente, optimizada para su dominio funcional.
+-------------------+
| Client (Postman) |
+-------------------+
|
v
+----------------+
| API Gateway |
| (Spring Boot) |
+----------------+
/ \
v v
+-------------------+ +----------------+
| Genómica Service | | Clínica Service|
| (Django) | | (NestJS) |
+-------------------+ +----------------+
| |
v v
+-------------+ +-------------+
| MySQL DB 1 | | MySQL DB 2 |
+-------------+ +-------------+
+--------------+
| MySQL DB 3 |
+--------------+
Cada microservicio posee su propia base de datos, respetando el patrón de Database-per-Service.
Encargado de la gestión y procesamiento de datos genéticos.
Funciones principales:
- Recepción y almacenamiento de datos genómicos.
- Generación de endpoints REST usando Django REST Framework.
- Documentación generada automáticamente con drf-spectacular (OpenAPI/Swagger).
Tecnologías:
- Django 5.2.8
- Gunicorn
- MySQL
- Python-Decouple
Se encarga del manejo de datos clínicos relevantes para correlacionar información con el servicio genómico.
Funciones principales:
- Exposición de API REST modular.
- Validación de datos clínicos.
- Integración con el Gateway.
Tecnologías:
- NestJS
- Node.js 20
- MySQL
Es el punto central de acceso a la plataforma. Orquesta los microservicios internos.
Funciones principales:
- Enrutamiento centralizado.
- Comunicación entre servicios.
- Gestión de errores.
- Exposición pública mediante NGINX Ingress en Kubernetes.
Tecnologías:
- Spring Boot 3
- Maven
- MySQL
Cada microservicio cuenta con su propio Dockerfile optimizado:
Dockerfilepara Django con Gunicorn.Dockerfilepara NestJS con build multietapa.Dockerfilepara Spring Boot usando Maven + JRE.
Los contenedores están listos para ejecutarse tanto localmente como dentro de Kubernetes.
La plataforma está preparada para despliegue completo en Kubernetes siguiendo la arquitectura B (una base de datos por microservicio).
- 3 Deployments MySQL
- 3 Services
- 3 PVC (almacenamiento persistente)
- 3 Secrets (contraseñas por DB)
- 3 Deployments (Django, Nest, Spring)
- 3 Services (ClusterIP)
- Archivo central con los secretos de cada DB
- Configuración NGINX apuntando al Gateway principal
- Script automático para build, push y despliegue en el cluster
Para levantar el sistema completo:
minikube start --cpus=4 --memory=8192 --driver=docker
minikube addons enable ingressConstrucción de imágenes:
./k8s/deploy.shAcceso vía navegador:
http://genosentinel.local
(Se debe agregar genosentinel.local al archivo /etc/hosts).
Este proyecto es desarrollado como parte de un trabajo académico y no posee licencia restrictiva. Puede ser utilizado como base para estudios, despliegues educativos y proyectos derivados.
A todos los profesores y compañeros que apoyaron este proyecto, especialmente en la comprensión de arquitecturas distribuidas, contenedores y despliegues modernos con Kubernetes.
Para soporte o consultas:
- Juan Diego Higinio Aranzazu – 1054862785
- Tomás Restrepo Chica – 1055358329
Gracias por consultar el repositorio de GenoSentinel.