Strategie di ramificazione per IaC - AWS Guida prescrittiva

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à.

Strategie di ramificazione per IaC

La metodologia Git tipica utilizza un trunk base primario (ad esempiomain) branch per la produzione, un ramo di sviluppo e feature branch. Molte organizzazioni adottano immediatamente lo stesso design per l'infrastruttura come codice (IaC). Tuttavia, la metodologia Git non è direttamente compatibile con i modelli di progettazione dell'infrastruttura comuni. Considerate i seguenti punti:

  • Le applicazioni hanno diversi ambienti.

    • Gli esempi di ambiente includono sandbox, sviluppo, staging e produzione.

  • Gli ambienti non sono strettamente collegati.

    • La produzione è spesso strettamente associata a implementazioni di staging di successo.

    • La produzione e la messa in scena sono in genere completamente disaccoppiate dall'ambiente di sviluppo.

    • Lo sviluppo è in genere completamente disaccoppiato dall'ambiente sandbox.

  • Ogni applicazione ha il proprio set di standard ambientali.

    • Molte applicazioni non utilizzano un ambiente sandbox.

    • Alcune applicazioni non richiedono un ambiente di staging ma utilizzano invece una strategia di distribuzione blu/verde.

Immagina uno scenario in cui un repository di applicazioni fornisca tre ambienti che utilizzano una metodologia basata su trunk. L'ambiente di sviluppo è legato alla develop filiale, lo staging alla filiale e la produzione alla staging filiale. main Per questa applicazione, è necessaria una nuova funzionalità per connettere un gateway di transito alla soluzione, gestita da un altro team e da un altro repository. Uno sviluppatore scrive il codice dell'infrastruttura in un ramo di funzionalità e lo unisce al develop ramo quando è pronto. Sembra tutto a posto.

Tuttavia, si presenta una sfida. Un altro sviluppatore ha una storia utente separata per una funzionalità separata, la scrive in un ramo di funzionalità e la unisce al develop ramo. La seconda funzionalità è ora pronta per essere integrata nella messa in scena e nella produzione. Tuttavia, la funzionalità di gateway di transito originale non è pronta a causa di un criterio di rischio all'interno dell'organizzazione. Ora tutte le funzionalità sono bloccate dalla promozione alla produzione e il codice dell'applicazione è effettivamente bloccato o danneggiato.

In questo scenario, considerate le seguenti possibili soluzioni:

  • La soluzione più comune: aumentare la ripetizione del codice (ridurre il DRY) nelle posizioni mirate della struttura del codice impostando ./environments cartelle separate nel repository. Ciò consente al codice degli ambienti di trovarsi nello stesso repository, ma disaccoppiato.

  • Imposta un processo CI/CD con una gestione complessa delle variabili.

  • Separa gli ambienti in repository separati.

  • La soluzione meno comune: utilizzare più rami del tronco.