Monolitos modulares | CREA aplicaciones monolíticas con esto ANTES de usar microservicios

  Рет қаралды 41,762

Manuel Zapata

Manuel Zapata

Күн бұрын

Los monolitos modulares son una tendencia MUY interesante que nos ayuda a construir mejores aplicaciones monoliticas, sin tener que llegar a microservicios (si no es estrictamente necesario).
Curso práctico de patrones de arquitectura: cursos.manuelzapata.co/inscri...
Repositorio de Kamil Grzybek: github.com/kgrzybek/modular-m...
MIS CURSOS
🧹 Arquitecturas Limpias para Desarrollo de Software: platzi.com/l/manuelzapata
📐 Arquitectura de Software: manuelzapata.co/ars
🔌 Patrones de Diseño: manuelzapata.co/curso-pdd
📦 Programación Profesional con Objetos (Gratis): manuelzapata.co/objetos
🌲 Principios de Diseño SOLID (Gratis): manuelzapata.co/mcp
🙌 Hazte miembro del canal: / @manuelzapata
🌎 Mi sitio web: manuelzapata.co
🎦 Suscríbete al canal: manuelzapata.co/suscribete
📩 Mi lista de correo: manuelzapata.co/lista
Secciones
00:00 - Bienvenida al video
00:26 - Arquitectura por capas y microservicios
03:54 - El monolito modular
04:18 - Separación por dominio
05:30 - Encapsulamiento e interacción
06:51 - Cómo organizar el código
09:07 - Bases de datos
11:35 - Ejemplo de código
13:57 - Tendencia y cierre

