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