Construindo arquiteturas hexagonais emAWS - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Construindo arquiteturas hexagonais emAWS

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

Junho de 2022 (histórico do documento)

Este guia descreve um modelo mental e uma coleção de padrões para o desenvolvimento de arquiteturas de software. Essas arquiteturas são fáceis de manter, ampliar e escalar em toda a organização à medida que a adoção de produtos cresce. Os hiperescaladores de nuvem, como o Amazon Web Services (AWS), fornecem elementos básicos para pequenas e grandes empresas inovarem e criarem novos produtos de software. O ritmo acelerado dessas novas introduções de serviços e recursos faz com que as partes interessadas da empresa esperem que suas equipes de desenvolvimento criem protótipos de novos produtos mínimos viáveis (MVPs) mais rapidamente, para que novas ideias possam ser testadas e verificadas o mais rápido possível. Muitas vezes, esses MVPs são adotados e se tornam parte do ecossistema de software corporativo. No processo de produção desses MVPs, as equipes às vezes abandonam as regras de desenvolvimento de software e as melhores práticas, como os princípios do SOLID e os testes unitários. Eles presumem que essa abordagem acelerará o desenvolvimento e reduzirá o tempo de comercialização. No entanto, se eles falharem em criar um modelo básico e uma estrutura para arquitetura de software em todos os níveis, será difícil ou mesmo impossível desenvolver novos recursos para o produto. A falta de certeza e a mudança de requisitos também podem atrasar a equipe durante o processo de desenvolvimento.

Este guia apresenta uma arquitetura de software proposta, de uma arquitetura hexagonal de baixo nível a uma decomposição arquitetônica e organizacional de alto nível, que usa design orientado por domínio (DDD) para enfrentar esses desafios. O DDD ajuda a gerenciar a complexidade dos negócios e escalar a equipe de engenharia à medida que novos recursos são desenvolvidos. Ele alinha as partes interessadas comerciais e técnicas aos problemas de negócios, chamados de domínios, usando uma linguagem onipresente. A arquitetura hexagonal é um facilitador técnico dessa abordagem em um domínio muito específico, chamado de contexto limitado. Um contexto limitado é uma subárea altamente coesa e pouco acoplada do problema de negócios. Recomendamos que você adote a arquitetura hexagonal para todos os seus projetos de software corporativo, independentemente de sua complexidade.

A arquitetura hexagonal incentiva a equipe de engenharia a resolver primeiro o problema de negócios, enquanto a arquitetura clássica em camadas desloca o foco da engenharia do domínio para resolver primeiro os problemas técnicos. Além disso, se o software segue uma arquitetura hexagonal, é mais fácil adotar uma abordagem de desenvolvimento orientada a testes, o que reduz o ciclo de feedback que os desenvolvedores precisam para testar os requisitos de negócios. Por fim, usar comandos e manipuladores de comando é uma forma de aplicar a responsabilidade única e os princípios de abertura e fechamento do SOLID. A adesão a esses princípios produz uma base de código que os desenvolvedores e arquitetos que trabalham no projeto podem navegar e entender com facilidade, além de reduzir o risco de introduzir alterações significativas nas funcionalidades existentes.

Este guia é para arquitetos e desenvolvedores de software interessados em entender os benefícios da adoção da arquitetura hexagonal e do DDD em seus projetos de desenvolvimento de software. Ele inclui um exemplo de design de uma infraestrutura para sua aplicaçãoAWS que suporte a arquitetura hexagonal. Para ver um exemplo de implementação, consulte Estruturar um projeto Python em arquitetura hexagonal usandoAWS Lambda no site da AWS Prescriptive Guidance.