Sistema de Inventario Agranelos - Resumen Ejecutivo

Visión General del Proyecto

El Sistema de Inventario Agranelos es una solución cloud-native moderna que implementa una arquitectura serverless orientada a eventos para la gestión integral de inventarios de productos y bodegas.


✨ Características Implementadas

1. Operaciones CRUD Completas

Productos:

Bodegas:

2. APIs Duales

REST API:

GraphQL API:

3. Arquitectura Orientada a Eventos (Azure Event Grid)

Publicación de Eventos: Cada operación CRUD publica automáticamente un evento:

Consumo de Eventos: 6 Event Handlers implementados que reaccionan a eventos:

Casos de Uso de Eventos:

4. Base de Datos PostgreSQL

Esquema Normalizado:

PRODUCTO (ID, Nombre, Descripcion, Precio, CantidadEnStock, FechaCreacion, FechaActualizacion)
BODEGA (ID, Nombre, Ubicacion, Capacidad, FechaCreacion, FechaActualizacion)
INVENTARIO (ID, IDProducto, IDBodega, Cantidad, FechaActualizacion)
MOVIMIENTO (ID, IDProducto, IDBodega, Tipo, Cantidad, Fecha, Comentario, UsuarioResponsable)

Connection Pooling:


Despliegue en Azure Cloud

Componentes Desplegados

Componente Servicio Azure Propósito
Function App Azure Functions Funciones serverless (CRUD + Event Handlers)
Event Grid Event Grid Topic Manejo de eventos asíncronos
Storage Storage Account Almacenamiento para Function App
Monitoring Application Insights Observabilidad y telemetría
Database PostgreSQL (AWS EC2) Base de datos relacional

Opciones de Despliegue

1. Despliegue Automático con Script

./scripts/deploy-azure.sh

2. Despliegue con ARM Template (IaC)

az deployment group create \
  --resource-group agranelos-inventario-rg \
  --template-file azure-deploy.json \
  --parameters azure-deploy.parameters.json

3. CI/CD con GitHub Actions

# .github/workflows/deploy-azure.yml
on: push
  branches: [main]

Arquitectura Técnica

Stack Tecnológico

Capa Tecnología Versión
Runtime Java 11
Framework Azure Functions 4.x
Build Tool Maven 3.6+
Database PostgreSQL 13+
Event Bus Azure Event Grid Latest
Monitoring Application Insights Latest
Connection Pool HikariCP 5.0.1
JSON Jackson 2.15.2
GraphQL GraphQL Java 20.2

Patrones de Diseño Implementados

  1. Serverless Architecture: Azure Functions con escalado automático
  2. Event-Driven Architecture: Comunicación asíncrona vía Event Grid
  3. Repository Pattern: Separación de lógica de acceso a datos
  4. Connection Pooling: Gestión eficiente de conexiones de BD
  5. Dependency Injection: Azure Functions DI container
  6. API Gateway Pattern: Punto único de entrada para APIs

Principios de Diseño


Integración de Componentes

Flujo de Datos Completo

┌─────────────┐
│   Cliente   │
└──────┬──────┘
       │ 1. HTTP Request
       ▼
┌─────────────────┐
│ Azure Function  │◄───────┐
│   (REST/GQL)    │        │
└──────┬──────────┘        │
       │ 2. Database Op    │ 6. Response
       ▼                   │
┌─────────────────┐        │
│   PostgreSQL    │        │
└──────┬──────────┘        │
       │ 3. Result         │
       ▼                   │
┌─────────────────┐        │
│  Event Grid     │        │
│  (Publish)      │        │
└──────┬──────────┘        │
       │ 4. Distribute     │
       ▼                   │
┌─────────────────┐        │
│ Event Handler   │        │
│   Function      │────────┘
└─────────────────┘
  5. Process Event

Dependencias del Sistema

graph LR
    A[Function CRUD] --> B[DatabaseManager]
    A --> C[EventGridPublisher]
    A --> D[ObjectMapper]
    
    B --> E[HikariCP]
    B --> F[PostgreSQL JDBC]
    
    C --> G[Azure Event Grid SDK]
    
    H[Event Handler] --> I[EventGridConsumer]
    I --> D
    
    J[GraphQL Function] --> K[GraphQLSchemaBuilder]
    K --> L[GraphQL Java]
    K --> B

