Construyendo arquitecturas hexagonales enAWS - AWS Guía prescriptiva

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.

Construyendo arquitecturas hexagonales enAWS

Furkan Oruc, Dominik Goby, Darius Kunce y Michal Ploski, Amazon Web Services (AWS)

Junio de 2022 (historial del documento)

Esta guía describe un modelo mental y una colección de patrones para desarrollar arquitecturas de software. Estas arquitecturas son fáciles de mantener, ampliar y escalar en toda la organización a medida que aumenta la adopción de productos. Los hiperescaladores en la nube, como Amazon Web Services (AWS), proporcionan elementos básicos para que las pequeñas y grandes empresas innoven y creen nuevos productos de software. El rápido ritmo de introducción de estos nuevos servicios y funciones lleva a las partes interesadas de la empresa a esperar que sus equipos de desarrollo prototipen los nuevos productos mínimamente viables (MVP) más rápido, de modo que las nuevas ideas puedan probarse y verificarse lo antes posible. A menudo, esos MVP se adoptan y pasan a formar parte del ecosistema de software empresarial. En el proceso de creación de estos MVP, los equipos a veces abandonan las reglas y las mejores prácticas de desarrollo de software, como los principios de SOLID y las pruebas unitarias. Asumen que este enfoque acelerará el desarrollo y reducirá el tiempo de comercialización. Sin embargo, si no logran crear un modelo fundamental y un marco para la arquitectura de software en todos los niveles, será difícil o incluso imposible desarrollar nuevas funciones para el producto. La falta de certeza y los requisitos cambiantes también pueden ralentizar al equipo durante el proceso de desarrollo.

Esta guía describe una arquitectura de software propuesta, desde una arquitectura hexagonal de bajo nivel hasta una descomposición organizacional y arquitectónica de alto nivel, que utiliza el diseño impulsado por el dominio (DDD) para abordar estos desafíos. El DDD ayuda a gestionar la complejidad empresarial y a ampliar el equipo de ingeniería a medida que se desarrollan nuevas funciones. Alinea a las partes interesadas comerciales y técnicas con los problemas empresariales, denominados dominios, mediante el uso de un lenguaje ubicuo. La arquitectura hexagonal es un facilitador técnico de este enfoque en un dominio muy específico, denominado contexto acotado. Un contexto acotado es una subárea altamente cohesionada y poco acoplada del problema empresarial. Le recomendamos que adopte una arquitectura hexagonal para todos sus proyectos de software empresarial, independientemente de su complejidad.

La arquitectura hexagonal alienta al equipo de ingeniería a resolver primero el problema empresarial, mientras que la arquitectura clásica en capas desvía el enfoque de la ingeniería del dominio y pasa primero a resolver los problemas técnicos. Además, si el software sigue una arquitectura hexagonal, es más fácil adoptar un enfoque de desarrollo basado en pruebas, lo que reduce el ciclo de retroalimentación que los desarrolladores necesitan para probar los requisitos empresariales. Por último, el uso de comandos y controladores de comandos es una forma de aplicar los principios de responsabilidad única y apertura y cierre de SOLID. El cumplimiento de estos principios crea una base de código que los desarrolladores y arquitectos que trabajan en el proyecto pueden navegar y entender fácilmente, y reduce el riesgo de introducir cambios importantes en la funcionalidad existente.

Esta guía es para arquitectos y desarrolladores de software que estén interesados en comprender los beneficios de adoptar la arquitectura hexagonal y la DDD para sus proyectos de desarrollo de software. Incluye un ejemplo del diseño de una infraestructura para su aplicaciónAWS que sea compatible con la arquitectura hexagonal. Para ver un ejemplo de implementación, consulte Estructurar un proyecto de Python en arquitectura hexagonal mediante elAWS Lambda sitio web de AWS Prescriptive Guidance.