Тёмный
No video :(

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

Manuel Zapata
Подписаться 45 тыс.
Просмотров 42 тыс.
50% 1

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.manuelz...
Repositorio de Kamil Grzybek: github.com/kgr...
MIS CURSOS
🧹 Arquitecturas Limpias para Desarrollo de Software: platzi.com/l/m...
📐 Arquitectura de Software: manuelzapata.c...
🔌 Patrones de Diseño: manuelzapata.c...
📦 Programación Profesional con Objetos (Gratis): manuelzapata.c...
🌲 Principios de Diseño SOLID (Gratis): manuelzapata.c...
🙌 Hazte miembro del canal: / @manuelzapata
🌎 Mi sitio web: manuelzapata.co
🎦 Suscríbete al canal: manuelzapata.c...
📩 Mi lista de correo: manuelzapata.c...
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

Опубликовано:

 

15 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 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 :)
@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
@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!
@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
@cristiancamilosanchezardil9730
@cristiancamilosanchezardil9730 3 года назад
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! 📈
@lilianrgg
@lilianrgg 2 года назад
Excelente video, explica super bien gracias por compartir sus conocimientos.
@ManuelZapata
@ManuelZapata 2 года назад
Con todo gusto, Lilián!
@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!
@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!
@andrair88
@andrair88 3 года назад
Me gusto mucho el video, efectivamente pienso en monolitos y creo que para usar microservicios debe haber una experiencia- necesidad puntual y enorme.
@jesuspache9365
@jesuspache9365 9 месяцев назад
Excelente explicación.
@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.
@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.
@cesarleon1892
@cesarleon1892 Год назад
Excelente video gracias por compartir tus conocimientos Manuel.
@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.
@oddocid9734
@oddocid9734 2 года назад
Esto es buenísimo!!!
@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!
@sebastianvalenciacarvajal9694
@sebastianvalenciacarvajal9694 2 года назад
Que explicación tan excelente, muchas gracias
@MrSfaundez
@MrSfaundez 3 года назад
Muy interesante Manuel muchas gracias por explicarlo tan claramente.
@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 👍🏼
@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.
@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.
@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!
@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!
@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.
@josereynelchauxperez947
@josereynelchauxperez947 2 года назад
Excelente material, muchas gracias !!!
@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!
@kantyDarius
@kantyDarius 2 года назад
Me acabo de dar cuenta que estuve desarrollando monolitos modulares sin darme cuenta 😂. Buen vídeo 👏🤘.
@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!
@Murzbul
@Murzbul 3 года назад
Me hizo recordar bastante a lo que se hace con nx monorepo. Buen video!
@ManuelZapata
@ManuelZapata 3 года назад
Gracias Nathan!
@cedaesca19
@cedaesca19 3 года назад
Excelente, me encantan los temas de arquitectura de software. Tienes un nuevo suscriptor :)
@ManuelZapata
@ManuelZapata 3 года назад
Bienvenido César!
@walterrodriguez2696
@walterrodriguez2696 2 года назад
Excelente video!. y ahora en 2022 Modular monolith ya está en "Early majority", significa que ha tenido más adopción?
@UskoKruM2010
@UskoKruM2010 3 года назад
Muy interesante tema, amigo Manuel, comenzando a escuchartee... 👋🏻
@ManuelZapata
@ManuelZapata 3 года назад
Gracias Oscar por pasarte por aquí!
@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.
@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.
@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.
@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.
@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.
@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
@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!!!
@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
@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.
@MauricioMurielDev
@MauricioMurielDev 3 года назад
Buen video Manuel, ilustrativo material, gracias.
@ManuelZapata
@ManuelZapata 3 года назад
Con todo gusto Mauricio!
@edwardalexanderpinedamarin429
@edwardalexanderpinedamarin429 3 года назад
Excelente video. Gracias por compartir !
@ManuelZapata
@ManuelZapata 3 года назад
Mil gracias por esas palabras Edward!
@FidgoBlogspot
@FidgoBlogspot 3 года назад
Me gustó, nuevo sub
@ManuelZapata
@ManuelZapata 3 года назад
Bienvenido por estos lados.
@user-yx9hs6kj9c
@user-yx9hs6kj9c Год назад
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
@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 :/
@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?
@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/
@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.
@Magistrado1914
@Magistrado1914 3 года назад
Excelente vídeo Visto en 08/11/2020
@ManuelZapata
@ManuelZapata 3 года назад
🙌
@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.
@alvarofuenzalida2753
@alvarofuenzalida2753 3 года назад
Muy buen video Manuel, saludos desde Chile.
@ManuelZapata
@ManuelZapata 3 года назад
Saludos Alvaro. Gracias!
@yamillanz6398
@yamillanz6398 3 года назад
Excelente...Yo buscaba el nombre de lo que hacemos en mi empresa y es este....
@ManuelZapata
@ManuelZapata 3 года назад
Genial! 🙌
@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
@sloventblake7990
@sloventblake7990 3 года назад
exclente muchas gracias!
@ManuelZapata
@ManuelZapata 3 года назад
Con gusto, Diana!
@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?
@johncerpa3782
@johncerpa3782 3 года назад
Buen vídeo
@ManuelZapata
@ManuelZapata 3 года назад
Gracias!
@andrescolina8288
@andrescolina8288 3 года назад
Al escuchar esto describe lo que es angular.
@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.
@giancarloaparicio5841
@giancarloaparicio5841 3 года назад
Genial... 👍 Muy interesante el video 😁😁😁
@ManuelZapata
@ManuelZapata 3 года назад
Gracias Giancarlo!
@rusia18rusia65
@rusia18rusia65 3 года назад
Gracias por los videos!
@ManuelZapata
@ManuelZapata 3 года назад
💪
@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!
@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.
@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.
@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.
@edwinspiredev4930
@edwinspiredev4930 3 года назад
Excelente.
@ManuelZapata
@ManuelZapata 3 года назад
Gracias!
@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.
@maikolcucunuba2252
@maikolcucunuba2252 2 года назад
¿Manuel se podría decir entonces que esta es una arquitectura por servicios?
@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.
@dmsanz_youtube
@dmsanz_youtube Год назад
Alguna técnica para tener múltiples soluciones para no tener una única solución para decenas de proyectos?
@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 .
@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! 🍻
@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.
@marlonconrado6136
@marlonconrado6136 3 года назад
Muy buen video, pero me queda una duda pendiente y es ¿Cuándo sé que debo pasar a Microservicios?
@ivanherrera6928
@ivanherrera6928 3 года назад
Genial tu contenido.
@ManuelZapata
@ManuelZapata 3 года назад
Gracias Ivan!
@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.
@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.
@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.
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?
@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
@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.
@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
@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.
@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.
@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.
@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.
@josemanuellucasbarrera3709
@josemanuellucasbarrera3709 3 года назад
Esto es como Liferay creo?
@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.
@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!
@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.
@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.
@elbertjosesalasbrochero6318
@elbertjosesalasbrochero6318 3 года назад
Me estás hablando de una aplicación fragmentada por módulos , eso se ve me empresas grandes , donde cada dependencia maneja su aplicativo para trabajar. Cómo por ejemplo los almacenistas tienen la aplicación de inventario . Los de ventas tienen otra aplicación los de , módulo de estadísticas.
@CeroCool212004
@CeroCool212004 2 года назад
Qué diferencia hay entre los webservices y los microservicios??? O son lo mismo???
@ManuelZapata
@ManuelZapata 2 года назад
Microservicios es una manera en que puedes organizar tu backend. Un webservice sencillamente es como un API que puedes consultar para que te retorne algo o ejecute un proces. Saludos.
@rumpelstiltskin08
@rumpelstiltskin08 3 года назад
La arquitectura de microservicios no se ideo para organizar mejor un proyecto. Se pensó para aprovechar las virtudes de varios lenguajes de programación. Por ejemplo, tengo un sistema en .net y quiero trabajar con IA, puedo hago un microservicio en python.
@ManuelZapata
@ManuelZapata 3 года назад
Esa una de las ventajas de usar microservicios. El punto es: usar los microservicios por las razones correctas.
@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é 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.
@MagnusAnand
@MagnusAnand 3 года назад
Se parece al concepto de apps de Django. Puede ser?
@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
Просмотров 9 тыс.
NOOOO 😂😂😂
00:14
Просмотров 14 млн
女孩妒忌小丑女? #小丑#shorts
00:34
Просмотров 7 млн
Shared Database between Services? Maybe!
13:51
Просмотров 22 тыс.
¿Por qué Debes Aprender ARQUITECTURA de SOFTWARE?
20:34
Top 5 Most Used Architecture Patterns
5:53
Просмотров 245 тыс.
¿De verdad son necesarios los microservicios?
33:04
Просмотров 66 тыс.
¿Amazon deja los MICROSERVICIOS?
17:34
Просмотров 56 тыс.