Tu monolito ASP.NET tiene 200K líneas. La directiva es extraer microservicios. ¿Por dónde empiezas y cómo manejas la data consistency?
Contexto
SaaS de HR con módulos: payroll, attendance, hiring, reviews. Todos comparten una DB SQL Server de 500 tablas. El equipo es de 12 developers. No se puede parar el desarrollo.
Respuesta modelo
Estrategia Strangler Fig: 1) Identificar bounded contexts: payroll, hiring, attendance son candidatos naturales por dominio. 2) Empezar por el módulo con MENOS dependencias cruzadas (ej: hiring). 3) Paso 1: separar la lógica en assemblies internos (proyectos .NET) con interfaces claras — sin tocar la DB aún. 4) Paso 2: crear la nueva API del microservicio, duplicar la data con CDC (Change Data Capture) al nuevo DB. 5) Paso 3: migrar el tráfico gradualmente con feature flags. 6) Para consistencia entre servicios: eventual consistency con domain events vía MassTransit/RabbitMQ. 7) Anti-corruption layer en el monolito que traduce entre el API nuevo y el código viejo.
Claves
- Strangler Fig: extraer gradualmente, nunca reescribir.
- CDC para migrar datos sin downtime.
- Eventual consistency con domain events para comunicación inter-servicio.