Arquitectura Hexagonal Laravel

Este curso pertenece a las siguientes rutas de aprendizaje

Contenido del curso
Introducción keyboard_arrow_down
timer

Desbloquea el curso

Contrata un plan y consigue acceso completo

Crea tu cuenta

¿Ya tienes una cuenta? Inicia sesión

¿Qué aprenderás?

La arquitectura hexagonal o arquitectura de puertos y adaptadores nos ofrece separar la lógica de nuestra aplicación en 3 capas.

Infrastructure
Application
Domain

La idea es simple, alta cohesión y bajo acoplamiento.
Aunque a priori puede sonar complejo, realmente no lo es.

DDD

DDD no es una tecnología ni una metodología, este provee una estructura de prácticas y terminologías para tomar decisiones de diseño que enfoquen y aceleren el manejo de dominios complejos en los proyectos de software.

Dentro de DDD tenemos Layered Architectures o arquitectura por capas, y dentro de estas, la arquitectura hexagonal, que es la que vamos a estar cubriendo en este curso.

Capas de la arquitectura hexagonal

Infrastructure

Ofrece la capa superior de esta arquitectura y es la que nos permite tener contacto con el exterior, por ejemplo el uso de paquetes externos.
Entre otras cosas, en esta capa podemos tener controladores, rutas, migraciones y cualquier cosa necesaria.
A su vez, esta capa es la que se comunica de forma directa con la siguiente: Application.

Application

Ofrece la capa intermedia de esta arquitectura y es la que nos permite conectarnos al dominio.
Esta capa es la que representa los casos de uso de esta arquitectura, crear un curso, actualizar un curso etcétera.

Domain

La capa final y más sensible, aquí va la lógica de negocio de nuestra aplicación y para estar desacoplados del todo no debemos utilizar nada externo, todo debe haber sido construido por nosotros. Entre otros, aquí podemos tener Excepciones del negocio, ValueObjects e información de nuestro repositorio en caso de que aplique, lo cual es muy recomendado.

Directorios conocidos

BoundedContext

Se conoce como BoundedContext aquello que aúna en su conjunto ciertas partes de nuestro sistema que definen una lógica completa, Productos, Usuarios, Carritos podría pertenecer al BoundedContext Shop.

Shared

El uso de la carpeta Shared es muy útil para compartir recursos globales con los BoundedContexts.

Motivaciones de la arquitectura hexagonal

  • Desacoplarnos del framework tanto como sea posible.

  • Ser independientes de la UI.

  • Ser independientes de la BD aplicando el patrón repositorio.

  • Ser más tolerantes al cambio.

  • Alta cohesión.

  • Bajo acoplamiento.

  • Facilitar los tests.

Intención de la arquitectura hexagonal

¿Te imaginas que tras desarrollar una aplicación viene tu superior y te dice que ahora tu aplicación además de ser utilizada a través de la interfaz, también debe ser utilizada a través de API y Consola?
Sin duda es posible, pero la forma en la que has desarrollado tu aplicación sólo sirve para trabajar con la UI y debes volver a picar mucho mucho código.
Para solucionar esto tenemos a nuestra disposición la arquitectura hexagonal, la cual nos permitirá fácilmente llevar a cabo este nuevo reto de forma sencilla, ágil y reutilizando lo ya hecho.

Uso de principios SOLID

En ingeniería de software, SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) es un acrónimo mnemónico introducido por Robert C. Martin (Uncle Bob) a comienzos de la década del 2000 que representa cinco principios básicos de la programación orientada a objetos y el diseño.

Cuando estos principios se aplican en conjunto es más probable que un desarrollador cree un sistema que sea fácil de mantener y ampliar con el tiempo.

Los principios SOLID son guías que pueden ser aplicadas en el desarrollo de software para eliminar malos diseños provocando que el programador tenga que refactorizar el código fuente hasta que sea legible y extensible. Puede ser utilizado con el desarrollo guiado por pruebas, y forma parte de la estrategia global del desarrollo ágil de software y desarrollo adaptativo de software.

