OrderFlow Cloud es una plataforma de microservicios desarrollada siguiendo principios de arquitectura moderna para aplicaciones Backend.
El proyecto demuestra cómo múltiples servicios pueden comunicarse de forma asíncrona mediante Apache Kafka, coordinar procesos de negocio utilizando el Patrón Saga, ejecutarse en Docker y desplegarse sobre un clúster de Kubernetes.
El objetivo del proyecto es simular una arquitectura empresarial similar a las utilizadas en sectores como banca, retail, logística y comercio electrónico.
Cliente
│
▼
API Gateway
(Spring Cloud MVC)
│
REST HTTP
▼
Order Service
│
Publica Evento Kafka
▼
Topic: orders.created
│
▼
Inventory Service
│
Publica inventory.reserved
▼
Payment Service
│
Publica payment.completed
▼
Order Service
│
Actualiza Estado Final
| Microservicio | Tecnología | Responsabilidad |
|---|---|---|
| API Gateway | Spring Cloud Gateway MVC | Punto de entrada de la aplicación |
| Order Service | Spring Boot | Creación de órdenes y orquestación de la Saga |
| Inventory Service | Spring Boot | Reserva de inventario |
| Payment Service | Quarkus | Procesamiento de pagos |
| PostgreSQL | PostgreSQL | Persistencia |
| Kafka | Apache Kafka | Comunicación asíncrona |
- Java 17
- Spring Boot 4
- Spring Cloud Gateway MVC
- Quarkus
- Spring Data JPA
- Hibernate
- Maven
- Apache Kafka
- Kafka Topics
- Consumer Groups
- Serialización JSON
- Arquitectura Event-Driven
- PostgreSQL
- Docker
- Docker Compose
- Kubernetes
- Kind
- Spring Boot Actuator
- Micrometer
- Correlation ID
- GitHub Actions
El flujo de negocio implementa el patrón Saga Orchestration.
Crear Orden
↓
orders.created
↓
Reservar Inventario
↓
inventory.reserved
↓
Procesar Pago
↓
payment.completed
↓
Actualizar Estado de la Orden
Estado final:
PAYMENT_COMPLETED
| Topic | Producer | Consumer |
|---|---|---|
| orders.created | Order Service | Inventory Service |
| inventory.reserved | Inventory Service | Payment Service |
| payment.completed | Payment Service | Order Service |
El proyecto implementa propagación del Correlation ID para facilitar el seguimiento de una misma petición entre todos los microservicios.
Cliente
↓
API Gateway
↓
Order Service
↓
Kafka
↓
Inventory Service
↓
Kafka
↓
Payment Service
↓
Kafka
↓
Order Service
Esto permite rastrear una operación completa utilizando el mismo identificador.
Cada microservicio se ejecuta de forma independiente utilizando Docker.
Implementado:
- Dockerfiles individuales
- Docker Compose
- Redes Docker
- Persistencia PostgreSQL
- Kafka
- Kafka UI
El proyecto fue desplegado completamente sobre un clúster Kubernetes utilizando Kind.
Recursos implementados:
- Namespace
- Deployments
- Services
- ConfigMaps
- Secrets
- Rolling Updates
Se validó correctamente:
- Comunicación entre Pods
- Descubrimiento de servicios
- Comunicación con Kafka
- Persistencia PostgreSQL
- Despliegue de los cuatro microservicios
- Ejecución completa de la Saga
- Actualización automática del estado de las órdenes
Actualmente implementado
- Spring Boot Actuator
- Micrometer
- Health Checks
- Endpoints de métricas
- Correlation ID
- Prometheus
- Grafana
- Dashboards
Próximamente
- Métricas distribuidas
- Alertas
- Monitoreo de Kafka
Actualmente implementado
- GitHub Actions
- Build automático
- Ejecución de pruebas
- Construcción de imágenes Docker
Próximamente
- Azure Container Registry (ACR)
- Azure Kubernetes Service (AKS)
- Pipeline de despliegue automático
- Rolling Updates
orderflow-cloud/
├── api-gateway/
├── order-service/
├── inventory-service/
├── payment-service/
├── docker/
├── kubernetes/
└── .github/
└── workflows/
✔ Arquitectura de Microservicios
✔ API Gateway
✔ Spring Cloud Gateway MVC
✔ Apache Kafka
✔ Comunicación basada en eventos
✔ Patrón Saga
✔ Docker
✔ Kubernetes (Kind)
✔ PostgreSQL
✔ Spring Boot 4
✔ Quarkus
✔ GitHub Actions
✔ Correlation ID distribuido
✔ Micrometer
✔ Spring Boot Actuator
✔ Comunicación HTTP + Eventos Kafka
- Azure Container Registry (ACR)
- Azure Kubernetes Service (AKS)
- Helm Charts
- Ingress Controller
- Azure API Management
- Prometheus
- Grafana
- OpenTelemetry
- Jaeger
- Zipkin
- Resilience4J
- KEDA
- Horizontal Pod Autoscaler (HPA)
Este proyecto fue desarrollado con el objetivo de demostrar conocimientos en:
- Arquitectura de Microservicios
- Desarrollo Backend Empresarial
- Arquitectura Event-Driven
- Apache Kafka
- Spring Boot
- Quarkus
- Docker
- Kubernetes
- Comunicación Asíncrona
- Patrones de Diseño
- Observabilidad
- Integración Continua
- Cloud Native
Alex Choque
Backend Java Developer
Especializado en:
- Java
- Spring Boot
- Apache Kafka
- PostgreSQL
- Docker
- Kubernetes
- Arquitectura de Microservicios
- Desarrollo Backend Empresarial
Este proyecto continúa en evolución.
Las siguientes etapas incluirán la migración de la plataforma hacia Microsoft Azure, incorporando:
- Azure Kubernetes Service (AKS)
- Azure Container Registry (ACR)
- Azure API Management
- Helm
- Prometheus
- Grafana
- Observabilidad completa
- CI/CD para despliegues automáticos