Introducción Arquitectura Hexagonal - DDD

  Рет қаралды 121,696

CodelyTV - Redescubre la programación

CodelyTV - Redescubre la programación

8 жыл бұрын

Hoy sentaremos los principios sobre la Arquitectura de Software y, más en concerto, sobre qué es la Arquitectura Hexagonal. Tras una primera temporada donde hemos hablado al respecto de los principios SOLID, y hemos visto los problemas del código acoplado en términos de testabilidad, vamos a pasar a dar un salto en términos de diseño de Software y nos centraremos en la Arquitectura de Software, o como lo denominaba Sandro Mancuso: "Macro-design".
Más info: codely.tv/screencasts/arquitec...

Пікірлер: 60
@CodelyTV
@CodelyTV 6 жыл бұрын
Ya disponible el curso de Arquitectura Hexagonal donde entramos mucho más en detalle y lo ilustramos con ejemplos de implementación tanto en PHP como en Scala. Más información: pro.codely.tv/library/arquitectura-hexagonal/66748/about/
@yudelkismontero931
@yudelkismontero931 10 ай бұрын
👍👍 llegó 👍 PP PP 👍 PP 👍👍👍👍👍👍👍pp 👍👍 PP l la 👍 lll 👍 lll l PP l PP PP
@yudelkismontero931
@yudelkismontero931 10 ай бұрын
👍👍 llegó 👍 PP PP 👍 PP 👍👍👍👍👍👍👍pp 👍👍 PP l la 👍 lll 👍 lll l PP l PP PP
@yudelkismontero931
@yudelkismontero931 10 ай бұрын
👍👍 llegó 👍 PP PP 👍 PP 👍👍👍👍👍👍👍pp 👍👍 PP l la 👍 lll 👍 lll l PP l PP PP
@arnulfoaguilar101
@arnulfoaguilar101 4 жыл бұрын
He leído y visto tantas explicaciones de arquitectura hexagonal, y finalmente logre comprenderla. ¡Muchas gracias, me suscribo!
@CodelyTV
@CodelyTV 4 жыл бұрын
Gracias! Por si quieres más información, tienes un curso con ejemplos prácticos y mucha más info en pro.codely.tv/library/arquitectura-hexagonal/about/ 😊 Saludos!
@aldolunabueno2634
@aldolunabueno2634 Жыл бұрын
¡Qué didáctico! Ya estoy entendiendo este tema gracias a este video. Muchísimas gracias. Bibliografía: 4:15 Uncle Bob - Clean Arquitecture 6:50 Fideloper - Hexagonal Arquitecture
@artchess0
@artchess0 8 жыл бұрын
Muchas gracias, excelentes tus videos. También espero los próximos episodios.
@samuelcd80
@samuelcd80 8 жыл бұрын
Esperando el siguiente video con muchas ganas
@DanielMoyaPerez
@DanielMoyaPerez 8 жыл бұрын
Excelente vídeo. Ya estoy esperando con ansia el nuevo episodio.
@CodelyTV
@CodelyTV 8 жыл бұрын
+Daniel Moya Pérez Me alegro Daniel! Espero que te gusten :D Cualquier cosilla que veas que no te cuadra o que harías diferente, feel free de comentarla! :)
@albertxcastro
@albertxcastro 3 жыл бұрын
Súper bien explicado, tienes un sub más 😎
@Magistrado1914
@Magistrado1914 3 жыл бұрын
Excelente vídeo y explicación Visto en 08/05/2021
@thevolcomstone10
@thevolcomstone10 7 жыл бұрын
Muy buen video, saludos desde México!!!
@CodelyTV
@CodelyTV 7 жыл бұрын
+Alan Neri gracias! 😊 Saludos!!
@emilianoguerrero4984
@emilianoguerrero4984 4 жыл бұрын
Excelente video, me aclaro muchas dudas.
@sagi33delriego82
@sagi33delriego82 Жыл бұрын
Muy bien explicado , gracias por tu aporte
@interestingcoding4698
@interestingcoding4698 3 жыл бұрын
Ganaste un seguidor.
@d-landjs
@d-landjs 2 жыл бұрын
Excelente explicación, espero verlo en nodejs pronto!
@dynamikideas5577
@dynamikideas5577 6 жыл бұрын
Se te ha entendido muy bien, gracias por el conocimiento.
@CodelyTV
@CodelyTV 6 жыл бұрын
Gracias a ti por el feedback! Saludos!!!
@calshox
@calshox 7 жыл бұрын
Muy buen video. Pero que hacer en el caso de que el framework provea funcionalidades como formularios o sistema de login. Por ejemplo, Symfony para poder usar el firewall, necesita que la entidad User extienda (si no recuerdo mal) de una interfaz de UserProvider. Es decir, en nuestro dominio tendríamos la entidad User acoplada a la impletación actual del FW. Entonces dejamos de usar estas herramientas que da el Symfony? Muchas gracias!
@CharlesDv
@CharlesDv 7 жыл бұрын
Gracias, eres muy bueno explicando.
@alejandraporras8075
@alejandraporras8075 4 жыл бұрын
Que fácil lo has explicado!
@Brunomelgarsayritupac
@Brunomelgarsayritupac 4 жыл бұрын
Según entiendo los casos son representados por servicios de aplicación, pero no me quedo claro los servicios de dominio.
@oscarperez-kp3qd
@oscarperez-kp3qd Жыл бұрын
El video es realmente muy bueno, solo te haré una crítica constructiva, este video es de bastantes conceptos por eso quise oírlo mientras conducía y se complica mucho con cualquier otro sonido; gracias por estos contenidos
@CodelyTV
@CodelyTV Жыл бұрын
Con el tiempo hemos mejorado invirtiendo en calidad de sonido. El vídeo tiene 7 años 😊
@GabrielGongoraNavarrete
@GabrielGongoraNavarrete 2 жыл бұрын
Gracias
@pzentenoe
@pzentenoe 2 жыл бұрын
Hola buen video, consulta: Puedo de un caso de uso llamar a otro, por ejemplo tengo servicios que realizan acumulaciones otros que realizan canje, pero nace un tercero que es una reversa que debe cancelar las transacciones de canje y acumulacion que estan en dichos casos de uso, y despues generar nuevas a partir de las diferencias dependiendo de si una reversa es parcial o total, podria llamar en mi caso de uso de reversa a mi caso de uso de acumulacion y de canje??
@samuelcd80
@samuelcd80 8 жыл бұрын
Me he metido un poco en esto de la arquitectura hexagonal, y ando un poco liado, se me esta haciendo muy difícil separar el dominio de la Base de Datos, tengo la sensación de estar haciendo las cosas 2 veces. Tengo el dominio por un lado y por otro Base de Datos, que tiene una estructura igual. Aquí empiezan las teorías. Se hace una petición al Aplication Sevice, solicitando un usuario por la id, ¿este llama a al adaptador de persistencia y se instancia un objeto del modelo? Para eso el modelo y la base de datos tendrán de alguna manera que coincidir. Una manera de coincidir sería que los dos objetos tuvieran una interfaz común y eso para cada uno de los objetos del modelo. No se si estoy desvariando, pero vamos la sensación de estar duplicando cosas es patente. Esperando tu siguiente video con impaciencia y muchas gracias por todo.
@CodelyTV
@CodelyTV 7 жыл бұрын
En futuros vídeos hablaremos de esto, pero en resumen, el esquema que plantearíamos para el ejemplo que comentas sería: Petición llega a Application Service (AS) -> Éste llama al Servicio de Dominio (DS) `UsersFinder` -> Éste tiene inyectado una instancia concreta de la interface `UserRepository` (por ejemplo `MySqlUserRepository`) -> El DS llama al repositorio -> El repositorio obtiene los datos de la base de datos, construye la instancia de `User` y la devuelve. Consideraciones: * El DS se acopla a la interface `UserRepository`, en ningún caso conoce ninguna implementación concreta como la `MySqlUserRepository`. * La interface `UserRepository` vive dentro del dominio * La implementación `MySqlUserRepository` vive en infraestructura * Quién decide qué implementación de `UserRepository` inyectar en el DS es el inyector de dependencias. Si tienes dudas al respecto, te recomendamos que le eches un ojo al vídeo sobre el Principio de Inversión de Dependencias: kzbin.info/www/bejne/i5SbeX6LjdppadE Si quieres hacer un repo de ejemplo en GitHub para que le echemos un ojo y te demos feedback, encantados! :D ¡Saludos!
@samuelcd80
@samuelcd80 7 жыл бұрын
Muchas gracias por contestar, he ido investigando por mi cuenta, y tengo muchas ganas de ver evulucionar este tema.
@10crack8
@10crack8 6 жыл бұрын
Lástima que esto se quedara solo en un vídeo y no siguiera con este tema, ya que lo explica muy bien. Faltó que hiciera un par de videos más mostrando donde crearía los "ports" y los "adapters" y los utilizaría. Ahora ya está en el yate y se ha olvidado ;).
@CodelyTV
@CodelyTV 6 жыл бұрын
Muy buena la del yate 😂😂😂. A pesar de haber lanzado CodelyTV Pro seguimos publicando en el canal 🙂. Toda la serie de antipatrones de test es lo último que hemos publicado: kzbin.info/www/bejne/jpPOm4iwZ5Wjhc0 Si te interesan temas de CQRS y DDD, justo tenemos el curso en CodelyTV Pro que le puedes echar un ojo 🙂
@CodelyTV
@CodelyTV 6 жыл бұрын
Curso completo de Arquitectura Hexagonal ya disponible 🎉 pro.codely.tv/library/arquitectura-hexagonal/about/ Por sólo 30€, curso paso a paso cubriendo todos los conceptos de Arquitectura Hexagonal 🙂
@chicoxin
@chicoxin 2 жыл бұрын
Muy guay pero como manejas la inyección de dependencias?
@aibou2399
@aibou2399 2 жыл бұрын
Cuales serían los 6 lados del hexagono? o porque le llaman así?
@randyhectorbartumeuhuergo9736
@randyhectorbartumeuhuergo9736 7 жыл бұрын
Saludos, la serie de videos acerca de este tema va a continuar???
@CodelyTV
@CodelyTV 7 жыл бұрын
+Randy Hector ayer grabamos uno sobre composition over inheritance. Tema ligado al concepto de puertos y adaptadores 🙂
@randyhectorbartumeuhuergo9736
@randyhectorbartumeuhuergo9736 7 жыл бұрын
Genial, espero con ansias que se siga hablando de este tema y la lista de videos siga en aumento. Genial trabajo por cierto sigan asi.
@CodelyTV
@CodelyTV 6 жыл бұрын
Curso completo de Arquitectura Hexagonal: pro.codely.tv/library/arquitectura-hexagonal/about/ Por 30€ curso completo cubriendo todos los conceptos de Arquitectura Hexagonal 🙂
@CarlosWolfram
@CarlosWolfram 3 жыл бұрын
Segundo 5 y quiero ser honesto. No voy a entender un carajo, pero lo voy a ver, gracias xD
@CarlosWolfram
@CarlosWolfram 3 жыл бұрын
Ojala pudieran explicar eso en php puro xD que me interesa pero no le entiendo nada
@joseluisiglesiasferia9484
@joseluisiglesiasferia9484 3 жыл бұрын
Enlace a Post de Fideloper: fideloper.com/hexagonal-architecture
@gvivetmvc2144
@gvivetmvc2144 7 жыл бұрын
Hola tengo una duda, actualmente estoy utilizando como persistencia de datos el ORM Entity Framework no he terminado de entender donde se disparan los eventos, en la ejecución de los servicios de la capa de aplicación o en la capa de dominio?
@CodelyTV
@CodelyTV 7 жыл бұрын
Aquí tienes un vídeo donde comentamos justamente esto que planteas: kzbin.info/www/bejne/l6aomYtqjMt2iKMm10s (minuto 13:10)
@gvivetmvc2144
@gvivetmvc2144 7 жыл бұрын
Ostras que rapidez, voy a mirar. Muchas gracias por la información y animo con el canal. SIEMPRE ES DE AGRADECER el conocimiento con los demás, así que , gracias de verdad. Saludos des de Mollet!!
@masonemunk
@masonemunk 3 жыл бұрын
Dónde habéis estado el resto de mí vida??
@ivancordobadonet5432
@ivancordobadonet5432 5 жыл бұрын
Se podría hacer esta estructura en angular?
@kennykanp5320
@kennykanp5320 4 жыл бұрын
Quizá tendrías que buscar como Designe Pattern.
@juanestebancastanorincon9417
@juanestebancastanorincon9417 7 жыл бұрын
Buenas tardes, excelentes vídeos, gracias por compartir, una pregunta siguiendo el ejemplo de registro de usuario: Seria correcto tener lo siguiente: un application service que se llame UserApplicationService (Con las operaciones crud) que invoque a un UserDomainService (Con las mismas operaciones crud) que invoque a un UserRepository cuya implementacion es mysql, pongo esta pregunta porque tengo varias dudas (En este ejemplo no se tiene ninguna lógica de negocio mas que solo guardar consultar y eliminar información) 1. Es correcto usar un aplication service y un domain service que tengan los mismos 4 metodos (insertar, actualizar, borrar, consultar) o en este caso me sobra alguno de los 2? 2. Que reglas se deben seguir para nombrar un domain service? cuando usar un domain service? es siempre obligatorio? 3. En este caso que son solo operaciones crud es necesario tener un aplication y domain service? 4. Los objetos de dominio deben ser inmutables? Mil gracias y quedo atento
@kakenn20
@kakenn20 2 жыл бұрын
En mi opinión para hace crud (puro) estas arquitecturas no tienen sentido, por la complejidad que conlleva el uso de abstracciones. Entiendo que no estás modelando bien el problema y por eso tienes un modelo que aplica solo crud (modelo anémico posiblemente)
@joabelfa
@joabelfa 7 жыл бұрын
Hola, muy buen vídeo. Una pregunta, dentro de la arquitectura hexagonal, si tengo que "parsear" un xml o json a estructuras del dominio, debería tener-lo como funciones individuales dentro de cada objecto (por ejemplo en Device) o sería mas bien una clase separada con toda la funcionalidad? Como se actúa de normal con el tema del parseado? Muchas gracias.
@joabelfa
@joabelfa 7 жыл бұрын
Creo que haré una clase abstracta Parser y que hereden las implementaciones (JSON XML con diferentes librerías) y el objecto encargado de recibir los mensajes que tenga una objeto Parser.
@CodelyTV
@CodelyTV 7 жыл бұрын
Buenas Xu An! Nuestra opinión sobre lo que planteas: El código de marshaller/serialización NO debería estar en el modelo de dominio. Esta fuente de información (XML, JSON, etc.) entendemos que proviene de una fuente de información externa y, como tal, debería ser algo perteneciente a la capa de infraestructura y no de dominio. De esta forma, si cambia la definición por parte de este servicio externo, nuestro dominio NO cambiaría, sólo el adaptador de este servicio de terceros. Además, en nuestra opinión, preferiríamos tener una interface con la que interactuar y que ésta sea implementada por las distintas opciones (interface `Device\Infrastructure\DeviceMarshaller` e implementaciones `Device\Infrastructure\DeviceJsonMarshaller` y `Device\Infrastructure\DeviceXmlMarshaller`). Incluso entendemos que estas implementaciones no estarían ligadas tanto al estándar de definición que sigan (XML o JSON), si no a la fuente real de datos. Así entonces, asumiendo que vienen de un sistema externo de terceros llamado "CodelyTvWarehouse" y "OtroMolonWarehouse", tendríamos algo como `Device\Infrastructure\CodelyTvWarehouseDeviceMarshaller` y `Device\Infrastructure\OtroMolonWarehouseDeviceMarshaller`. Si necesitas más info sobre esto, te recomendamos que veas el vídeo de Dependency Inversion Principle: kzbin.info/www/bejne/i5SbeX6LjdppadE Si subes el código a un GitHub o algo, encantados de dar feedback al respecto! :)
@joabelfa
@joabelfa 7 жыл бұрын
Ah perfecto. Me parece también buena idea nombrar las clases dependiendo del origen de los datos y no del tipo de parseado. Me interesa mucho el tema del DDD, que libro me recomendáis: Domain-Driven Design Distilled (Vernon Vaughn) o Domain-Driven Design:Tacklin​g Complexity in the Heart of Software (Evans Eric), alguna otra opción? Muchas gracias por vuestra respuesta. Saludos.
@asier6734
@asier6734 2 жыл бұрын
Buena explicacion pero el enfoque es mas procedural que OO. Ya que el dominio deberia estar diseñado con la OO en mente. Y la capa de aplicacion solo contener los casos de uso particulares de una aplicacion. Por otro lado, si la capa de aplicacion define la atomicidad ya es dependiente de una tecnologia cuando se supone no deberia serlo. Al entender que dominio y aplicacion son agnosticas, estan libres de tecnologias/frameworks. Podria ser necesario añadir una capa por encima de la de aplicacion para definir solamente la transaccionalidad (que ya nos crea una dependencia tecnologica).
@AlexB-dd6ho
@AlexB-dd6ho 4 жыл бұрын
Es sencillo... la arquitectura de software es un conjunto de componentes con responsabilidades unicas, sus relaciones y su lugar de despliegue...No es necesario hablar de clases cuando se habla de arq de sw...
@centineladeisrael
@centineladeisrael 10 ай бұрын
Hablas mucho
@valp_co
@valp_co 2 жыл бұрын
La arquitectura hexagonal ni existe, ni es hexagonal y tampoco es arquitectura
Estructura de carpetas - 🐘 DDD en PHP (y otros lenguajes)
18:56
CodelyTV - Redescubre la programación
Рет қаралды 37 М.
Domain Driven Design en 10 minutos // ¿Qué es y cuando usarlo?
15:15
The Coder Cave esp
Рет қаралды 28 М.
HOW DID HE WIN? 😱
00:33
Topper Guild
Рет қаралды 45 МЛН
Can You Draw A PERFECTLY Dotted Circle?
00:55
Stokes Twins
Рет қаралды 40 МЛН
Я нашел кто меня пранкует!
00:51
Аришнев
Рет қаралды 4,7 МЛН
3M❤️ #thankyou #shorts
00:16
ウエスP -Mr Uekusa- Wes-P
Рет қаралды 15 МЛН
Arquitectura Hexagonal: Una Introducción
9:44
NetMentor
Рет қаралды 2,3 М.
Arquitectura - API REST + DDD + CQRS + MediatR + Vertical Slices
1:00:04
Por qué no puede haber SOLID sin Eventos de Dominio
21:14
CodelyTV - Redescubre la programación
Рет қаралды 11 М.
Event Driven Architecture EXPLAINED in 15 Minutes
14:55
Continuous Delivery
Рет қаралды 20 М.
Errores comunes al diseñar Interfaces - #SOLID - ISP
9:56
CodelyTV - Redescubre la programación
Рет қаралды 26 М.
Mejora la Calidad de tu Código utilizando Repositorios
11:24
CodelyTV - Redescubre la programación
Рет қаралды 24 М.
Arquitectura Hexagonal ¿Cuándo y por qué?
59:35
DesarrolloWeb.com
Рет қаралды 12 М.
Aprende DDD en 20 minutos ⚡ | Domain-Driven Design
20:56
CodelyTV - Redescubre la programación
Рет қаралды 210 М.
¿Por qué Debes Aprender ARQUITECTURA de SOFTWARE?
20:34
hdeleon.net
Рет қаралды 28 М.
НЕ ПОКУПАЙ СМАРТФОН, ПОКА НЕ УЗНАЕШЬ ЭТО! Не ошибись с выбором…
15:23
Samsung Galaxy Unpacked July 2024: Official Replay
1:8:53
Samsung
Рет қаралды 23 МЛН
КРУТОЙ ТЕЛЕФОН
0:16
KINO KAIF
Рет қаралды 5 МЛН
تجربة أغرب توصيلة شحن ضد القطع تماما
0:56
صدام العزي
Рет қаралды 53 МЛН
Я УКРАЛ ТЕЛЕФОН В МИЛАНЕ
9:18
Игорь Линк
Рет қаралды 115 М.