Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Conociendo los Monolitos Modulares - CATEC 2021...

Conociendo los Monolitos Modulares - CATEC 2021 - 1

Lautaro Carro

May 16, 2021
Tweet

More Decks by Lautaro Carro

Other Decks in Technology

Transcript

  1. Dichos, frases, rumores de pasillo  Los sistemas monolíticos siempre

    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.
  2. ¿Qué es un Monolito?  La arquitectura monolítica describe edificios

    tallados, fundidos o excavados a partir de una sola pieza de material, históricamente de roca.
  3. ¿Qué es la programación modular?  La programación modular es

    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.
  4. Monolito Modular  Un Monolito Modular es una aplicación ejecutable

    cuyas funcionalidades están divididas verticalmente por módulos, donde cada modulo representa un dominio de negocio.
  5. Definición de las capas horizontales Monolito Ordinario Presentación Aplicación Infraestructura

    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
  6. Separación Módulos Verticales Capas Horizontales Internas ORM Patrones de Diseño

    Practicas de Equipo Servicios Externos Pruebas Unitarias
  7. Comunicación entre Módulos Sincrónica  Con un Mediador  De

    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
  8. Base de datos Productos Usuarios ID Monto UsuarioId 1 150.55

    12 2 60 24 Ventas ID VentaId ProductoId 1 1 4 2 1 7 3 2 2 VentaProductos ID Nombre Precio 2 Producto2 60 4 Producto4 70 7 Prodcuto7 80.55 Productos FK ID Nombre Activo 12 Usuario12 true 24 Usuario24 true Usuarios
  9. Escalabilidad  Tu código escala  Tus datos escalan 

    Tu equipo escala  Desventaja del monolito: hay que escalar toda la aplicación.  Convertir un módulo en un nuevo servicio
  10. Recursos por tecnología https://github.co m/Mararok/Symfo nyModularMonolit h https://github.co m/zawiszaty/empl oyee_managmen

    t https://github.co m/gustialfian/nod ejs-modular- monolith https://github.co m/mgce/modular -monolith-nodejs https://github.co m/kgrzybek/mod ular-monolith- with-ddd https://github.co m/latinonetonline /LatinoNetOnline. Backend https://github.co m/arawn/building -modular- monoliths-using- spring https://github.co m/sethkraut/code mash2020- modular-monolith https://github.co m/pgorecki/djan go_modular_mon olith
  11. Un poco de Simón Brown  “Seguiré diciendo esto ...

    si la gente no puede construir monolitos correctamente, los microservicios no ayudarán.” 4 Marzo 2015 https://twitter.com/simonbrown/status/573072777147777024
  12. De Monolito Ordinario a Modular ¿Cuándo migrar a Monolito Modular?

     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
  13. De Monolito Ordinario a Modular Acciones Previas  Tener a

    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
  14. De Monolito Ordinario a Modular Análisis  Defina los modelos

    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
  15. De Monolito Ordinario a Modular Coexistir Arquitecturas  Implementar mediador

    (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
  16. De Monolito Ordinario a Modular Base de Datos  Crear

    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
  17. Un poco más de Simón Brown  “Monolitos modulares: la

    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
  18. Conclusiones  La arquitectura de Monolito Modular es un nombre

    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.