📖 Documentación

Documentos Creados

Documento Ubicación Contenido
README.md / Visión general y guía rápida
ARQUITECTURA.md /docs/ Arquitectura detallada del sistema
DEPLOY.md /docs/ Guía completa de despliegue
quick-reference.md /docs/ Referencia rápida de APIs
Postman Collection /postman/ Colección de pruebas de API

Diagramas

  1. Diagrama de Arquitectura General: Todos los componentes del sistema
  2. Diagrama de Flujo de Eventos: Publicación y consumo de eventos
  3. Diagrama de Secuencia: Interacciones entre componentes
  4. Diagrama de Base de Datos: Esquema relacional completo

Seguridad Implementada

Medidas de Seguridad

Mejores Prácticas


Observabilidad y Monitoreo

Application Insights Integrado

Métricas Recolectadas:

Logs Centralizados:

Alertas Configurables:


Casos de Uso Implementados

1. Gestión de Productos

2. Gestión de Bodegas

3. Consultas Flexibles (GraphQL)

4. Procesamiento de Eventos


💰 Costos y Escalabilidad

Modelo de Costos (Azure Consumption Plan)

Recurso Modelo de Pricing Costo Estimado/Mes
Azure Functions Pay-per-execution $5 - $20
Event Grid Pay-per-event $0.60/millón eventos
Storage Account Pay-per-use $1 - $5
Application Insights Pay-per-GB $2.30/GB
Total   $10 - $50

Escalabilidad

Automática:

Sin límites de crecimiento:


Estado del Proyecto

Componentes Completados

Componente Estado Descripción
CRUD Productos 100% Todas las operaciones implementadas
CRUD Bodegas 100% Todas las operaciones implementadas
REST API 100% Endpoints funcionales y documentados
GraphQL API 100% Queries y mutations implementadas
Event Grid Integration 100% Publicación y consumo de eventos
Event Handlers 100% 6 handlers implementados
Base de Datos 100% Esquema creado y poblado
Despliegue Azure 100% Scripts y ARM templates listos
Documentación 100% Completa y detallada
CI/CD 100% GitHub Actions configurado

Testing


🎓 Lecciones Aprendidas

Tecnologías Clave Dominadas

  1. Azure Functions: Desarrollo serverless en Java
  2. Azure Event Grid: Arquitectura event-driven
  3. GraphQL: APIs modernas y flexibles
  4. PostgreSQL: Bases de datos relacionales
  5. Maven: Build y deployment automation
  6. ARM Templates: Infrastructure as Code

Mejores Prácticas Aplicadas


Próximos Pasos (Roadmap)

Fase 2 - Mejoras Potenciales

  1. Autenticación y Autorización
    • Integración con Azure AD
    • JWT tokens
    • Role-based access control (RBAC)
  2. Caché
    • Azure Redis Cache
    • Reducir carga en BD
    • Mejorar tiempos de respuesta
  3. API Management
    • Azure APIM para gestión avanzada
    • Rate limiting
    • API versioning
  4. Reportes y Analytics
    • Dashboard en tiempo real
    • Power BI integration
    • Análisis de tendencias
  5. Mobile Backend
    • Push notifications
    • Offline sync
    • Mobile-specific endpoints

📞 Contacto y Soporte

Repositorio: github.com/DiegoBarrosA/agranelos-functions-crud

Documentación: Disponible en /docs

Issues: Usar GitHub Issues para reportar problemas


Conclusión

El Sistema de Inventario Agranelos es una solución completa, moderna y lista para producción que demuestra:

Excelencia Técnica: Uso de tecnologías cloud modernas
Arquitectura Sólida: Event-driven y serverless
Escalabilidad: Preparado para crecer según demanda
Calidad: Código limpio, documentado y testeado
Cloud-Native: Diseñado para Azure desde el inicio

El sistema está completamente funcional y listo para ser desplegado en producción en Azure Cloud.


Proyecto Completado con Éxito