"Arquitectura Hexagonal en Node + Typescript" Samuel Andreo, Full Stack en IBM Londres
Vložit
- čas přidán 22. 04. 2020
- Aprende testing como parte fundamental del desarrollo de software que garantiza la calidad y funcionalidad de una aplicación con el Bootcamp Online QA Testing: geekshubsacademy.com/producto...
¿Alguna vez has tenido que reemplazar en tu proyecto una base de datos? ¿Quizás estas pensando en implementar GraphQL como tu capa de transporte pero te aterra la cantidad de código que tienes que cambiar en tu REST API? Arquitectura Hexagonal te ayuda a controlar estas situaciones, conocerla hará cambiar tu forma de organizar tu código. En esta charla te enseñaré qué es y como aplicarla en tu proyecto con #NodeJS y #Typescript.
Slides: docs.google.com/presentation/...
Repo Github: github.com/samuanv/hexagonal-...
Oficinas IBM Wework: www.wework.com/ideas/growth-i...
Comenta en twitter con el hashtag #MeetupsGeeksHubs.
Contacta con Samuel Andreo a través de su twitter🐦 / samuandreo
🎥 Suscríbete: / geekshubs
🐦 Twitter GeeksHubs: / geekshubs
🐦 Twitter GeeksHubs Academy: / geeks_academy
📸 Instagram: / geekshubs
ℹ️ LinkedIn: / geeks-hubs
🟦 Facebook: / geekshubs
📕 Plataforma online +30 cursos gratuitos: geekshubsacademy.com/
#ArquitecturaHexagonal - Věda a technologie
¡Fantástica explicación! Muchas gracias Samuel, saludos desde tu tierra de limones, playas y pasteles de carne xD
Buenísimo la verdad, muy bien explicado y con un caso práctico y funcional. 👏🏼👏🏼👏🏼
¡Gracias Carlos! Nos alegramos de que te haya podido servir :D
Muy buena charla, con caso de uso práctico y repositorio de ejemplo incluido. Gracias!
Excelente video, muy ilustrativo para Clean Arquitecture
Muy buena charla, buen resumen, muy bien explicado. 10/10
gracias por el video
Excelente platica, muy bien explicado. Gracias
Nos alegramos mucho de que te haya servido, Manuel :)
Acabo de ver el vídeo. Muy bueno la verdad 👏🏻. Se entiende bastante bien cómo funciona la arquitectura hexagonal y la potencia que tiene. Gracias!
Hola Robertz. Nos alegramos mucho que te gustara. Y otra cosa... Enhorabuena ;) Has ganado el sorteo para el Bootcamp Online Agile Software, ponte en contacto conmigo a través de v.rosario@geekshubs.com para dar los próximos pasos. ¡Gracias por estar ahí!
Excelente contenido! no es un tema del que se pueda conseguir información fácilmente y menos en Node. Muchísimas Gracias. Atento por si hay próximas sesiones. Saludos!
Hola Diango! Es genial saber que este contenido es de valor y te ha servido, gracias :) Cada martes y jueves de 18:30 a 19:30 tenemos nueva sesión, un placer que estés y disfrutes de los meetups. Un saludo ;)
Gracias por la charla. Ha sido muy interesante y me ha resultado sencillo de seguir y entender. Este es un ejemplo muy bueno y sencillo para entender qué es la arquitectura hexagonal 👍🏻. Muy buena la parte donde ha explicado cómo escalar las aplicaciones con este tipo de arquitectura en el minuto 32:50 💡👀. Como siempre, gracias también a GeeksHubs por facilitar este tipo de sesiones, un saludo 👋🏻
Siempre en primera fila, Javi! Mola mucho tu feedback. Gracias a ti y nos vemos en el próximo!
I was very curious about how to structure the code in a project that followed the hexagonal architecture, thank you for this presentation!!
Wooow!
Muy buena presentación. Muchas gracias por traer a Samuel y a él por compartir y aportar su conocimiento. Sería fantástico hacer una nueva cata extendiendo el ejemplo APIs GraphQL con Federation para conectar Arquitecturas Exagonales con microservicios a través del Gateway de Apollo Federation ¿Que os parece?
Despues de que mostró el package.json me perdí jajaja, es una arquitectura muy interesante, se agradece la charla
¿te gustaría una segunda parte? Gracias a ti!
Habrá que empezar con la super arquitectura hexagonal 😉
Nunca es tarde para aprender cosas nuevas David :)
He visto videos que usan use cases en vez de iterators es esto válido?
Por mas que no aplique lógica, solo quiero recibir por ejemplo un usuario por id, podría hacerlo tranquilamente desde el controller llamar al repository. Mi pregunta es si o si tiene que pasar por el interactor?
@S Andreo Si quisiera que todos los interactor enviaran errores a un mismo objeto. ese objeto seria otro interactor o repository?, por ejemplo enviar error de logica de negocio a sentry?
Samuel como podrias implementar los Value Objects en este proyecto ?
Sólo comento para entrar en el sorteo 🤫🙏🙏. Buen video igualmente
Hola Javi, este sorteo ya fue resuelto :) ¡Gracias igualmente!
Interesante arquitectura aunque un poco compleja seria bueno más charlas del tema
Tomamos nota! Gracias :)
IBM, tiene desarrolladores full o front?
Es importante recordar que es un patron de arquitectura, solo te dice como construir la estructura, no como diseñarla
consulta, en el controller no deberia haber varios metodos? (uno de saveBooking, getBooking etc?), porque veo que se definio solo una funcion controller y ahi haces el save (mas que nada para saber si se suele hacer o se hace cada interactor en X controller.
Por otro lado lo mismo para el interactor, se crea 1 interactor por accion (en este caso save)? o cada interactor suele tener varias acciones (SAVE, CREATE etc) como si de un servicio se tratase?
Gracias de antemano! muy buen contenido!
Gracias, Juan! En nada está por aquí Samuel resolviendo tus dudas. Volvemos en septiembre con una nueva temporada... Te esperamos ;)
@@GeeksHubsAcademy dale genial, muchas gracias!
Buenas Juan Pablo! Me alegro que te guste ;)
Las funciones del controller las decides tu, en este caso nuestra API solo tiene un endpoint REST, que es POST /booking, es por esta razon que solo tenemos una función ahi.
si tuviera por ejemplo un GET /booking/:id tendria otra funcion llamada getBooking como tu bien dices. tienes razon que exportarlo como BookingController es un poco raro, quizas deberia ser saveBooking.
En cuanto a la segunda pregunta, eso va un poco a tu elección. Sólo deberías llamar una funcion del Interactor desde el controller, pero si esta funcion es muy larga, por supuesto puedes separarla en diferentes funciones.
Si quieres que nos metamos un poco mas a ver codigo, me puedes mandar un MD en twitter: twitter.com/samuandreo
Un saludo!
Donde deberia importar los modelos de sequelize? en datasource ?
Exacto, tu DataSource debería recibir una entidad y encargarse de transformarla a un modelo de sequalize.
El controller de errores que vendria siendo interceptor o repository? @S Andreo
Depende de a lo que te refieras con controller de errores...
Si hablamos de una funcion generica que intercepta excepciones y devuelve errores, yo lo implementaria en la transport layer.
Pero por supuesto si dependiendo del error ejecutas logica de negocio, tienes que hacerlo a nivel de interactor.
@@SamuAnv Si quisiera que todos los interactor enviaran errores a un mismo objeto. ese objeto seria otro interactor o repository?, por ejemplo enviar error de logica de negocio a sentry
Los Modelos de Sequelize vendrian siendo las entidades?
Hola Leonardo,
No, los modelos de Sequelize nunca pueden ser tus entidades porque estarías acoplando la lógica de negocio con el ORM.
El ORM, y todo lo relacionado con el, tiene que estar encapsulado en un DataSource implementando un Repository.
Que pasaria si tienes que cambiar de tu bd SQL con Sequelize a una Mongo con Mongoose?
Teniéndolo encapsulado en tu DataSource solamente tendrias que implementar un nuevo DataSource.
Si quieres que veamos tu caso en concreto me lo dices
No es lo mismo DDD de uncle Bob que CQRS 👁️
No hablo de CQRS en ningún momento (creo).
Cuando digo que Clean Architecture, Hexagonal, etc... son 'lo mismo', me refería a que persiguen la misma idea: Separar la lógica de negocio de las capas de transporte y persistencia.
Quizás debería haber matizado mejor ahi!
Un saludo
Lástima la calidad del video.