Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ejemplos de infraestructura en AWS
En esta sección se proporcionan ejemplos para diseñar una infraestructura para su aplicación AWS que pueda utilizar para implementar una arquitectura hexagonal. Le recomendamos que comience con una arquitectura sencilla para crear un producto mínimo viable (MVP). La mayoría de los microservicios necesitan un punto de entrada único para gestionar las solicitudes de los clientes, una capa de procesamiento para ejecutar el código y una capa de persistencia para almacenar los datos. Los siguientes AWS servicios son excelentes candidatos para su uso como clientes, adaptadores principales y adaptadores secundarios en una arquitectura hexagonal:
-
Clientes: Amazon API Gateway, Amazon Simple Queue Service (Amazon SQS), Elastic Load Balancing, Amazon EventBridge
-
Adaptadores principales: AWS Lambda Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Compute Cloud (Amazon) EC2
-
Adaptadores secundarios: Amazon DynamoDB, Amazon Relational Database Service (Amazon RDS), Amazon Aurora, API Gateway, Amazon SQS, EventBridge Elastic Load Balancing, Amazon Simple Notification Service (Amazon SNS) Simple Notification Service (Amazon SNS)
En las siguientes secciones, se analizan estos servicios con más detalle en el contexto de la arquitectura hexagonal.
Comience de forma sencilla
Le recomendamos que comience de forma sencilla cuando diseñe una aplicación mediante una arquitectura hexagonal. En este ejemplo, API Gateway se usa como cliente (API REST), Lambda se usa como adaptador principal (procesamiento) y DynamoDB se usa como adaptador secundario (persistencia). El cliente de puerta de enlace llama al punto de entrada, que, en este caso, es un controlador Lambda.

Esta arquitectura es totalmente libre de servidores y proporciona al arquitecto un buen punto de partida. Le recomendamos que utilice el patrón de comandos en el dominio porque facilita el mantenimiento del código y se adapta a los nuevos requisitos empresariales y no funcionales. Esta arquitectura podría ser suficiente para crear microservicios sencillos con unas pocas operaciones.
Aplique el patrón CQRS
Le recomendamos que cambie al patrón CQRS si quiere aumentar el número de operaciones en el dominio. Puede aplicar el patrón CQRS como una arquitectura totalmente sin servidor AWS mediante el siguiente ejemplo.

En este ejemplo, se utilizan dos controladores Lambda, uno para consultas y otro para comandos. Las consultas se ejecutan de forma sincrónica utilizando una puerta de enlace de API como cliente. Los comandos se ejecutan de forma asíncrona utilizando Amazon SQS como cliente.
Esta arquitectura incluye varios clientes (API Gateway y Amazon SQS) y varios adaptadores principales (Lambda), a los que se llama mediante sus puntos de entrada correspondientes (controladores Lambda). Todos los componentes pertenecen al mismo contexto limitado, por lo que se encuentran dentro del mismo dominio.
Desarrolle la arquitectura agregando contenedores, una base de datos relacional y una API externa
Los contenedores son una buena opción para tareas de larga duración. Es posible que también desee utilizar una base de datos relacional si tiene un esquema de datos predefinido y desea aprovechar la potencia del lenguaje SQL. Además, el dominio tendría que comunicarse con el externo APIs. Puede desarrollar el ejemplo de arquitectura para que cumpla con estos requisitos, como se muestra en el siguiente diagrama.

En este ejemplo, se utiliza Amazon ECS como adaptador principal para lanzar tareas de ejecución prolongada en el dominio. Amazon EventBridge (cliente) inicia una tarea de Amazon ECS (punto de entrada) cuando ocurre un evento específico. La arquitectura incluye Amazon RDS como otro adaptador secundario para almacenar datos relacionales. También agrega otra puerta de enlace de API como adaptador secundario para invocar una llamada de API externa. Como resultado, la arquitectura utiliza varios adaptadores principales y secundarios que se basan en diferentes capas informáticas subyacentes en un dominio empresarial.
El dominio siempre está acoplado de forma flexible a todos los adaptadores principales y secundarios mediante abstracciones denominadas puertos. El dominio define lo que necesita del mundo exterior mediante puertos. Como es responsabilidad del adaptador implementar el puerto, el cambio de un adaptador a otro no afecta al dominio. Por ejemplo, puede cambiar de Amazon DynamoDB a Amazon RDS escribiendo un adaptador nuevo, sin que ello afecte al dominio.
Agregue más dominios (amplíe la imagen)
La arquitectura hexagonal se alinea bien con los principios de una arquitectura de microservicios. Los ejemplos de arquitectura mostrados hasta ahora contenían un único dominio (o contexto limitado). Las aplicaciones suelen incluir varios dominios, que deben comunicarse a través de adaptadores principales y secundarios. Cada dominio representa un microservicio y está estrechamente vinculado a otros dominios.

En esta arquitectura, cada dominio utiliza un conjunto diferente de entornos informáticos. (Cada dominio también puede tener varios entornos de procesamiento, como en el ejemplo anterior). Cada dominio define las interfaces necesarias para comunicarse con otros dominios a través de los puertos. Los puertos se implementan mediante adaptadores principales y secundarios. De esta forma, el dominio no se ve afectado si se produce un cambio en el adaptador. Además, los dominios están desacoplados unos de otros.
En el ejemplo de arquitectura que se muestra en el diagrama anterior, Lambda, EC2 Amazon y Amazon ECS se AWS Fargate utilizan como adaptadores principales. API Gateway, Elastic Load Balancing y Amazon SQS se utilizan como adaptadores secundarios. EventBridge