terminan en código spaghetti. Los sistemas monolíticos son muy difíciles de testear, que tiene mucho acoplamiento. Que el código de estos sistemas no escala. La arquitectura monolítica es para aplicaciones pequeñas.
una técnica de diseño de software. Hace hincapié en separar la funcionalidad de un programa en módulos independientes e intercambiables. Cada módulo contiene todo lo necesario para ejecutar un solo aspecto de la funcionalidad deseada. Los módulos deben tener una interfaz definida.
D o m i n i o • Base de datos • Servicios externos • Logs Monolito Modular Presentación Módulos Infraestructura • Comunicación Módulos Presentación Aplicación Infraestructura D o m i n i o • Base de datos • Servicios externos
forma desacoplada un módulo pide/envía datos a otro módulo Se espera una respuesta Asincrónica A partir de un Event Bus Un módulo publica un evento y los módulos suscriptos lo reciben. Más desacoplado El módulo emisor no espera respuesta
si la gente no puede construir monolitos correctamente, los microservicios no ayudarán.” 4 Marzo 2015 https://twitter.com/simonbrown/status/573072777147777024
La aplicación crece y se comienza a ver las malas practicas Se estima seguir desarrollando muchas funcionalidades nuevas Se desea poder mantener la aplicación a futuro con bajo costo Se aspira en un futuro migrar a microservicios
disposición a quien conozca del dominio Realizar la mayor cantidad de pruebas unitarias posibles Realizar BackUp de la aplicación y de la base de datos
de dominio de la aplicación monolítica Defina contextos delimitados para los modelos. (Futuros módulos) Reconocer todas las funcionalidades que expone el monolito Identificar a que módulo pertenece cada funcionalidad
(Adaptador) NO crear nuevas funcionalidades en el código legacy Crear los módulos de los dominios más sencillos al mayor acoplado. Comunicar código legacy con los nuevos módulos a través del mediador Presentación Aplicac. / Módulos Infraestructura D o m i n i o • Base de datos • Servicios externos • Logs • Comunicación de Módulos
las tablas de los nuevos módulos en nuevos esquemas, sin eliminar las viejas Mantener la integridad de los datos Utilizar herramientas ETL (Extract - Transform - Load) para realizar la migración Tener cuidado: No pisar los nuevos datos con los viejos
idea básica es que apliques el pensamiento de diseño de microservicios a un monolito […]” 12 Febrero 2018 https://twitter.com/simonbrown/status/962945350737825793
explícito para un sistema Monolito diseñado de forma modular. Se pueden desarrollar medianas y grandes aplicaciones empresariales. Con la modularidad tu código es escalable, desacoplado, testeable y mantenible. El monolito modular es el monolito perfecto.
https://docs.microsoft.com/es- es/azure/architecture/microservices/migrate-monolith Migración de datos: definición, desafíos y mejores prácticas para afrontarla (powerdata.es)