SensediaSensediaSensediaSensedia
  • API Products
    • API Platform
    • API Governance
    • Event-Driven Architecture
    • PCI
    • Flexible Actions
  • API Services
    • Sensedia Professional Services
  • Solutions
    • APIs para Aseguradoras​
    • Open Banking
    • Retail & E-commerce
  • Blog
  • Contacto
    • Contacto
    • Clientes
  • Carrera
  • Español
    • Portugués, Brasil
    • Inglés

Estándar de Arquitectura Hexagonal

    Home Sin categorizar Estándar de Arquitectura Hexagonal
    padrão de Arquitetura Hexagonal

    Estándar de Arquitectura Hexagonal

    By Morvana Bonin | Sin categorizar | 0 comment | 27 agosto, 2020 | 0

    Con la llegada y crecimiento de la adopción de la Arquitectura de Microservicios, también crece la demanda por estándares arquitecturales que puedan ayudar en la creación e implementación de estos servicios. La elección de un estándar arquitectural puede ayudar mucho en esta jornada. La idea de este artículo es mostrar un poco sobre el estándar de arquitectura Hexagonal y explicar sus ventajas y algunas desventajas y cómo utilizarlo.

     

    Recordando que no existe bala de plata y toda elección trae un costo, entonces vale resaltar que es aconsejable conocer varias herramientas, sus ventajas y costos y escoger aquella cuyo costo sea bajo cerca de las ventajas.

    Estándar de Arquitectura Hexagonal

    Hay una frase que escuché cierta vez en la vida, pero la traje para adentro del desarrollo de software también, y que para mí tiene sentido, que dice lo siguiente:

     

    “Una persona inmadura piensa que todas sus elecciones generan beneficios… una persona madura sabe que todas las elecciones tienen pérdidas.” (Augusto Cury)

     

    En suma, como dije anteriormente y reforzando, mientras más herramientas usted conozca, mientras más conozca sobre sus ventajas y costos, tiende a hacer una mejor elección de cuál utilizar como solución ante el desafío presentado.

     

    Bueno, sin más demora, vamos al conocimiento del estándar de Arquitectura Hexagonal.

     

    Cree su aplicación para funcionar sin tener ni una UI o base de datos, a la cual usted puede ejecutarle pruebas de regresión automatizada, impleméntela cuando la base de datos no está disponible y conecte aplicaciones sin involucrarlas. (Alistair Cockburn)

     

    Así comienza el artículo, documentación en el sitio web de Alistair Cockburn, creador del estándar de Arquitectura Hexagonal o también conocido como estándar de puertos y adaptadores.

     

    Uno de los motivos de la creación de este estándar fue principalmente delegar la parte de infraestructura y UI (User Interfaz) del proyecto y preocuparse con la regla de negocio y en dejarla funcional, además de no mezclar la regla de negocio en la base de datos ni en la parte de UI de un proyecto.

     

    La arquitectura hexagonal se divide en 3 partes

    • Centro del hexágono
    • Lado izquierdo del hexágono
    • Lado derecho del hexágono

     

    En este escenario tenemos a los actores que interactuarán con el centro del hexágono, tenemos 2 actores

    El actor primario conducirá una acción

    El actor secundario será conducido.

     

    Una duda común es la diferencia entre los actores, ¿quiénes son los actores primarios de mi aplicación? ¿Quiénes son sus actores secundarios?

    Para responder esta pregunta es necesario hacer otra “¿Quién inicia la conversación?”, o sea, ¿quién es el gatillo que inicia el flujo, que hace una acción?

     

    Al responder esta cuestión usted tendrá a los actores primarios, no interesa si es una persona, otro sistema, un script en bash que llama a su adapter, si él acciona un gatillo que llama al core business de su aplicación, entonces él es el actor primario.

     

    El actor secundario será entonces conducido a ejecutar una determinada acción que el actor primario disparó, siendo grabar datos, logarlos, o incluso llamar a una tercera aplicación y obtener una respuesta, retornando al actor primario.

     

    El centro del hexágono

    Es donde se sitúan sus modelos, dominios, reglas de negocio de su software, es un ambiente que debe ser totalmente aislado en términos de no ser afectado por ocurrencias externas, ejemplo, base de datos que será utilizada, framework frontend.

     

    Lado izquierdo del hexágono

    Es el lado del actor primario, user-side, que conduce una acción, siendo este el del usuario que ejecuta alguna tarea.

     

    Lado derecho del hexágono

    Es el lado del actor secundario, data-side, que es conducido, ya sea para grabar datos, leer datos, modificar datos y borrar datos.

     

    Puertos 

    Los puertos son el puente de entrada de comunicación entre el centro de su hexágono con los lados izquierdo y derecho de su hexágono, con los lados externos.

     

    Adapters

    Los adapters son los utilizadores de los puertos, para cada puerto que su hexágono tenga un adapter debe ser creado para que usted tenga la libertad de modificarlo, borrarlo de forma dinámica.

     

    En puertos y adapters también tenemos el concepto de puertos primarios y puertos secundarios y el concepto es el mismo explicado sobre los actores, en los actores primarios de nuestra aplicación tenemos los conductores de la acción que usarán los adapters primarios y este a su vez “golpearán” en los puertos primarios, siendo así los puertos y adapters secundarios conducirán la acción hasta el actor secundario en un flujo continuo de la aplicación.

     

    Inversión de Control (IoC)

    En un flujo real, usando como ejemplo la simple grabación de un registro, en este escenario, tendríamos lo siguiente:

    • El lado izquierdo (el conductor) entrega la información, utilizando un adapter y a través del puerto primario, para el centro del hexágono (dominio).
    • El centro del hexágono, a su vez, recibe a través del puerto los datos, los procesa enseguida utilizando un puerto secundario y llama al lado derecho.
    • El lado derecho (el conducido) llama a una base de datos para grabarlos.

     

    Al final tendríamos esto como flujo del Hexágono:

    Lado izquierdo -> Centro -> Lado Derecho

     

    Pero este escenario viola uno de los conceptos de la Arquitectura Hexagonal, que es que el dominio debe ser aislado y cuidar solamente de la regla de negocio, porque en el ejemplo anterior, él tendría que cuidar de llamar a quien hace la grabación.

     

    Para eso nosotros utilizamos el concepto de inversión de control, del inglés Inversion of Control (IoC).

     

    Inversión de control es un estándar que predica que usemos instancias de una determinada clase, tratándola externamente y no dentro de la clase en cuestión, esto significa delegar el control de una clase para otra, puede ser de interfaz, componente, servicio, etc.

     

    En nuestro caso, justamente invertirá el orden de flujo, haciendo que, aun utilizando el ejemplo, nuestra database vaya hasta nuestro centro y no lo contrario, dejando así a nuestro dominio realmente aislado.

     

    Al final este sería nuestro flujo correcto:

    Lado izquierdo -> Centro <- Ioc- Lado Derecho

     

    Puntos Positivos

    Como puntos positivos de utilizar está arquitectura podemos listar los siguientes:

    • Solución Independiente de Servicios Externos
    • Es posible postergar algunas decisiones técnicas
    • Creación y sustitución de adaptadores
    • Facilidad en probar la aplicación.
    • Facilidad en el intercambio de tecnologías.

     

    Puntos negativos

     

    Como no todo son flores, tenemos también algunos puntos negativos en el uso de la arquitectura hexagonal, siendo ellos:

    • Complejidad Extra (construcción de más capas)
    • Costo de creación y mantenimiento.
    • No existe una orientación sobre organización de código (directorios, capas)

     

    Conclusión

     

    La arquitectura hexagonal es considerada como una guía y a partir de ella fueron siendo creados nuevos conceptos arquitecturales con informaciones más granulares en la organización de código (directorios, capas), como ejemplos tenemos la arquitectura onion (Onion Arquitecture) por Jeffrey Palermo y la arquitectura limpia (Clear Arquitecture) por Robert C. Martin (Uncle Bob), las dos hacen referencia al estándar creado por Alistair Cockburn.

    Aunque usted ya opte por seguir la idea de Jeffrey o Uncle Bob, le indico el estudio de la arquitectura hexagonal para entender bien el concepto de aislamiento del dominio y de comunicación del mismo con sus respectivos actores, después de esto, usted verá que será más fácil entender las ideas de otros autores que crearon nuevos conceptos a partir de esta idea inicial.

     

    Referencias

     

    • Arquitectura Hexagonal con Java – https://www.udemy.com/course/arquitetura-hexagonal-com-java-1
    • Hexagonal architecture – https://alistair.cockburn.us/hexagonal-architecture
    • Alistair in the «Hexagone» 1/3 – https://www.youtube.com/playlist?list=PLGl1Jc8ErU1w27y8-7Gdcloy1tHO7NriL
    No tags.
    Morvana Bonin

    Morvana Bonin

    Desenvolvedora backend na Sensedia, analista de sistema formada pela faculdade SENAC-RS de Porto Alegre, curiosa e apaixonada por aprender desde tecnologia até entender certos comportamentos humanos (sim, não fico só no ramo das exatas... hehehe)

    More posts by Morvana Bonin

    Related Post

    • Aumento sazonal na prática

      Capilaridad: el secreto del e-commerce de éxito

      By Nicholas Gimenes | 0 comment

      Para poder hacer que su negocio crezca, es necesario poder alcanzar el máximo de nuevos clientes posibles, además de fidelizar a los clientes antiguos. Este es el primer paso para ser exitoso. En este aspecto,Read more

    • 6 Pasos para definir los KPIs de las APIs

      By Vinicius Balbino | 0 comment

      *actualizado el: 22 de marzo de 2020 Después que su API esté activa, diversas llamadas de varios usuarios ocurren en pequeños períodos de tiempo. ¿Cómo definir el alcance de sus aplicaciones? ¿Cómo definir el éxito?Read more

    • Sensedia API Management como Strong-Performer en Forrester Wave

      Sensedia API Management en el Forrester Wave como Strong Performer

      By Luiz Piovesana | 0 comment

      El 2016 fue de gran expansión para la Plataforma de APIs de Sensedia. No solo por el fortalecimiento de la base de clientes, con la incorporación de nombres como TV Globo, Natura, Azul, Marisa, Netshoes,Read more

    • Sensedia API Management en Gartner Magic Quadrant

      Sensedia como Visionaria en el Gartner API Management Magic Quadrant

      By Lucas Tempestini | 0 comment

      El 2016 fue realmente un año distintivo para la llamada «API Economy». Vimos la consolidación de las APIs como fundamentales para toda Estrategia Digital. En abril de ese año, Rob van der Meulen, en unRead more

    • Open Banking

      ¿Qué es el Open Banking? Promoviendo el futuro de los bancos con APIs

      By Lucas Tempestini | Comments are Closed

      ¿Qué es Open banking y por qué marcará la diferencia? Recuérdate los principales bancos cuando comenzaron a ofrecer servicios digitales, como Internet Banking y las aplicaciones… ¿Cómo se sintió? ¿Fue cómodo, se sintió moderno, conRead more

    • O que é Open Insurance e quais as vantagens de adoção de um Estratégia de APIs no mercado de Seguros

      ¿Qué es Open Insurance?

      By Eduardo Arantes | 0 comment

      *texto contribución de Rafael Rocha – Consultor Sensedia La revolución que las APIs traen para los mercados es bastante grande. Nuevos modelos de negocios, servicios y aplicaciones surgen en una velocidad mucho más rápida deRead more

    • Top 10 Riesgos de Seguridad en la Web (OWASP) y como atenuarlos con API Management

      By Nicholas Gimenes | 0 comment

        Seguridad de APIs y de Apps Datos críticos en la nube, acceso móvil desde todas partes, IoT, Open Banking, plataformas digitales habilitadas por APIs ̶ ¿y la seguridad?, ¿cómo es? Las APIs son laRead more

    • Lo que los CIOs deben saber sobre Ecosistema de Socios

      By Eike Malavasi | 0 comment

        Imagina si todo lo que su empresa necesita crear fuera una plataforma, sirviendo de medio de comunicación para que un puñado de usuarios ingresen contenidos y creen valor para su negocio, constituyendo un ecosistemaRead more

    Leave a Comment

    Cancelar la respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Categorías

    • Analytics
    • APIs
    • Eventos
    • Negocios Digitales
    • Publicaciones Externas
    • Sin categorizar

    Etiquetas

    API API Economy API Gateway API Management APIs Architecture Arquitectura design de APIs DevOps Ecosistema de Socios ESB estrategias digitales Estratégia Digital estratégias digitals Event-driven Eventos Exposición de APIs Gestión de APIs graphql gRPC Iinnovación Innovacion Abierta Innovación Insurtech Integraciones Integración MicroServices Microservicios Modelo de Negocio Monetización Negocios Digitales Notificacion omnicanalidad Open APIs open banking open insurance Plataforma REST RESTful seguridad Seguridad de APIs Service Mesh SOA Transformación Digital Transformación Digitale

    Entradas recientes

    • Black Friday Post – La experiencia de Via Varejo
    • Intégrese con VR Beneficios de forma ágil, simple y segura
    • La importancia de una buena atención de soporte
    • Optimizando Arquitectura Event Driven en Java (desde el bajo nivel)
    • La importancia del uso de métricas en APIs
    • Política de Privacidad
    Copyright © 2020 Sensedia | All Rights Reserved
    • API Products
      • API Platform
      • API Governance
      • Event-Driven Architecture
      • PCI
      • Flexible Actions
    • API Services
      • Sensedia Professional Services
    • Solutions
      • APIs para Aseguradoras​
      • Open Banking
      • Retail & E-commerce
    • Blog
    • Contacto
      • Contacto
      • Clientes
    • Carrera
    • Español
      • Portugués, Brasil
      • Inglés
    Sensedia