Пікірлер: 266
@cmsalvado
@cmsalvado 3 жыл бұрын
Excelente video, dejo una cita de Robert C. Martin (Tio Bob): "Los microservicios no son una arquitectura, son una estrategia de despliegue. El desacoplamiento y la división podran (y deberían) lograrse independientemente de si se impone el límite de servicio."
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Excelente cita, Christian! Si lograramos desarrollar con ese nivel de desacoplamiento, pasar a microservicios debería ser sencillo.
@JosuFeijoo
@JosuFeijoo 3 жыл бұрын
@@ManuelZapata Se puede. Antes de los micro servicios , hace ya años, todo lo que montaba era modular sin dependencias. El problema es que es difícil mantener esa disciplina en equipos grandes. Incluso con los micro servicios a veces se escapan cosas y hay miembros del equipo que se saltan esa separación. Yo he conseguido hacer una arquitectura modular en clipper y Delphi ( ya di pistas de mi edad 😂 )
@elbertjosesalasbrochero6318
@elbertjosesalasbrochero6318 3 жыл бұрын
Conclusion son fragmentaciones de una aplicación completa.
@danielhuaman274
@danielhuaman274 Жыл бұрын
quien tendria la razon? tu tio bob o martin fowler? segun Martin Fowler dijo lo siguiente: La Arquitectura de Microservicios es una "forma particular de diseñar aplicaciones de software como conjuntos de servicios desplegables de forma independiente". mas bien no seria un estilo arquitectonico?
@dhalachian
@dhalachian 3 жыл бұрын
Los microservicios no aparecieron como consecuencia de una mala arquitectura monolítica, ni del mal uso de patrones de diseño, los microservicios son la consecuencia de la necesidad de balancear las diferentes cargas de la aplicación y de garantizar hasta cierto punto la resiliencia del sistema. La parte positiva que muchos desarrolladores ven es que pueden trabajar orientados a contratos donde cada microservicio sería una caja negra para el que no lo mantenga. Uno de los principales problemas vienen desde el punto transaccional, cuando más de un microservicio toma parte en la misma transacción, garantizar la consistencia y atomicidad se vuelve complicado. Otro gran problema viene con la mantenibilidad del código, al ser un desarrollo orientado a un contrato no tenemos la ventaja del tipado fuerte del compilador, cualquier cambio inocente en un nombre de una variable a consumir puede llevar a que el sistema no funcione, o peor, que funcione de forma errónea. Otros elementos a tener en cuenta son: hay que cambiar el proceso de cómo se hacen las liberaciones, como se hace el monitoreo y traceo de errores, como preparar datos válidos para las diferentes tipos de pruebas. Para decidirse por la arquitectura de microservicios debemos tener razones sólidas porque implica una inversión en tiempo, hardware y conocimiento.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Lo has descrito muy bien, Denys. Gracias!!
@aquilesviza5550
@aquilesviza5550 2 жыл бұрын
Muchas gracias por esta respuesta tan completa. Solo me queda una duda, ¿A que te refieres con la consideración del "cómo se hacen las liberaciones"? No se si te refieres a bajar instancias de los microservicios, o qué tipo de recurso liberar. Pese a eso, tu comentario me sirve bastante :)
@cristiancamilosanchezardil9730
@cristiancamilosanchezardil9730 2 жыл бұрын
Un companero de trabajo me envio este video, fue lo mejor del dia. Gracias Manuel excelente video!
@pedroamparo6727
@pedroamparo6727 3 жыл бұрын
Excelente contenido el que brinda Manuel, llevemos este canal a otro nivel!!!!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Al siguiente nivel! 📈
@MrSfaundez
@MrSfaundez 3 жыл бұрын
Muy interesante Manuel muchas gracias por explicarlo tan claramente.
@yesidays
@yesidays 3 жыл бұрын
Excelente video Manuel, leí por encima pero ahora con tu video me queda todo muy claro, gracias por compartir
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias Yesi por pasarte por acá y por compartir el video!
@andresrairan8834
@andresrairan8834 3 жыл бұрын
Me gusto mucho el video, efectivamente pienso en monolitos y creo que para usar microservicios debe haber una experiencia- necesidad puntual y enorme.
@cesarleon1892
@cesarleon1892 Жыл бұрын
Excelente video gracias por compartir tus conocimientos Manuel.
@rurouniize
@rurouniize 3 жыл бұрын
Muy buen tema, me recordó que Zend Framework 1.0 + ya se trabajaba la arquitectura modular y para Zend Framework (2 y 3) ahora llamado Laminas su punto fuerte poder separar en modulos la aplicación. Y como bien mencionas al interior del modulo se aplica la arquitectura que más convienga, en Laravel también se podría usar implementanto la separación por package que sirven para extender las funciones.
@lilianrgg
@lilianrgg 2 жыл бұрын
Excelente video, explica super bien gracias por compartir sus conocimientos.
@ManuelZapata
@ManuelZapata 2 жыл бұрын
Con todo gusto, Lilián!
@sebastianvalenciacarvajal9694
@sebastianvalenciacarvajal9694 2 жыл бұрын
Que explicación tan excelente, muchas gracias
@josereynelchauxperez947
@josereynelchauxperez947 2 жыл бұрын
Excelente material, muchas gracias !!!
@ciscobautista5033
@ciscobautista5033 3 жыл бұрын
Excelente video Manuel, todo me queda muy claro en estos conceptos que no los tenia tan claros, Gracias!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Con todo gusto!
@davisayus9643
@davisayus9643 3 жыл бұрын
Excelente explicación, quiero contarte que sin saber estaba implementa esta arquitectura, pero solo lo hice por organización ahora con este video voy a independizar un poco más, sería bueno un ejemplo de comunicación de esta arquitectura 👍🏼
@edwardalexanderpinedamarin429
@edwardalexanderpinedamarin429 3 жыл бұрын
Excelente video. Gracias por compartir !
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Mil gracias por esas palabras Edward!
@moviedomof
@moviedomof Жыл бұрын
muy bueno.. a la larga se reinventan las cosas con nombres y detalles diferentes.. Esto de separar en capas y proyectos ya se hacía en 2003 cuando vino .net . Lo hacíamos con otras arquitecturas más acopladas como remoting web services etc no existía mucho sobre APIs REST y menos Microservicios pero a grosos modos es una arquitectura super usada desde hace 20 años
@armandomen2944
@armandomen2944 3 жыл бұрын
Que buen video manuel, yo no sabia que microservicios eran mas de moda, muchas gracias por compartir el repositorio de Kamil. Muy informativo este video.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Ha sido con todo gusto Armando!
@jesuspache9365
@jesuspache9365 8 ай бұрын
Excelente explicación.
@UskoKruM2010
@UskoKruM2010 3 жыл бұрын
Muy interesante tema, amigo Manuel, comenzando a escuchartee... 👋🏻
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias Oscar por pasarte por aquí!
@MauricioMurielDev
@MauricioMurielDev 3 жыл бұрын
Buen video Manuel, ilustrativo material, gracias.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Con todo gusto Mauricio!
@oddocid9734
@oddocid9734 2 жыл бұрын
Esto es buenísimo!!!
@cedaesca19
@cedaesca19 3 жыл бұрын
Excelente, me encantan los temas de arquitectura de software. Tienes un nuevo suscriptor :)
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Bienvenido César!
@thaeronmorales8408
@thaeronmorales8408 3 жыл бұрын
Muchas gracias amigo, saludos desde venezuela... Actualmente estoy incursionando en un framework de Typescript llamado NestJS y su diseno de arquitectura es completamente modular. Esto complementa con mi proceso de aprendizaje
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Genial Thaeron. Saludos desde Colombia!
@sloventblake7990
@sloventblake7990 3 жыл бұрын
exclente muchas gracias!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Con gusto, Diana!
@Murzbul
@Murzbul 3 жыл бұрын
Me hizo recordar bastante a lo que se hace con nx monorepo. Buen video!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias Nathan!
@lucashenry5380
@lucashenry5380 3 жыл бұрын
Buen video manuel, para complementar, cuando se utiliza una base de datos por monolitos modular, ya estas aplicando un patron de los microservicios y por lo que veo lo que se esta aplicando aqui es el desacople por capacidades de negocio. un microservicio no necesariamiente debe ser 'micro', el tamaño del MS va ligado con la parte del negocio que quiere cubrir.
@luispastendev
@luispastendev 3 жыл бұрын
Concuerdo contigo, el problema la mayor parte de las veces es el diseño de las aplicaciones no tanto la arquitectura, inclusive si tienes un monolito bien hecho si alguna ves por escalabilidad requieres mudar tu aplicación a microservicios es muy fácil separarlos, cada ves trato de pensar mas en como resolver mis problemas en code modules que aunque parezca algo complejo al final favorece muchisimo es como si programaras paquetes y los subieras a packagist en cualquier momento los descargas con composer y los implementas en el proyecto que necesites con solo modificar algunos ficheros de configuración y lanzar migraciones. buen video gracias Manuel!
@rusia18rusia65
@rusia18rusia65 3 жыл бұрын
Gracias por los videos!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
💪
@giancarloaparicio5841
@giancarloaparicio5841 3 жыл бұрын
Genial... 👍 Muy interesante el video 😁😁😁
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias Giancarlo!
@agu160579
@agu160579 3 жыл бұрын
Totalmente de acuerdo. El problema de hoy día es que hay personas en puestos de decisión que realmente no entienden la programación. Como tú bien dices, se mueven por modas. Hace falta una revolución en el sector de la programación, donde los programadores no se limiten a tirar líneas de código si no que vean una aplicación como algo vivo, que crecerá y que no sabemos por donde lo hará. Esto debe hacer al programador tener un poquito más de formación sobre las tecnologías (si bien es cierto que no hay mejor ni peor, sino que dependerá de la finalidad del programa) También es importante que nuestro código esté modularizado, de modo que la lógica de negocio no sea un galimatías para un posible programador que ocupe nuestro puesto a futuro. En mi caso (y no digo que sea la mejor forma), uso .NET con EF y MVC 4 y conectada al dominio. Pero la aplicación es una especie de megaprograma modularizado, con secciones. Es decir, tengo una base monolítica que solo te lleva al login. Una vez te logueas ya tienes un menú lateral con todas las secciones o programas con su código standalone (Modelo de datos, con su controlador con sus vistas) y todo independiente de todas las demás secciones además como está conectada al dominio puedes gestionar fácilmente los permisos a las secciones mediante asignación de grupos en el controlador de dominio. Obviamente esto te hará usar métodos parecidos por no decir idénticos por lo que tiene un poco más de trabajo, pero es ROBUSTA, escalable y fácilmente entendible para otro programador. Éste programa nació como una idea en el 2017 y hoy día es una parte muy importante de la empresa. Sigue así Manuel Zapata, tienes la visión clara de un buen programador!
@alvarofuenzalida2753
@alvarofuenzalida2753 3 жыл бұрын
Muy buen video Manuel, saludos desde Chile.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Saludos Alvaro. Gracias!
@Magistrado1914
@Magistrado1914 3 жыл бұрын
Excelente vídeo Visto en 08/11/2020
@ManuelZapata
@ManuelZapata 3 жыл бұрын
🙌
@edwinspiredev4930
@edwinspiredev4930 3 жыл бұрын
Excelente.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias!
@uiniputo
@uiniputo 3 жыл бұрын
No cabe duda que la especialización cada vez es mayor y que soluciones sencillas y robustas de antes terminan siendo complejas por el tema de la especialización y de querer adoptar cada vez mas herramientas y productos. Esto que comentas lo haciamos desde hace más de 10 años con los Servidores de Aplicaciones, Maven (modules de Maven), Oracle, J2EE y Adobe Flex o jQuery
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias por el aporte Abner. Así pasa con muchos conceptos en la industria. A veces cambian de nombre o le dan nombre a algo que no lo tenia.
@Coderoll
@Coderoll 3 жыл бұрын
Me parece una estrategia muy inteligente que la aplicación vaya marcando la evolución de la arquitectura. En los últimos años he hecho varias aplicaciones nuevas y no he necesitado los microservicios, no es resistencia al cambio simplemente las modas no me apantallan. Saludos!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Muy sabio ese enfoque @CodeRoll. Seguramente cuando llegue la necesidad, aplicarás microservicios.
@samueldavidgomezramos7880
@samueldavidgomezramos7880 3 жыл бұрын
Uy considerar que los microservicios son moda es una afirmación muy atrevida.
@martingonzalez4648
@martingonzalez4648 3 жыл бұрын
CodeRoll, los microservicios no son una moda, es una forma de desarrollo para la evolucion del software desacoplada y facil de desplegar , yo llevo varios años desarrollandolos y dan una gran cantidad de facilidad a la hora del desarrollo y sobre todo del despliegue, permite esa independencia de modulos que de otra manera es mas complicada y encima si agregamos que los modulos de aplicaciones pueden tener diferentes evoluciones ...
@Coderoll
@Coderoll 3 жыл бұрын
Vale, igual me la bañe con eso de las modas. Aprovechando, tu que tienes experiencia en microservicios ¿Cuándo no los usarías? ¿esto de los monolitos modulares te hacen sentido o te vas directo al microservicio? Parto de la idea que no hay arquitecturas ni buenas ni malas, todo depende del contexto y en mi contexto no los he necesitado al parecer desarrollo monolitos muy buenos jejeje. Saludos!
@martingonzalez4648
@martingonzalez4648 3 жыл бұрын
@@Coderoll Como bien tu dices no hay ni buenas ni malas, y como has mencionado las arquitecturas hay que usarlas en su contexto correcto, no siempre he desarrollado ni desarrollo microservicios hay veces que es mas practico una arqutiectura monolita y no hay ningun problema, yo las monolitas las usaria en pequeñas aplicaciones y que no tengan mucha evolucion en el tiempo. Pero si realmenten es una aplicacion que tiene una evolucion continua es preferible usar los micros, por ejemplo una api de gestion, usaria un proyecto monolito para las maestras esas poco tiene de evolucion, pero en el negocio si usaria microservicios Un saludo
@ivanherrera6928
@ivanherrera6928 3 жыл бұрын
Genial tu contenido.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias Ivan!
@feyaluciano
@feyaluciano Жыл бұрын
Muy interesante Manuel, se puede decir entonces que de esta forma, si se relaliza un simple cambio, hay que deployar todo el monolito modular no? como si de un monolito normal se tratara.
@FidgoBlogspot
@FidgoBlogspot 3 жыл бұрын
Me gustó, nuevo sub
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Bienvenido por estos lados.
@totobol86
@totobol86 3 жыл бұрын
Me parece interesante y nosotros estamos pasando por un proceso conceptual de Modularización de un monolito, para luego ir a Microservicios. Creo que es el mejor path de migración para romper el monolito. Saludos
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Es un buen path. Saludos Javier!
@orlandomorales509
@orlandomorales509 3 жыл бұрын
Buen video, microservicios otro legacy hell para los proximos años, a ver como queda ahora estos monolitos modulares, mas de lo mismo renombrado
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Así es. No necesariamente las tendencias son cosas realmente nuevas. De hecho, hay personas que dicen los microservicios tampoco eran nada nuevo. Eran sencillamente una variante de SOA con nuevo nombre.
@idcmardelplata
@idcmardelplata 3 жыл бұрын
Se me hace bastante familiar esta arquitectura, sobretodo porque programo en elixir y ahí se usan este tipo de arquitecturas.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Buenísimo! La idea no es tan "novedosa". Es solo que ya se le dio un nombre y se le está haciendo más difusión.
@f3rch0c
@f3rch0c 3 жыл бұрын
Muy buen video. Tengo una consulta. Si tengo un módulo de facturación de una tienda de abarrotes y otro módulo para administrar los artículos la descripción del artículo que va en la factura la debería obtener desde el módulo de artículos, que método recomendarías?
@kantyDarius
@kantyDarius Жыл бұрын
Me acabo de dar cuenta que estuve desarrollando monolitos modulares sin darme cuenta 😂. Buen vídeo 👏🤘.
@oscarmera3580
@oscarmera3580 3 жыл бұрын
Gracias Manuel, era algo que te había pedido hace un tiempo. Cuando estés en Cali tengo que invitarte un par de cervezas :D
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Si, recuerdo muy bien cuando me sugeriste el tema. Lo puse en mi backlog y finalmente vio la luz. Ojalá se dé el espacio para esas polas! 🍻
@johncerpa3782
@johncerpa3782 3 жыл бұрын
Buen vídeo
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias!
@ecastrojimenez
@ecastrojimenez 3 жыл бұрын
Excelente video, felicidades!!... desde mi vida laboral he venido comentando que no se debe escoger la arquitectura de una solución basado al modismo, eso es un gran error y con charlas o actividades con proveedores, se vuelve un punto de controversia. Esta es una buena opción que se debe analizar, otra opción válida. Agradecería mucho que nos compartas el código para conocer de fondo la propuesta. Gracias y saludos!!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
De eso se trata. De conocer opciones y saber cuándo es conveniente usar una o otra. Ya con eso vamos ganando. En la descripción del vídeo está el enlace al repositorio.
@cesarpuma7862
@cesarpuma7862 3 жыл бұрын
Hola Manuel, muy interesante el video. Según lo que explicabas en el minuto 9:35 . Si un módulo necesita algo de una tabla que esta bajo el control de otro módulo , este no debería consultar directamente a la tabla. Si no , respetar y consultarlo por ese módulo . Así lo entendí y que me parece buena práctica, porque si se modifica algo en esa tabla , solo se modificaría un módulo. Pero en el ejemplo de Kamil, veo que crea tablas por Modulo (minuto 13:13) , con el mismo nombre, similares en su estructura (por no decir iguales). No se si entendí mal :/
@walterrodriguez2696
@walterrodriguez2696 2 жыл бұрын
Excelente video!. y ahora en 2022 Modular monolith ya está en "Early majority", significa que ha tenido más adopción?
@jhonnyjamifernandez447
@jhonnyjamifernandez447 3 жыл бұрын
Buen video, podrías hablar de osgi vs microservicios, gracias
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias por la sugerencia, Jhonny. Lo anoté como idea para futuros videos.
@carlosjosepertuzarroyave1559
@carlosjosepertuzarroyave1559 3 жыл бұрын
Estimado Manuel y comunidad. No entiendo el tema de los despliegues para este tipo de arquitectura, si tengo dos módulos, facturas y documentos. Requiero realizar un ajuste sobre documentos, como despliego sobre el modulo documentos sin afectar la disponibilidad del modulo facturas? si todo esta en un monolito aunque sea modular? Agradezco sus aportes.
@jruitti
@jruitti 3 жыл бұрын
Siguiendo la línea de “Software is meant to be soft” de Martin Fowler, la implementación del software debería poder variar de estrategia. Si es costoso, entonces podríamos haber diseñado mal la arquitectura. Muy buen video! Gracias!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias por tu aporte, Javier!
@javiopakan2
@javiopakan2 3 жыл бұрын
Saludos, gracias y Bendiciones..... Estuve revisando el proyecto que mencionas aqui y veo que el lo mantiene actualizado!!!... algo me llamo la atencion, es que revise el proyecto y en ninguna parte del proyecto el realiza validaciones de que no le manden un correo como string en blanco, o algo asi, desde el API, luego a la aplicacion de un modulo, hasta el dominio de ese modulo, no existe ni una validacion de que los datos que se envian estan bien.... me pregunto si hizo eso por ahorrar tiempo o me estoy perdiendo de algo, talvez podrias revisar su repositorio y comparta tu opinion... de nuevo gracias y Bendiciones!!!
@SimaDamian
@SimaDamian 3 жыл бұрын
Excelente! Tengo una duda. En este proyecto de ejemplo la comunicacion entre modulos lo hace bajo eventos (usa MediatR). Y es practicamente 4 microservicios pero sin implementar la capa de Aplicacion con técnicas de comunicacion entre procesos. Por tanto la unica ventaja vs Microservicios es en cuanto a infraestructura IPC. No me queda claro cual es la ventaja real vs 4 microservicos para este ejemplo. Gracias, Saludos
3 жыл бұрын
Suscrito!!!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Bienvenido!
@yamillanz6398
@yamillanz6398 3 жыл бұрын
Excelente...Yo buscaba el nombre de lo que hacemos en mi empresa y es este....
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Genial! 🙌
@user-yx9hs6kj9c
@user-yx9hs6kj9c 11 ай бұрын
En un monolito modular, podemos usar diferentes stacks y lenguajes para cada modulo o si esto es un requerimiento es mejor iniciar desde microservicios? Saludos
@ceorcham
@ceorcham 3 жыл бұрын
Excelente explicación, has visto Django? Esa es exactamente la forma en cómo se plantean los módulos, que allí se llaman aplicaciones ( en especial respecto de la base de datos)
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Genial lo que me cuentas Cesar. He escuchado de Django, pero nunca lo he usado. Qué tan fácil será con Django separar luego esos módulos en servicios independientes?
@whitmanbohorquez184
@whitmanbohorquez184 3 жыл бұрын
@@ManuelZapata Es bastante facil, doy fe de eso
@daviscruz1101
@daviscruz1101 3 жыл бұрын
Excelente vídeo Manuel, cuando un vídeo sobre DDD 😁?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Yo sé. Ese es uno de los pendientes en el canal.
@andrescolina8288
@andrescolina8288 3 жыл бұрын
Al escuchar esto describe lo que es angular.
@davidemanuelsans257
@davidemanuelsans257 3 жыл бұрын
Excelente! Otra alternativa al respecto: Porto SAP (github.com/Mahmoudz/Porto). También va en la misma línea: modularizar correctamente y en base a dominios una aplicación monolítica.
@felipellc5495
@felipellc5495 3 жыл бұрын
gracias por el aporte! ..unos comentarios..es importante mencionar que para saltar a una arquitectura microservicios se requiere hacer una buena descomposición funcional, y creo que eso también aplicaría para los monolitos modulares, aplicando DDD por ejemplo.. mencionaste que se puede aplicar la arquitectura hexagonal para implementar un módulo monolítico, pero entendería que ya no sería una hexagonal como tal porque estarías integrando la capa de presentación a la arquitectura lógica, y eso es justamente lo que una arquitectura hexagonal no debe hacer. Otro tema importante es que en la práctica si todo el código fuente está en un solo proyecto y se maneja los módulos como una división puramente lógica (paquetes en java por ejemplo), se hace dificil controlar que un programador no acceda a la implementación de la api publica de otro módulo.. cosa que un microservicio se puede controlar fácilmente... saludos.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Gracias por tu aporte, Felipe. Hay formas de organizar el código que van a ayudar más al encapsulamiento que otros. La idea de que puedas implementar una arquitectura hexagonal (o cualquier otra) en un módulo es un poco para mostrar la independencia de los módulos.
@videovideo166
@videovideo166 2 жыл бұрын
Me supo a algo que sabemos de perogrullo o no? Como q hacer submodulos es lo minimo q deberiamos hacer en cualquier situacion. o me equivoco?
@marioalejandromendez5051
@marioalejandromendez5051 3 жыл бұрын
Hola Manuel, Excelente video. Te quería preguntar si en este tema de monolitos modulares podríamos meter a tecnologías de java como OSGI implementando frameworks como apache karaf
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Con OSGI no estoy familiarizado Mario, entonces no podría darte una opinión. Lo que dice Axel Fontaine (un arquitecto promotor de estos monolitos) es que tu podrías eventualmente usar colas para comunicar los módulos.
@maikolcucunuba2252
@maikolcucunuba2252 2 жыл бұрын
¿Manuel se podría decir entonces que esta es una arquitectura por servicios?
@williandavidlopezsanchez8331
@williandavidlopezsanchez8331 3 жыл бұрын
Buenas noches, buen video. Una pregunta esos módulos es lo mismo que se conoce en clean arquitecture como bounded context o son diferentes conceptos. Gracias
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Si pensamos en que la separación de los módulos se hace por funcionalidad, tiene mucha relación con los bounded context.
@claudiomnec
@claudiomnec 3 жыл бұрын
Excelente explicación. ¿Es recomendable utilizar integridad referencial entre módulos? Puesto que si separamos los módulos por bases de datos perdemos la integridad referencial (en el caso de utilizar modelos relacionales).
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Yo creo que sí. Yo mantendría siempre la integridad referencial, hasta que la separación no me lo permita.
@benjaminlizarraga7926
@benjaminlizarraga7926 3 жыл бұрын
Hola! me topé con tu canal y me encanta, tengo una pregunta, que sucede en el caso de las transacciones que involucren mas de un modulo? se aplica patrones de microservicios?
@ldiego08
@ldiego08 3 жыл бұрын
En una arquitectura monolítica modular es bueno tener un canal de comunicación entre módulos para abstraer lo más posible. Una forma de hacerlo es con el patrón CQRS (que menciona Manuel al final del video) que define un service bus y eventos. Es parecido a queues.
@giovannyavila8105
@giovannyavila8105 3 жыл бұрын
Que chévere hacia esto sin darme cuenta en Laravel , cada módulo expone un service provider e inyecta interfaces en lugar de objetos concretos y los iba creando por separando e instalando vía composer como una dependencia de Laravel
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Excelente! No estoy familiarizado con Laravel.
@gerardocouso708
@gerardocouso708 3 жыл бұрын
Excelente video !! Muy bien explicado el tema, aunque me surge una pregunta: ¿Que alcance tiene la variedad de capas de código? ¿Es posible programar capas a nivel de Linux Bash Scripting? Gracias de antemano ...
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Hola Gerardo. Me imagino que al final tendrás una capa donde llamarás scripts de Linux Bash si lo necesitas. El nivel (alto o bajo) se lo das tu y el lenguaje de programación que estés usando.
@misakyanzye4269
@misakyanzye4269 2 жыл бұрын
Si necesito hacer un reporte con datos de modulos dependientes entre si, como sería el flujo de las peticiones?. Es decir, mi reporte inicia con datos del modulo A y por cada registro necesito su detalle que existe en el modulo B entonces como diseño el flujo de peticiones hacia el modulo B para no hacer algo así como un N+1 ?. Alguien sabe como se resuelve ese tema? ya que por lo que veo tendria que respetar el patrón de arquitectura y hacer solicitudes entre APIs
@marlonconrado6136
@marlonconrado6136 3 жыл бұрын
Muy buen video, pero me queda una duda pendiente y es ¿Cuándo sé que debo pasar a Microservicios?
@luismigueldiaz8992
@luismigueldiaz8992 3 жыл бұрын
Muy interesante! Cuales crees que son los drawbacks o posibles desventajas de utilizar esta arquitectura? .. sera que si los desarrolladores no son disciplinados se puede volver un problema?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Ese es el eterno reto con el monolito. Que como todo está ahí, si no tiene la disciplina, unos buenos code reviews y buenos modificadores de acceso en el código, es posible que se terminen tomando atajos. El otro posible problema que veo es que exista acoplamiento a nivel de los datos, y luego sea más difícil separar las bases de datos.
@andresnator
@andresnator 3 жыл бұрын
Interesante opción para cuando existe esa incertidumbre de escalabilidad
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Exactamente. Puede ser que al final nunca se escale, y así no se desperdicia el esfuerzo de desarrollar microservicios.
@andresnator
@andresnator 3 жыл бұрын
@@ManuelZapata Que suele ser en ocasiones agotador
@EduardoPatricioRoseroVaca
@EduardoPatricioRoseroVaca 3 жыл бұрын
Como quedan las tablas que son comunes a todo los módulos tales como tabla de países, tablas de bitácoras de acceso al sistema quien posee el control de estas tablas en un sistema monolitico
@leonardodanielzaragozamata4836
@leonardodanielzaragozamata4836 3 жыл бұрын
Buena pregunta, aún no entiendo mucho, pero de acuerdo con el vídeo, esta info debería pertenecer a un microservicio o monolito y consultarse exclusivamente por una API.
@josemanuellucasbarrera3709
@josemanuellucasbarrera3709 3 жыл бұрын
Esto es como Liferay creo?
@williandavidlopezsanchez8331
@williandavidlopezsanchez8331 3 жыл бұрын
hola Manuel, muchas gracias por el video. en donde puedo ver un tutorial o libro que sea practico para .net core sobre el monolito modular en capas
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Quizá esta serie de artículos te puede ser útil. www.kamilgrzybek.com/design/modular-monolith-primer/
@cristiandavidippolito
@cristiandavidippolito 3 жыл бұрын
Si están trabajando en JS / TS pueden revisar un framework llamado NESTJS y facilita este diseño modular, además tienen un curso oficial muy bueno.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Buenísimo el dato. Gracias por compartilo, Cristian!
@dmsanz_youtube
@dmsanz_youtube Жыл бұрын
Alguna técnica para tener múltiples soluciones para no tener una única solución para decenas de proyectos?
@angelbarrios7868
@angelbarrios7868 3 жыл бұрын
Me gustó tu vídeo, excelente. En mi opinión en esta opción de arquitectura estamos sacando lo peor de los 2 mundos, monolitos y las dificultades y retos de microservicios sin poder sacarle el máximo de provecho aunque habría que revisar los requerimientos. En lo personal solo lo usaría para algo súper puntual y teniendo una muy buena razón.
@elbertjosesalasbrochero6318
@elbertjosesalasbrochero6318 3 жыл бұрын
Lo bueno de esto es que así se puede crear una aplicación rápido si , se reparte el trabajo por módulos a cada programador.
@martingonzalez4648
@martingonzalez4648 3 жыл бұрын
Excelente Presentacion Manuel, gracias, pero lo que he visto son como microservicios pero con gran cantidad de funcionalidad..
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Sigue siendo un monolito, pero con una mayor facilidad para que algún día, si es necesario, se vuelva microservicios.
@fernandopoveda9861
@fernandopoveda9861 3 жыл бұрын
Son mas complicados de mantener los microservicios cuando son muchos, si claro...soluciona el tema de ceder una responsabilidad por cada microservicios lo que los convierte en una unidad mucho mas diluible y asimilable. Pero para entornos de integración muy grandes, pueden generar una plataforma un poco abrumadora.
@jesuscampos7307
@jesuscampos7307 3 жыл бұрын
No veo que sea una arquitectura nueva. Es una arquitectura DDD donde se separan verticalmente los bounded contexts. No deja de ser un monolito mejor organizado. No tienes en cuenta muchas de las ventajas aportadas por los microservicios como el despliegue y escalado independiente y el trabajo de distintos equipos especializados en distintas secciones y en distintos repositorios sin interferir, desarrollos de verdad independientes con frameworks y plataformas diversas adecuadas a las necesidades, etc. Eso si, estas ventajas sólo compensan en aplicaciones de cierta envergadura debido a la complejidad que añaden.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Como muchas tendencias, no necesariamente es algo nuevo. Solo algo que le pusieron un nombre distinto o que no tenía. El punto es: hacer microservicios por las razones correctas.
@miguelmavo5971
@miguelmavo5971 3 жыл бұрын
Hola Manuel, hay posibilidad de comprar tu curso de arquitectura desde Argentina? saludos
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Hola Miguel. Gracias por el interés. Claro que sí. Lo puedes comprar por Paypal.
@samueldavidgomezramos7880
@samueldavidgomezramos7880 3 жыл бұрын
Cómo juega la escalabilidad en esta arquitectura? Si uno de esos módulos requiere escalar 3 nodos por temas de demanda en un día o una hora específica, todo el monolito tiene que escalar?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Así es. Todo el monolito tiene que escalar. Esa es y seguirá siendo una desventaja de cualquier monolito.
@josevicente632
@josevicente632 3 жыл бұрын
Manuel que paso con lad charlas Nullpointer de los viernes??
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Pasaron a ser quincenales. La próxima será el 20 de noviembre en mi canal.
@elbertjosesalasbrochero6318
@elbertjosesalasbrochero6318 3 жыл бұрын
Se puede crear una aplicación completa que muestre solo el módulo del usuario respectivo solamente y crear un súper usuario administración que tenga acceso a toda la aplicación. completa
@hermanolazcano
@hermanolazcano 3 жыл бұрын
Hola, es relativo, me llama la atención una frase "...donde todo esta junto y todo es más fácil de desarrollar, siendo un monolito..." (Min.3:22) , para mi eso no es cierto, en nuestro caso usando Java Spring Cloud Microservices, se ha logrado una experiencia mejor al desarrollo monolítico, mejor control del tiempo, presupuesto y recursos. Es relativo ya que si hablamos de un sistema MVC construído por solo un equipo, compuesto por seis desarrolladores, aún cuando tengas una herramienta de integración como TFS u otra, si escalas ese proyecto a cuatro equipos ubicas tres de esos equipos en países distintos, contabilizando 50 desarrolladores al final, la complejidad es bastante mayor, lo monolítico me parece que se va mantener "simple" dependiendo de la escala, en su lugar la el diseño orientado a microservicio, permite generar un proyecto distribuído desde el inicio, con 1..n células y con una integración continua que se puede automatizar garantizando despliegues optimos. Por lo demás después de ver el video, me parece que es no plantea nada nuevo, es como forzar la arquitectura monolitica a trabajar similar a un diseño de micro servicio, por otro lado la organización que muestras en el proyecto de ejemplo es simplemente DDD, al final depende mucho en como lo ilustras, cómo lo prsentas y organizas en el proyecto, pero nuevo? Como concepto? No, no parece, mas bien un "Revamp" o "Upgrade" que en lo personal he visto muchas veces. De hecho el proyecto de ejemplo mostrado, en micro servicio probablemente se puede armar con tres microservicios y un "broker" (Kafka) y un Api Gateway que ni siquiera debe saber de estos microservicios ya que los puede localizar automáticamente, evitando mucha configuración y proceso de DI. Entre eso y DDD me quedo con DDD o un buen proyecto MVC armado dividido en varias API's y orquestadas por un administrador de procesos y todo ello sigue siendo más pesao que simplemente realizar un proyecto de mciroservicio en NODE JS o JAVA e incluso .NET. Saludos, buena iniciativa!
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Ahí está el debate. Es una tendencia que se está discutiendo en la industria. Ya veremos si se adopta. Y eso es lo curioso. Las tendencias no necesariamente son ideas nuevas. A veces solo dan nombre a algo que no lo tenia, pero ya lo haciamos. Los mismos microservicios: hay gente que considera que no eran nada nuevo en su momento, y solo era una forma particular de hacer SOA. Lo de la escalabilidad es algo incierto, dependendiendo del proyecto. Hay proyectos que nunca crecen (por mas que el negocio quiera que crezcan). En esa incertidumbre es que creo que puede funcionar esa arquitectura. Por otro lado, creo que es bueno nunca olvidar el principio KISS y no hacer sobre ingeniería (especialmente si hay incertidumbre). Gracias por tu aporte, Juan.
@Unknown971
@Unknown971 3 жыл бұрын
Tengo que hacer mi proyecto de tesis para el año que viene, y soy el unico que haria todo usando mysql con nodejs y angular (una aplicacion para gestion de pedidos, carta, etc para un restaurante). ¿Me recomiendas esta arquitectura? Estaba pensando en una de micro servicios, pero ya se me puede complicar una monolitica, y estando solo no se si vale la pena ya que le retrasaria mucho
@ManuelZapata
@ManuelZapata 3 жыл бұрын
El monolito modular es una excelente forma de empezar. Lo bueno es que te deja la puerta abierta cuando se requieran los microservicios.
@Unknown971
@Unknown971 3 жыл бұрын
@@ManuelZapata Excelente, me pondre a investigar mas a fondo durante este verano sobre como implementar este patron de arquitectura en mi proyecto. Seguramente con una base de datos con varios esquemas.
@williamdavid508
@williamdavid508 3 жыл бұрын
hay un tema que no queda del todo claro o tal ves este incorrecto, es la comunicación entre los módulos, si la comunicación se realiza utilizando las mismas Apis dentro de un mismo ensamblaje puede ocurre una redundancia cíclica, es decir: si el modulo "A" esta Diseñado en capas o sus derivados como clean arquitecture y su capa de aplicación o negocio apunta a un capa de API la cual, es la única entrada de ejecución del mismo sistema lo mas probable es que ocurra una redundancia cíclica en cada componente. otra opción seria que cada modulo tuviera su ensamblaje de APIS, ósea, capa modulo con su proyecto de APIS , pero, ya no seria un monolito por que tendría varias entradas de ejecución y para cada proyecto un despliegue... entonces lo mejor a mi juicio y teniendo en cuenta el repositorio que sugeriste es utilizar un "InMemoryEventBus" con una cuarta capa para la integración de eventos utilizando un patrón pub-sub. una librería que encontré para facilitar esto es JKANG. sin embargo, seria mejor aclarar tu video por que no creo que sea posible la comunicación de la manera como la explicas en el video. gracias y feliz día.
@feedeandoando8257
@feedeandoando8257 3 жыл бұрын
Hay muchos nuevos programadores que solo creen que hacer microservicios es hacer 1-1 con cada objeto de la bd y nunca hn hecho un proyecto o formado parte de un proyecto grande y no saben darle escalabilidad .
@samueldavidgomezramos7880
@samueldavidgomezramos7880 3 жыл бұрын
Qué relación tiene este enfoque con DDD?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Podrías usar DDD en varias partes del monolito. El repositorio que puse en la descripción tiene buenos ejemplos de esto.
@edwinsantos201
@edwinsantos201 3 жыл бұрын
Hola Manuel, no me queda muy claro la diferencia entre este approach y el de tener servicios ( no microservicios ) ya que al tener servicios, se sigue el mismo concepto no?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Depende mucho de como tengas organizados los servicios. Ahí puede radicar la diferencia.
@MagnusAnand
@MagnusAnand 3 жыл бұрын
Se parece al concepto de apps de Django. Puede ser?
@washingtonacero8375
@washingtonacero8375 3 жыл бұрын
Abp framework implementa casi todo lo que mencionas, me gustaría saber tu opinión acerca del framework abp
@ManuelZapata
@ManuelZapata 3 жыл бұрын
No conozco ABP Framework, Washington. Habrá que revisarlo. Saludos!
@designanimation
@designanimation 2 жыл бұрын
A qué se refieren a la capa de presentación? Gracias
@ManuelZapata
@ManuelZapata 2 жыл бұрын
Capa de presentación es contra la que interactua un usuario. Ejemplo: una página, un formulario en una aplicación de escritorio.
@designanimation
@designanimation 2 жыл бұрын
@@ManuelZapata gracias Manu!
3 жыл бұрын
El API también se podría llegar a modular? Cómo se llegaría a comunicar un módulo con otro módulo, es decir, a partir de qué capa?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Te refieres a un API REST? Realmente la arquitectura no entra en mayores detalles en el punto en el cual se hace la comunicación con otro módulo. Esto dependerá de la organización interna de cada móulo.
3 жыл бұрын
@@ManuelZapata entonces podría ser comunicación entre endpoints por medio de http o por medio de las librerías internas, no?
@josesepulveda910
@josesepulveda910 3 жыл бұрын
Como deberia organizar la base de datos, si una o varias tablas son compartidas por varios modulos ?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Lo ideal es definir qué modulo es el "dueño" de la tabla. Si al final te das cuenta que hay dos módulos que la necesitan muchísimo, posiblemente esos módulos deban unirse en uno solo.
@samueldavidgomezramos7880
@samueldavidgomezramos7880 3 жыл бұрын
Qué pasa si un módulo se cae y quien consume la API obtiene un 503 ? No es mejor que los módulos se comuniquen a través de un Bus de mensajería como se hace en una arquitectura de microservicios? De tal forma que si un módulo, microservicio o consumidor se cae los mensajes permanecen el Bus hasta que esté nuevamente disponible.
@ManuelZapata
@ManuelZapata 3 жыл бұрын
El problema es que sigue siendo un monolito. Si se cae el monolito, se caen todos los módulos.
@samueldavidgomezramos7880
@samueldavidgomezramos7880 3 жыл бұрын
Si uno de los cambios en uno de los módulos puede pasar a producción pero un cambio en otro módulo no puede pasar, qué se hace en ese caso?
@ManuelZapata
@ManuelZapata 3 жыл бұрын
Ya te tocaría manejarlo a nivel de source control (quizá con feature branches o algo así).
3 diagramas complementarios en el MODELO C4
9:18
Manuel Zapata
Рет қаралды 9 М.
Adapter | Integra aplicaciones con este patrón de diseño
25:10
Manuel Zapata
Рет қаралды 4,4 М.
DEFINITELY NOT HAPPENING ON MY WATCH! 😒
00:12
Laro Benz
Рет қаралды 49 МЛН
How Many Balloons Does It Take To Fly?
00:18
MrBeast
Рет қаралды 129 МЛН
I Can't Believe We Did This...
00:38
Stokes Twins
Рет қаралды 107 МЛН
HAPPY BIRTHDAY @mozabrick 🎉 #cat #funny
00:36
SOFIADELMONSTRO
Рет қаралды 14 МЛН
Roadmap para ser líder técnico
22:37
Manuel Zapata
Рет қаралды 5 М.
¿Qué es gRPC?
7:27
makigas
Рет қаралды 3,8 М.
Arquitectura - API REST + DDD + CQRS + MediatR + Vertical Slices
1:00:04
Microservicios sí, pero no así
1:07:23
Manuel Zapata
Рет қаралды 6 М.
Observer | Notificando eventos en nuestras aplicaciones
26:25
Manuel Zapata
Рет қаралды 3,3 М.
35 cosas que no sabías sobre arquitectura de software
20:33
Manuel Zapata
Рет қаралды 11 М.
¿Amazon deja los MICROSERVICIOS?
17:34
BettaTech
Рет қаралды 55 М.
9 consejos para que MEJORES TU LÓGICA DE NEGOCIO
15:05
Manuel Zapata
Рет қаралды 25 М.
¿De verdad son necesarios los microservicios?
33:04
Antonio Pérez
Рет қаралды 65 М.
PART 52 || DIY Wireless Switch forElectronic Lights - Easy Guide!
1:01
HUBAB__OFFICIAL
Рет қаралды 49 МЛН
iPhone 16 с инновационным аккумулятором
0:45
ÉЖИ АКСЁНОВ
Рет қаралды 8 МЛН
НЕ ПОКУПАЙ СМАРТФОН, ПОКА НЕ УЗНАЕШЬ ЭТО! Не ошибись с выбором…
15:23
1$ vs 500$ ВИРТУАЛЬНАЯ РЕАЛЬНОСТЬ !
23:20
GoldenBurst
Рет қаралды 1,7 МЛН