S: SRP

Principio de responsabilidad única (Single responsibility principle) La noción de que un objeto solo debería tener una única razón para cambiar.

O: OCP

Principio de abierto/cerrado (Open/closed principle)
La noción de que las "entidades de software deben estar abiertas para su extensión, pero cerradas para su modificación".

L: LSP

Principio de sustitución de Liskov (Liskov substitution principle)
La noción de que los "objetos de un programa deberían ser reemplazables por instancias de sus subtipos sin alterar el correcto funcionamiento del programa".

I: ISP

Principio de segregación de la interfaz (Interface segregation principle)
La noción de que "muchas interfaces cliente específicas son mejores que una interfaz de propósito general".

D: DIP

Principio de inversión de la dependencia (Dependency inversion principle)
La noción de que se debe "depender de abstracciones, no depender de implementaciones".

Puedes ver un artículo completo con ejemplos de principios SOLID aquí.


Si estás interesado en aprender a aplicar arquitectura hexagonal en Laravel, no te puedes perder este curso.

Requisitos

  • Experiencia en desarrollo web de 5 años o más.
  • Experiencia sólida en Laravel.
  • Muchas ganas de aprender.


¿A quién va dirigido el curso?

Desarrolladores Laravel que deseen aprender a aplicar arquitectura hexagonal en Laravel a partir de un ejemplo sencillo pero que te ayudará a dar los primeros pasos utilizando buenas prácticas de programación.

¿Qué hacer en caso de dudas durante el curso?

Este curso cuenta con su foro para resolver dudas relacionadas con sus clases. Para solicitudes adicionales de temas que no estén cubiertos en este curso más existirán nuevos cursos a futuro con nuevo contenido.

Cursos relacionados

Acerca del autor

Desarrollador con 10 años de experiencia en web y móvil y formador con 7 años de experiencia.
Empecé en el mundo de la programación a raíz de un accidente de trabajo y me tuve que reinventar.
Soy autodidacta, me dedico de forma profesional a desarrollar software y cada día aprendo cosas nuevas.
Apasionado del backend, me encanta todo lo que tiene que ver con procesos y lógica.
Me encanta programar, pero todavía más ayudar a otras personas en su proceso de formación.

Cursosdesarrolloweb

Israel Parra

Php, JavaScript, Laravel, Vue, React, React Native, Svelte, Serverless

Valoraciones
4.8
star star star star star

6 valoraciones

star star star star star
star star star star star_border
star star star star_border star_border
star star star_border star_border star_border
star star_border star_border star_border star_border
Pedro J.

hace 3 semanas

Pedro J. - Buen curso
star star star star star

Una buena iniciación a la Arquitectura Hexagonal. Esperemos más cursos sobre ello y DDD.

Miguel O

hace 6 meses

Miguel O - Excelente, como siempre muy bien explicado
star star star star star

Gracias por compartir este curso introductorio a lo que serian las bases de arquitectura hexagonal, como siempre muy buenos cursos compartidos! Saludos Israel.

Víctor Ibarra Olivares

hace 11 meses

Víctor Ibarra - Muy buen curso, al grano
star star star star star

Me gusta la explicación oportuna que tiene el curso de cada paso que se realiza. Me gustaría que se implementaran mas ValueObjects

Rogelio Calderón Cervantes

hace 1 año

Rogelio Calderón - Excelente
star star star star star

Me ha gustado bastante la explicación

Jose Chavarria

hace 1 año

Jose Chavarria - Bueno
star star star star star_border

Bien definido para el nivel de complejidad y como curso de como empezar DDD en Laravel, aunque se siente que hay ciertas reglas que se rompen

Angel sepulveda

hace 1 año

Angel sepulveda - Excelente!!!
star star star star star

Excelente curso, explica muy bien como aplicar la arquitectura hexagonal dentro de un proyecto laravel

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto