Che cos'è l'Infrastructure-as-Code (IaC)?
Per Infrastructure-as-Code (IaC) si intende la gestione e il provisioning dell'infrastruttura tramite software e processi automatizzati, anziché hardware e processi manuali. Consente agli sviluppatori di software di scrivere ed eseguire istruzioni per i requisiti di elaborazione, storage e rete e quindi di eseguirne il provisioning più rapidamente di quanto sarebbe possibile tramite un processo manuale. A differenza degli script di base utilizzati per automatizzare i processi IT ripetitivi, l'Infrastructure-as-Code può gestire processi più complessi, versatili e adattivi.

White paper di IDC: Network Automation: The Missing Piece in DX Strategies

VMware Aria Automation
Perché l'Infrastructure-as-Code è importante?
Infrastructure-as-Code e Platform-as-Code
Infrastructure-as-Code e Platform-as-Code (PaC) sono concetti simili applicati a diversi layer dello stack tecnologico. Come abbiamo visto, l'IaC si occupa del provisioning dell'elaborazione, dello storage e del networking nel layer dell'infrastruttura. La PaC, invece, si occupa del layer della piattaforma (inclusi il sistema operativo e gli strumenti di sviluppo) e consente agli sviluppatori di definire ed eseguire la piattaforma per le loro applicazioni.
Oltre a gestire diversi layer, la differenza fondamentale tra IaC e PaC risiede nel modo in cui vengono implementati: l'IaC viene implementato scrivendo wrapper sulle API Kubernetes, mentre la PaC viene implementato scrivendo estensioni API Kubernetes.
Quali sono i vantaggi dell'Infrastructure-as-Code?
L'implementazione dell'Infrastructure-as-Code offre numerosi vantaggi. Vediamoli nel dettaglio.
- Implementazione delle best practice DevOps: quando l'infrastruttura viene trattata allo stesso modo di qualsiasi altro codice, le best practice DevOps, come il monitoraggio continuo, il controllo delle versioni e i test automatizzati, aiutano a garantire una gestione semplice.
- Attivazione del self-service per gli sviluppatori: anziché richiedere agli sviluppatori di affidarsi al reparto IT per il provisioning delle risorse, l'IaC consente loro di eseguire il provisioning dell'infrastruttura in modo sicuro e compliant.
- Scalabilità e un provisioning più rapido: la natura automatizzata dell'IaC consente alle risorse di scalare verticalmente e orizzontalmente in un modo che sarebbe difficile da gestire manualmente, soprattutto in un ambiente containerizzato in cui i microservizi richiedono il provisioning separato dell'infrastruttura per ciascun servizio.
- Ripetibilità e coerenza: l'utilizzo della stessa base di codice per il provisioning dell'infrastruttura consente di ottenere la coerenza tra centinaia o migliaia di applicazioni.
Considerazioni per l'Infrastructure-as-Code
L'Infrastructure-as-Code (IaC) è necessaria in un ambiente enterprise DevOps containerizzato e ha pochi svantaggi. Tuttavia, presenta alcune potenziali sfide: La gamma di strumenti Infrastructure-as-Code disponibili può essere complessa e potrebbe rendere necessaria una formazione aggiuntiva per i team IT. Con l'automazione dell'infrastruttura, anche gli errori possono proliferare rapidamente in un ambiente IaC, pertanto il controllo delle versioni e i test sono estremamente importanti. Allo stesso modo, nonostante l'IaC in genere protegga dallo scostamento della configurazione, può effettivamente contribuire a tale scostamento se gli amministratori IT modificano le configurazioni dei server al di fuori del template IaC standard, quindi è importante rendere operativi gli standard IaC e documentare attentamente le policy.
Quali sono i vantaggi associati all'utilizzo dell'Infrastructure-as-Code?
Per quanto riguarda la sicurezza, l'Infrastructure-as-Code presenta le stesse condizioni di qualsiasi tipo di automazione: deve essere configurata correttamente fin dall'inizio per evitare danni maggiori o problemi di sicurezza causati da errori che si ripetono su larga scala. Tuttavia, se configurata e valutata attentamente, un'Infrastructure-as-Code sicura può ridurre al minimo i rischi di errore umano e garantire che le considerazioni sulla sicurezza siano integrate nel processo di sviluppo.
Basandosi sull'automazione piuttosto che su processi manuali, l'IaC offre tutti i vantaggi dell'automazione in termini di sicurezza e consente di evitare i problemi di sicurezza associati allo scostamento della configurazione. La gestione centralizzata di server e applicazioni offre coerenza e sicurezza in tutto l'ambiente. Le modifiche non vengono apportate manualmente, ma devono essere definite nel codice per impedire modifiche non autorizzate. Infatti, le configurazioni dichiarative assicurano che qualsiasi modifica apportata direttamente (anziché tramite il codice) venga automaticamente ignorata a favore dello stato definito nel codice. Inoltre, annullare le modifiche (anche quelle apportate tramite codice) è semplice grazie a un solido controllo delle versioni.
Gli ambienti IaC sono anche più facili da controllare, poiché tutto (incluse le configurazioni del server) è definito e documentato nel codice, il che semplifica la fornitura di tali informazioni a un auditor esterno.
Soluzioni e prodotti correlati
VMware Aria Automation
Scopri la nostra piattaforma per l'automazione dell'infrastruttura.
Rete moderna
Crea una rete moderna incentrata sugli utenti e sulle applicazioni che utilizzano
Cloud Management
Consente deployment, operation e ottimizzazione coerenti.