Blog

Arquitectura Vertical Slice en .NET: ejemplo con microservicios

CleanArchitecture
DDD
EDA
C#
VSA
Backend

Cómo estoy adaptando una plantilla de Vertical Slice Architecture con DDD, eventos y .NET Aspire para un sistema de reservas de hotel en Azure.

Arquitectura Vertical Slice en .NET: ejemplo con microservicios

Estoy modificando una plantilla de Vertical Slice Architecture para que los microservicios sean más fáciles de mantener y de escalar. La idea es montar sobre Azure un sistema de gestión de reservas en el que los servicios se comuniquen de forma asíncrona mediante eventos (Arquitectura Orientada a Eventos).

Esta arquitectura es la base sobre la que voy a construir el resto del sistema, así que quería dejarla bien planteada desde el principio.

Qué he metido en la plantilla

Por ahora he combinado cinco piezas.

1. Domain-Driven Design (DDD)

Reorganicé la aplicación para que los límites de cada dominio queden claros y no haya dependencias innecesarias entre módulos. Con eso el diseño es más fácil de leer y cada módulo se puede tocar sin arrastrar a los demás.

2. Screaming Architecture

La estructura de carpetas y los espacios de nombres ahora reflejan el dominio del negocio, no los detalles técnicos. Lo primero que cuenta el código es de qué va el negocio.

3. .NET Aspire

Uso Aspire para orquestar los servicios. Me simplifica la gestión de dependencias, la configuración y levantar todos los microservicios en local.

4. Arquitectura Orientada a Eventos (EDA)

Los servicios se comunican con eventos. Así quedan desacoplados, escalan mejor y las transacciones distribuidas son más manejables.

5. Migration Service

Añadí un servicio dedicado solo a la evolución del esquema de base de datos, para que las migraciones se apliquen de forma automática y controlada.

Qué he ganado hasta ahora

Los servicios son más modulares y se entiende mejor qué hace cada uno, lo que debería notarse en el mantenimiento a largo plazo. Y gracias a Aspire, integrar y desplegar los servicios cuesta bastante menos, tanto en local como en la nube.

Lo siguiente

Iré contando cómo avanza el sistema y los problemas que me vaya encontrando por el camino. Si tú usas otras estrategias para mantener tus microservicios en orden, me interesa saber cuáles.

El código está en mi repositorio de GitHub: GitHub repository


Comentarios

Aún no hay comentarios. ¡Sé el primero!

Deja un comentario

Tu nombre y tu comentario se publicarán cuando los apruebe. Más información en la política de privacidad.