José Díaz
Fundador de JoeDayz y JefToken | Arquitecto Senior
Del diseño conceptual al código: SOLID en la nube, bounded contexts, agregados con Java 21, 12-factor y el patrón transactional outbox.
Cómo pasar del diseño conceptual al código de un sistema de microservicios: límites del dominio, modelo táctico y las reglas para que ese diseño sobreviva en la nube.
"Producto" no es un solo servicio. En el ejemplo se parte en tres contextos:
Catálogo e Inventario se relacionan como customer/supplier. Inventario y Pricing comparten un published language por Kafka.
Un microservicio bien dimensionado es exactamente un bounded context. Dividir mal sale caro.
El agregado de ejemplo es un pedido:
Order. Guarda las invariantes.OrderLine. Tiene identidad local.Money y Sku. Son inmutables. En Java 21 un record ya trae equals y hashCode.Regla de oro: una transacción de base de datos modifica un solo agregado.
public record Sku(String value) {}
public record Money(BigDecimal amount, String currency) {}
El ciclo es build, release y run.
application.yml. Van en variables de entorno.Escribir el pedido en la base y publicar el evento en Kafka por separado es una escritura dual. Si el pedido queda grabado y el evento no sale, el inventario se desincroniza.
La salida es una sola transacción:
Un poller o Debezium (CDC) publica después a Kafka. La garantía es at-least-once, así que los consumidores tienen que ser idempotentes.
Completa el curso y obtén tu certificado
11 actividades restantes