¿Qué es la Arquitectura Hexagonal? | Puertos y Adaptadores
HTML-код
- Опубликовано: 30 июл 2024
- Conoce la increíble arquitectura hexagonal! Aprende de qué se trata. Verás un ejemplo en Java de cómo se implementa desde cero.
Artículo Original: alistair.cockburn.us/hexagona...
¿Tienes alguna duda que quieres que revise en vivo? Considera hacerte miembro del canal: / @manuelzapata
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
00:00 - Introducción y bienvenida
00:43 - Estructura general
03:20 - Ejemplo gráfico con puertos y adaptadores
06:26 - Comparación con la arquitectura de 3 capas
07:11 - Inversión de dependencias en la arquitectura hexagonal
08:19 - Ejemplo en Java
13:24 - Actores primarios
13:43 - Actores secundarios
14:16 - Preguntas frecuentes
16:46 - Conclusiones y cierre
#ArquitecturaHexagonal #PuertosAdaptadores #ArquitecturaSoftware #ManuelZapata Наука
Conoce mi curso de Arquitecturas Limpias
👉platzi.com/arquitecturaslimpias
Si no te tienes suscripción en Platzi, usa mi enlace de afiliado: platzi.com/l/manuelzapata/
Manuel seria genial que vovieras a hacer videos, ni te imaginas lo mucho que mejore como arquitecto contigo. Si sigues al menos yo siempre voy a estar ahi!!
Gracias Eric por tu comentario. No sabes cuánto lo aprecio!
¡Gracias! Fue una explicación muy clara para entender rápidamente
Muchas gracias por la explicación, vengo de hacer aplicaciones monolíticas y me ayudo entenderlo perfectamente. Para mi la mejor explicación de como entender la arquitectura hexagonal.
Muy bien explicado. Me gustó mucho. gracias!
Excelente muchas gracias por la explicación
Manuel, que buen trabajo. Gracias por este valioso aporte!
Que buen video, muchísimas gracias.
Primera vez que veo tus videos y están geniales. Me gustaría ver esto aplicado con SpringBoot o migrando micoreservicios a arquitectura hexagonal.
Que buena explicacipon Manel, excelente correlación entre la explicación teórica y la parte practica.
Excelente presentacion! Muy buen trabajo Manuel
excelente explicación amigo. Gracias!
¡Excelente vídeo, Manuel!
Sería genial que toques el tema de Clean Architecture, se ve muy interesante al igual que DDD.
Listo Geovanny! Gracias por la recomendación.
@@ManuelZapata Estoy de acuerdo con Geovanny, creao que deberias tocar mas el tema Clean Architecture.
Esperando clean architecture :)
Excelente video, esa información me esta sirviendo una tonelada, y lo practico que haces los ejemplos, muchas gracias manuel
Me alegra mucho leer eso! 🙌 Saludos Juan!
gracias!!! messirve,quiero aprender mucho mas
Excelente hermano, gracias!
Muchas gracias por el video. Muy buen material.
Excelente Jhonny. Gracias!
Gracias Manuel!!!!
Excelente vídeo, me gustaría que profundizaras más en los detalles de la implementación de esta arquitectura con DDD y con clean porfa
¡Muy buen video!
Gracias Coderos! 💪
Muchas gracias muy buen tema.
Con gusto Den!
uuufff que bien, muchas dudas resueltas, se te agradece crack
Para eso estamos Martin! 🙌
Excelente video Manu, recientemente estoy tratando de aprender arquitectura y tu canal es una joya es bastante fácil entender los conceptos y empezar a llevarlos a mis proyectos, gracias por tu aporte
Con todo gusto Fer!
Muy buena introduccion y muy interesante canal!
Excelente explicación, habia escuchado hablar sobre esta arquitectura, pero no sabia en que consistia, ahora todo tiene sentido gracias por compartir ;)
Es con todo gusto, Carlos!
Manuel eres un PRO... muy claras tus explicaciones me gustaría escucharte hablando de MVVM
Voy a proponerlo para futuros temas, a ver qué tanto interés genera. Saludos!
Muy bueno me sirvio el video te agradezco por compartirlo
Que bueno, Damián!
Excelente Manuel, esto nos da un mejor panorama para modelar de mejor forma nuestras aplicaciones, sería interesante se continuara con este mismo tema profundizando en temas que consideres relevantes. Gracias. Saludos
Gracias Diego! Voy a continuar esta serie.
Muchas gracias Manuel
Con todo gusto Leandro!
Muchas gracias Manuel!
Con gusto!
Excelente video! Encantado de conocerte, ya me suscribí
Bienvenido Alvaro por estos lados!
Se agradece crack, mil gracias
Con el mayor de los gustos, Luis!
Gracias
Buen vídeo. Gracias. Siempre había tenido ciertas dudas sobre como explicar el por que de usar los repositorios.
Me hiciste pensar en un vídeo explicando los repositorios 🤔. Saludos Stivenson!
Excelente vídeo
Visto en 03/03/2021
Hola Manuel, nuevamente la sacaste del estadio... Excelente explicación, nos permite tener un panorama más claro de esta arquitectura y principalmente que nos aclaraste que NO necesariamente hexagonal y DDD deben ir de la mano, era algo que me entendía. Sería bueno una serie de videos con ejemplos de cómo implementar la aplicación del hexagono (lógica de negocio) utilizando diferentes patrones arquitectonicos como capas, quizá microservicios, etc... y principalmente con DDD...
Me alegra que te haya gustado el vídeo Jhon Fredy. Lo prometido es deuda!
Poco a poco iremos profundizando en estos temas. Hay mucho por explicar y decir. Lo bueno es que este vídeo ha gustado. Seguiremos profundizando l! 🙌
Videasaso!!
Buen video!
Gracias!
Muy buen video
Gracias Cesar!
Buen video Manuel, sería muy bueno 2 cursos, uno abstracto para modelar el negocio con DDD, y otro bien aplicado con clean architecture
Vamos a ver como profundizamos en el tema. DDD es un tema muy amplio y complejo. Gracias por la sugerencia!
Gracias Manuel, que bueno un video donde nos muestres como utilizar DDD y arquitectura limpia en el desarrollo de una Aplicación.
Genial Jairo! Para allá vamos. Tengo que abordar unos conceptos primero antes de saltar a esos temas.
Excelente video tienes un nuevo sub.
Bienvenido por aqui DevGuerrero!
Súper el video, hay pocos recursos en español te felicito, deberías hacer tmb sobre clean architecture, cqrs
Esos son 2 de mis grandes pendientes. Saludos Gabriel.
Me suscribo para ver más tarde este video!
Hola. Tienes de pronto el git del proyecto para ir siguiendo el codigo?
Buenas, me gustaría un video donde comparemos los pro/contra, o similitudes/diferencias entre clean architecture y vertical slice architecture
Buena idea!
NIce!!!!👍 ...cuando puedas profudiza sobre DDD ...gracias
Vale! De DDD hay mucho que hablar. De a poco lo iremos abordando.
Súper chevere Manual, sería bueno hablar también de monolitos modulares. Saludos.
Anotado Oscar. Gracias por la recomendación!
Hola Manuel, chévere el vídeo, me gustaría cuando hablaras de clean architecture profundizar entre enterprise business rules y application business rules. Es un tema de mucha controversia, de igual manera las rules exceptions
Entendido Andrés! Vamos a ver cómo lo abordamos
A aplicar lo escuchado...
🙌
Hola Manuel excelente video. Quisiera preguntarte como aplicar diferentes bases de datos como Mysql, Sql server y Postgres para que trabaje con una aplicación en angular 9 y nodej.js, sin usar ORM sino procedimientos almacenados y funciones propias.
No puedo darte mayores detalles porque nunca he hecho esa implementación, pero supongo que una vez descubras como llamar un procedimiento almacenado desde Node.js, habrás resuelto lo más difícil.
Siendo bien puristas en el Clean Architecture con arquitectura hexagonal, si lo voy a implementar en un proyecto con jpa las entidades de anotadas con jpa deberían estar aparte de la capa APPLICATION. Es decir las entidades anotadas con JPA deberían hacer parte de Database API ?
Cómo manejas las llaves foraneas entre diferentes api ?
gracias, buen vídeo!
A qué te refieres Luis? Podrías elaborar un poco más?
Gracias por la información. Cuando las diferentes capas de una arquitectura están en diferentes lenguajes, cómo se acoplan?
REST o mensajería son alternativas para esto. Te recomiendo este video: ruclips.net/video/JQEI2MZg82Q/видео.html
Excelente.
Manuel el enfoque del testing en este tipo de arquitecturas como sería? .
En relación a unitarias, integración ( componentes, contract test) y E2E
La idea es que las pruebas también accedan a la aplicación a través de un puerto. Saludos!
Primero vi este video y no me quedó muy claro, pero luego de profundizar bastante en los principios SOLID, volví a verlo y ahora sí me quedó super claro.
Podríamos decir que Springboot está orientado a esta arquitectura cuando usamos JPA por ejemplo?
No necesariamente Gabriel. El uso de JPA y Spring Boot no te garantiza que se siga una arquitectura hexagonal.
Muy buen videoo justo voy a empezar a ver eso donde trabajo, una consulta la arquitectura hexagonal se le considera clean architecture? Saludos
Saludos Kevin. La arquitectura hexagonal es una de las arquitecturas en que se inspiró Clean Architecture. Son dos cosas diferentes.
Sin embargo, hay personas que hablan de las "arquitecturas limpias", como una categoría, y ahí ponen hexagonal, cebolla, y otras.
En la arquitectura hexagonal con DD crea un arquitectura donde, es una manera como lo veo la primera capa recibe la información en un formato DTO y valida el tema de seguridad (Si tiene acceso o no) la segunda capa ya es la validación de información, previa conversión de DTO a estructura de datos y se valida si cumple con los datos necesarios para ejecutarla el proceso de lógica de negocio que es la tercera capa donde se ejecutan las actualizaciones, registro de los mismos, agregar, eliminar, procesos, etc. que te parece
Alguien conoce algun tuto donde se aplique este tipo de arquitectura en C#, Laravel, Flutter ?
Muchas gracias por el contenido! Se agradece más contenido de este estilo con DDD, TDD y BDD
Hola Manuel, estoy desarrollando software en esta arquitectura(+DDD), y me gustaría documentar bien el trabajo. (En la empresa en la que estoy trabajando tienen muy malos hábitos).
Estaba viendo en hacerlo en C4, pero la verdad se vuelve bastante complicado por las ideas y venidas que tiene el recorrido de la información. Que me recomiendas?
El modelo C4 es muy útil. Lo que yo haría es eliminar los detalles que no sean estrictamente relevantes. Hay cosas simples, como los CRUDs que no necesitan representarse en los recorridos de información.
@@ManuelZapata muchas gracias por el consejo!
Podrías explicar cómo implementar ddd, clean architecture, hexagonal en lenguajes como no tipados como python? Porque si bien se vende como que estas arquitecturas son agnósticas del lenguaje, despues cuando uno busca ejemplos de implementación en kotlin o java hay muchos ejemplos y de python por ejemplo no hay casi nada.
También estaría bueno si puedes comentar por qué crees que sucede esto.
Muy bueno el video!
Hola Lucius! Es interesante lo que comentas. Mi impresión es que hay ciertas arquitecturas que adoptan ciertas comunidades y otras no, y por eso no se ven tantos ejemplos. Es solo una teoría que tengo.
Algunos ejemplos:
Clean Architecture se ve mucho en .NET
Hexagonal la he visto más por los lados de Java
Patrones como Active Record los he visto más por el lado de PHP y Ruby.
Respecto a los otros temas, ya iremos llegando a ellos. Quiero ir explicando las bases antes de saltar a temas más avanzados.
Lo que dices es preciso. Si bien esa arquitectura sirve para proyecto de gran escalabilidad, donde Python precisamente es uno de los que mejor se desenvuelve. Al uno buscar documentación de cómo implementarlo en Python, no hay. Me parece que para las mismas personas que exponen estos temas, se les hace complicado implementarlo en Python. Es mi apreciación.
Muy buen vídeo Manuel unas consulta que diferencia hay entre arq. hexagonal y clean arquitecture. y Al usar estas arquitecturas es obligatorio utilizar ORMs?
Clean architecture toma ideas de la arquitectura hexagonal. El uso de un ORM no es obligatorio. Saludos!
No. Pero deberias temer tus queies lejos de la aplicacion, ofreciendo metodos como findAll o findById etc..
Queries
Buen video manuel pero he intentado ver como se susbribo como miembro pero no se muestra el link en el canal, el video de arquitectura limpia te muestra el de arquitectura hexagonal
Hola Ricardo! Este es el link para que veas toda la información de la membresía: ruclips.net/channel/UCs5ccxrTx9k8DN9YXnHm5AQjoin
Si estás en tu laptop o en computador de escritorio, vas a ver un botón "Unirse" debajo del video. Saludos!
¡ Hola !
soy nuevo en esto de la programación, tengo una consulta,
he visto en varios tutoriales o repositorios hacer referencia a algo llamado Mock, server Mock y cosas así
pero no llego a entender a que se refiere.
¿Alguien me puede explicar esto ? :)
En mi canal tengo un video sobre mocks!
Interesante, entonces lo que accede la lógica del negocio en este caso son las interfaces? En dónde tenemos los métodos comunes de un CRUD?
La lógica de negocio está en la capa de dominio, y las interfaces definen el contrato que se espera implemente la capa exterior.
Los métodos comunes de un CRUD igual van en la capa exterior ya que es la tiene acceso a dependencias de terceros, como la BD.
Me queda la duda, un cronjob, que se ejecuta desde la bdd hacia la aplicación, y luego actualiza al front, sería un actor principal o secundario? Ya que la acción se inicia desde bdd, y va a depender de los datos el cuándo, cómo y qué se gatille, y el front va a ser un mero espectador donde quizás despliega una notificación
En ese escenario, la BD sería un actor primario y el frontend secundario.
Vamos lo de siempre, segmentar, reducir y aislar.
¿Un actor primario podría ser un controlador y en actor secundario un repositorio?
Así es! Esos son muy buenos ejemplos.
Buena explicación, no esta el articulo original en la descripción
Ya está. Te lo dejo por aquí también: alistair.cockburn.us/hexagonal-architecture/
En otras palabras es el modelo vista, controlador, modelo o MVC. o por lo menos el que yo conozco, o como lo entendí.
Últimamente he estado creando, algo relativamente parecido a un framework, pero no lo es, no hace tanto como un framework, pero ya da las bases, resolución de rutas, de controllers, ahora le estoy metiendo ORM para tratar de forma diferente la comunicación a la base de datos.
Lo que me gusto de to video es lo claro que dejaste cada punto, hasta que te pusiste con el código, creo que alli escuche chino mandarin no optimizado. pero igual. Muchas gracias por aclarar varias de mis dudas.
Esto es diferente a MVC, Jorge. En MVC, el acoplamiento entre modelo, vista y control es mucho más marcado.
@@ManuelZapata A poss, yo lo uso mal, porque así como explicas ese modo de programar así hago yo... bueno con algunos cambios adicionales.
Cual es la diferencia entre puertos y adaptadores?
TDD + DDD Real Example
Cómo sería la estructura de carpetas de esta arquitectura, para una aplicación en Python?
En principio necesitas tener una carpeta para el core (lo que en el vídeo se llama aplicación) y otra para la infraestructura. De ahí para allá, pones el resto de detalles.
Búscate en GitHub, que hay varios ejemplos de hexagonal en distintos lenguajes.
Que arquitectura utiliza laravel ?
Buena pregunta. Que algún experto por aquí en Laravel nos aclare.
Cuando un video sobre Clean Architecture?
Ya veremos. Está en la planeación!
Lo que pasa, que un adaptador depende de otro aquí. Si te fijas el console depende de persistence, ya que inicializa el InMemoryMembershipRepository. Esto es normal? (que un adaptador depende de otro???) PD: Gracias por el vídeo! me gustó mucho
Cockburn: Poll4 encendida 😳😳
Me parece genial pero estoy muy perdido. No sé cómo implementar esto ai estoy usando un framework. P. e. justo estoy usando typegraphql y no sé cómo hacerle para desacoplarme porque esta cosa usa las class reflection para generar los schemas y a parte el orm también usa mis classes para ejecutar las migrations... alguien podría darme un consejo para investigar?
Manuel, a la hora de inscribirme a tus mini cursos, nunca termina de cargar la subscripción. Podrías revisar eso... gracias.
Ya pasó un buen tiempo. Espero que se haya podido solucionar. Si no, me cuentas.
Me gusta que haya puesto ejemplos en código pero me cuesta identificar a que capa pertenece las clases e interface que se usa. Sólo logro identificar que la consola hace parte de la capa de infraestructura, pero las demás no puedo identificar a que capa pertenece. Por ejemplo la interface repository
Las interfaces pertenecen al dominio.
ruclips.net/video/glQlG-MeX4w/видео.html podrías opinar sobre lo que se dice en este vídeo de la arquitectura hexagonal a partir del minuto que dejo en el enlace. Gracias
Gracias por el vídeo. Interesante. Lo único es que no estoy de acuerdo cuando dices que se invierte la dependencia y la base de datos depende de la lógica de negocio. Realmente sigue siendo al revés tu lógica de negocio esta acoplada a una interfaz de la base de datos, que es la interfaz del repository. Si bien tienes razón no está acoplada al detalle de la implementación que se puede resolver por inyección de dependencias o como lo hiciste aquí en tu método main.
Habla sobre DDD, posiblemente muchos no estan acostumbrado con el concepto
Posiblemente no, y es muy importante. Ya iré hablando sobre ese tema en el canal. Saludos!
la arquitectura 3 capas de toda la vida no se refiere al código, no es comparable con lo mal llamado hexágono, esto es un patrón de diseño
Eso a fin de cuentas es mvc con otros nombres
¿Por qué lo dices? De qué manera lo relacionas?
Es un parche esa arquitectura hexagonal algo bien construido no lo necesita
Yo no diría que es un parche. Pero si es claro que esto no aplica para todo tipo de sistemas.
Un debate interesante sería definir qué significa que una aplicación esté “bien construida”.
O me he hecho viejo o esto es mucha payasada. Tiene partes de lo que se hace en la arquirectura de microservicios, en la SOA de hace 15 años
Llamarle hexagonal a esto. Enfin el candidato que me saque esto en su cv para dárselas y sea medio senior, lo descarto rapidito
OK
Buena explicacion pero este tipo de arquitectura disque, no traen nada nuevo tan solo cambian nombre a todos.
Podrías profundizar un poco? A qué otras cosas le cambia el nombre?
@@ManuelZapata bueno como por ejemplo puerto por controlador, adaptador por vista, interfaces por puertos y adaptadores secundarios. Tan solo es la arquitectura mvc, o si quieres el estilo arquitectonico tradicional en capas + DIP.