

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Costruire architetture esagonali su AWS
<a name="welcome"></a>

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

*Giugno 2022* ([cronologia dei documenti](doc-history.md))

Questa guida descrive un modello mentale e una raccolta di modelli per lo sviluppo di architetture software. Queste architetture sono facili da mantenere, estendere e scalare in tutta l'organizzazione man mano che cresce l'adozione dei prodotti. Gli hyperscaler cloud come Amazon Web Services (AWS) forniscono elementi costitutivi per le piccole e grandi imprese per innovare e creare nuovi prodotti software. La rapida introduzione di questi nuovi servizi e funzionalità induce gli stakeholder aziendali ad aspettarsi che i propri team di sviluppo prototipino nuovi prodotti minimi validi (MVPs) più rapidamente, in modo che le nuove idee possano essere testate e verificate il prima possibile. Spesso MVPs vengono adottate e diventano parte dell'ecosistema software aziendale. Nel processo di produzione MVPs, i team a volte abbandonano le regole e le migliori pratiche di sviluppo del software, come [i principi SOLID e i](https://www.freecodecamp.org/news/solid-principles-explained-in-plain-english/) test unitari. Ritengono che questo approccio accelererà lo sviluppo e ridurrà i tempi di commercializzazione. Tuttavia, se non riusciranno a creare un modello fondamentale e un framework per l'architettura software a tutti i livelli, sarà difficile o addirittura impossibile sviluppare nuove funzionalità per il prodotto. La mancanza di certezza e il cambiamento dei requisiti possono inoltre rallentare il team durante il processo di sviluppo.

Questa guida illustra l'architettura software proposta, da un'architettura esagonale di basso livello a una scomposizione architettonica e organizzativa di alto livello, che utilizza la progettazione basata sul dominio (DDD) per affrontare queste sfide. DDD aiuta a gestire la complessità aziendale e a scalare il team di progettazione man mano che vengono sviluppate nuove funzionalità. Allinea gli stakeholder aziendali e tecnici ai problemi aziendali, chiamati *domini*, utilizzando un linguaggio onnipresente. *L'architettura esagonale è un fattore abilitante tecnico di questo approccio in un dominio molto specifico, chiamato contesto limitato.* Un contesto limitato è una sottoarea del problema aziendale altamente coesiva e poco connessa. Si consiglia di adottare un'architettura esagonale per tutti i progetti software aziendali indipendentemente dalla loro complessità. 

L'architettura esagonale incoraggia il team di progettazione a risolvere innanzitutto il problema aziendale, mentre l'architettura classica a più livelli sposta l'attenzione della progettazione dal dominio alla risoluzione innanzitutto dei problemi tecnici. Inoltre, se il software segue un'architettura esagonale, è più facile adottare un [approccio di sviluppo basato sui test, che riduce il ciclo](http://www.jamesshore.com/v2/books/aoad1/test_driven_development) di feedback necessario agli sviluppatori per testare i requisiti aziendali. Infine, l'utilizzo di [comandi e gestori di comandi](https://www.cosmicpython.com/book/chapter_10_commands.html) è un modo per applicare la responsabilità unica e i principi aperti e chiusi di SOLID. L'adesione a questi principi produce una base di codice che gli sviluppatori e gli architetti che lavorano al progetto possono facilmente navigare e comprendere, e riduce il rischio di introdurre modifiche sostanziali alle funzionalità esistenti.

Questa guida è destinata agli architetti e agli sviluppatori di software interessati a comprendere i vantaggi dell'adozione dell'architettura esagonale e del DDD per i loro progetti di sviluppo software. Include un esempio di progettazione di un'infrastruttura per l'applicazione AWS che supporti l'architettura esagonale. Per un esempio di implementazione, consulta [Strutturare un progetto Python in architettura esagonale utilizzando](https://docs.aws.amazon.com//prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) il sito Web AWS Prescriptive AWS Lambda Guidance. 