Sviluppo cloud-native
Cos'è un'infrastruttura immutabile?
Cos'è un'infrastruttura immutabile nel cloud?
Un'infrastruttura immutabile si ha quando si crea un server senza modificarlo direttamente. Nel Well-Architected Framework di AWS (REL08-BP04), questo model impone l'assenza di aggiornamenti, patch di sicurezza o modifiche di configurazione in loco sui carichi di lavoro di produzione. È necessario sostituire la vecchia versione con una nuova se si devono apportare modifiche, e ciò dovrebbe eliminare la "deriva di configurazione" (ovvero le incongruenze che si insinuano nei sistemi nel tempo).
Dopo aver implementato un'infrastruttura immutabile, l'ambiente cloud dovrebbe essere prevedibile e affidabile.
Qual è la differenza tra un'infrastruttura mutabile e una immutabile?
Le differenze tra i due concetti sono le seguenti:
- Infrastruttura mutabile: Aggiorna e modifica i tuoi server esistenti invece di crearne di nuovi. Questo è l'approccio tradizionale nel SaaS.
- Infrastruttura immutabile: Sostituisci i server con altri più recenti quando devi apportare modifiche. Questo è cloud-native ed è un approccio più recente tra le app SaaS.
| Aspetto | Infrastruttura mutabile | Infrastruttura immutabile |
|---|---|---|
| Caratteristiche di base | ||
| Approccio | Modifica diretta dei server esistenti | Sostituzione completa dei server con nuove versioni |
| Stile di implementazione | Approccio SaaS tradizionale | Approccio cloud-native moderno |
| Aspetti operativi | ||
| Gestione della configurazione | Aggiornamenti e modifiche manuali | Distribuzione automatizzata di nuove istanze |
| Controllo delle versioni | Difficile tracciare le modifiche | Cronologia completa delle versioni disponibile |
| scalabilità | Processo di scalabilità complesso | Facile da scalare con istanze identiche |
| Gestione del rischio | ||
| Deriva di configurazione | Soggetto a incongruenze | Riduce la deriva di configurazione |
| Capacità di rollback | Complesso e rischioso | Semplice ripristino alle versioni precedenti |
| Rischio di implementazione | Maggiore rischio di problemi di implementazione | Riduzione dei problemi di implementazione |
Quali sono i vantaggi dell'utilizzo di un'infrastruttura immutabile?
Le aziende utilizzano infrastrutture immutabili per i seguenti motivi:
- Distribuzione e configurazione: Questi dovrebbero essere coerenti e si dovrebbe evitare la deriva per garantire stabilità.
- Mitigazione dei rischi: Ridurre al minimo l'impatto di sfide impreviste avendo la possibilità di ripristinare versioni precedenti e ridurre la probabilità di riscontrare problemi di distribuzione.
- Considerazioni sulla scalabilità: Esplora la scalabilità della tua app aggiungendo nuove e identiche istanze server.
- Usa l'automazione: Identifica i framework che possono essere automatizzati per limitare i tempi di distribuzione.
Quali sono le best practice per un'infrastruttura immutabile?
Le pratiche da implementare includono:
- automazione: Usa l'infrastruttura come codice (IaC) e strumenti simili per automatizzare la fornitura/gestione della tua infrastruttura.
- Controllo di versione di tutto: Versiona tutti i tuoi aspetti per i rollback/la tracciabilità, comprese le dipendenze e le configurazioni.
- Abilita robusto Registrazione e monitoraggio: Puoi identificare potenziali problemi durante o dopo nuove distribuzioni.
- Inizia in piccolo, ripeti: Usa un'infrastruttura immutabile su elementi non essenziali prima di utilizzarla su altri quando sai cosa fare.
- Distribuire in parallelo: distribuire le modifiche come nuove risorse in parallelo con quelle vecchie, quindi spostare prima una piccola quota di utenti alla nuova versione (canary) o deviare il traffico verso un'intera flotta parallela (blue/green) (AWS REL08-BP04).
: Come si inserisce un'infrastruttura immutabile nel panorama cloud-native?
L'infrastruttura immutabile viene utilizzata insieme DevOps, Kubernetes e altre tecnologie/team.
- Kubernetes: semplificazione della distribuzione e gestione di app containerizzate, consentendo l'adozione di infrastrutture immutabili. La containerizzazione cloud-native si adatta al modello: modifiche persistenti a un container significano una nuova versione o una ricreazione dalla sua immagine (CNCF).
- DevOps: allinea integrazione continua e distribuzione continua (CI/CD) con pratiche di infrastruttura immutabile per la distribuzione del software.
L'infrastruttura immutabile richiede un cambiamento di strumenti e mentalità, ma potresti ottenere affidabilità/scalabilità.
Utilizza un'infrastruttura immutabile nel tuo ambiente cloud. Distribuisci server nuovi e aggiornati invece di modificare quelli esistenti se devi apportare modifiche.
Conclusione
Dovrebbe prendere seriamente in considerazione l'infrastruttura immutabile nello sviluppo cloud-native. La sua adozione può migliorare l'affidabilità e semplificare la scalabilità con istanze identiche. Sebbene possa essere necessario del tempo per adattarsi alla nuova mentalità e ai nuovi strumenti, a lungo termine può portare a risultati positivi, a patto di essere disposti ad adattarsi e a iniziare gradualmente.