Saltar al contenido principal

Lab Avanzado: Microservicios Reactivos con Arka

Desafío Técnico — Tiempo estimado

Tiempo total: 12+ horas (9 módulos). Este lab no es un tutorial guiado punto a punto — es una simulación real de un ecosistema distribuido en producción.

El Problema de Arka

Arka es una distribuidora de accesorios para PC (GPUs, periféricos, hardware) con operaciones en LATAM. Su sistema monolítico actual sufre dos problemas críticos:

Problema Crítico
  1. Sobreventa (Race Condition): El sistema permite vender stock que ya no existe debido a transacciones concurrentes sin coordinación.
  2. Consistencia distribuida: Al migrar a microservicios, una transacción que abarca Órdenes → Inventario → Pagos ya no puede usar @Transactional. ¿Cómo garantizamos consistencia sin una base de datos central?

La solución que implementaremos: Arquitectura dirigida por eventos + Patrón SAGA protegida por Circuit Breakers y gestionada vía IaC.

Arquitectura General

Stack Tecnológico

TecnologíaRol¿Por qué?
Java 17 + Spring WebFluxFramework ReactivoNon-blocking, backpressure, Mono/Flux
R2DBCDriver de BD ReactivoProhibido JPA/Hibernate
PostgreSQL × 3Base de DatosDatabase per Service pattern
Apache Kafka + KafkaUIMessage BrokerSAGA Coreografiada entre servicios
AWS Secrets ManagerSeguridadCredenciales de BD inyectadas en runtime
AWS API GatewayPunto de entradaHTTP_PROXY a ms-orders
AWS CloudFormationIaCAprovisionar todos los recursos de LocalStack
LocalStackSimulación AWSCloud local sin costos
TraefikLoad BalancerBalanceo dinámico y dashboard visual
Resilience4jCircuit BreakerProteger llamadas HTTP a ms-payment
Stack Reactivo Estricto

Este lab usa exclusivamente el Reactive Stack. Está prohibido usar JDBC, JPA o Hibernate. Todo es Mono<T> y Flux<T>.

El Patrón SAGA que Implementaremos

Prerrequisitos

Antes de comenzar, asegúrate de tener instalado:

  java --version        # Java 17+
docker compose version # Docker Compose v2+
python3 --version # Python 3.7+
pip install awscli-local # awslocal CLI
aws --version # AWS CLI v2
  • ☑️ Java 17 o superior
  • ☑️ Docker y Docker Compose v2 (docker compose version)
  • ☑️ Gradle 8+ o usar el wrapper (./gradlew --version)
  • ☑️ awslocal (pip install awscli-local)
  • ☑️ Postman o cURL para pruebas

Módulos del Lab

MóduloTemaDuración
1Setup: Docker Compose Avanzado~1 hora
2Kafka: Prueba de Concepto~1 hora
3IaC: CloudFormation + LocalStack~1 hora
4Seguridad: AWS Secrets Manager~1 hora
5Microservicio Orders — Scaffold, Docker & API Gateway~1 hora
6ms-orders — Implementación Completa~2 horas
7ms-inventory — Reserva de Stock & Compensación~2 horas
8ms-payment — Simulador HTTP~1.5 horas
9Pruebas E2E, Escalado y Demo Final~1 hora

¡Comencemos con el Módulo 1: Setup Docker Compose!