saverioriotto.it

Infrastructure As Code: dettagli e benefici

Infrastructure as Code (IaC) è la gestione e il provisioning dell'infrastruttura tramite codice anziché tramite processi manuali. Con IaC, vengono creati file di configurazione che contengono le specifiche dell'infrastruttura, il che semplifica la modifica e la distribuzione delle configurazioni

Infrastructure As Code: dettagli e benefici

Infrastructure as Code (IaC) è la gestione e il provisioning dell'infrastruttura tramite codice anziché tramite processi manuali. Con IaC, vengono creati file di configurazione che contengono le specifiche dell'infrastruttura, il che semplifica la modifica e la distribuzione delle configurazioni

Durante lo sviluppo del software, i team si basano su un ambiente di staging o di sviluppo. Spesso succede che nel momento in cui questo viene distribuito su un ambiente di produzione, saltano fuori diversi problemi che nel precedente ambiente non si erano mai verificati, scoprendo che questi siano stati causati dalla non sincronizzazione degli ambienti. Il che porta a un'indagine dispendiosa in termini di tempo sul perché e cosa manca.

In questo articolo vedremo i benefici dell'infrastruttura come codice e dei suoi vantaggi.

L’ Infrastructure as Code si è evoluta per risolvere il problema della deriva ambientale nella pipeline di rilascio. L'idea di Infrastructure as Code (IaC) è stata spronata dal successo di CI/CD. Infrastructure as Code (IaC) automatizza il provisioning dell'infrastruttura, consentendo alle organizzazioni di sviluppare, distribuire e scalare applicazioni cloud con maggiore velocità, meno rischi e costi ridotti.

Che cos'è l'infrastruttura as code?

IaC è il processo di gestione e provisioning dei data center dei computer tramite file di definizione leggibili dalla macchina, piuttosto che configurazione hardware fisica o strumenti di configurazione interattivi. In parole semplici, IaC è il processo di sostituzione dello sforzo manuale richiesto per la gestione e il provisioning delle risorse IT con semplici righe di codice.

Infrastructure as Code (o IaC) è un tipo automatizzato di gestione dell'infrastruttura.

Nella maggior parte dei casi, la procedura Infrastructure as Code prevede i seguenti 3 passaggi:

- Gli sviluppatori definiscono e scrivono le specifiche dell'infrastruttura in un linguaggio specifico.
- I file creati vengono quindi inviati a un'API di gestione, a un server master o a un repository di codice.
- La piattaforma esegue quindi tutte le azioni necessarie per creare e configurare le risorse di calcolo

L'IaC è anche una pratica DevOps essenziale, indispensabile per un ciclo di vita di distribuzione del software a ritmo competitivo. Consente ai team DevOps di creare e aggiornare rapidamente l'infrastruttura nello stesso modo in cui eseguono la versione del codice sorgente e di tenere traccia di queste versioni in modo da evitare incoerenze tra gli ambienti IT che possono causare seri problemi durante l'implementazione. IaC è una pratica DevOps chiave e viene utilizzata insieme alla distribuzione continua.

Infrastruttura dichiarativa vs imperativa

Quando si ha a che fare con gli strumenti IaC, ci sono due principali approcci differenziati per la scrittura del codice. Questi due approcci sono dichiarativi e imperativi. In poche parole:

Un approccio imperativo consente agli utenti di specificare i passaggi esatti da eseguire per una modifica e il sistema non si discosta dai passaggi specificati.

Un approccio dichiarativo significa essenzialmente che gli utenti devono solo definire il requisito finale e lo strumento o la piattaforma specifica gestisce i passaggi da intraprendere per raggiungere il requisito definito.

L'approccio dichiarativo è preferito nella maggior parte dei casi d'uso della gestione dell'infrastruttura in quanto offre un maggiore grado di flessibilità durante la gestione dell'infrastruttura.

Vantaggi dell'infrastruttura as code

IaC può aiutare la tua organizzazione a gestire le esigenze dell'infrastruttura IT, migliorando al contempo la coerenza e riducendo gli errori e la configurazione manuale.

 - Riduzione dei costi
 - Velocità
 - Rischio ridotto
 - Test
 - Ambienti stabili e scalabili
 - Coerenza della configurazione
 - Maggiore sicurezza

Tool per IaC con esempi del codice

Per ottenere l'IaC è spesso possibile utilizzare strumenti di automazione del server e gestione della configurazione. Esistono anche soluzioni specifiche per IaC. Vediamo alcuni tra i più popolari:

 - Chef
 - Puppet
 - Saltstack
 - Ansible Automation Platform
 - Terraform
 - AWS CloudFormation

Chef è considerato uno strumento imperativo, dove Terraform, CloudFormation e Puppet sono tutti dichiarativi. In modo univoco, Ansible è per lo più dichiarativo con supporto per comandi imperativi.

Esempio di codice con Terraform:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.16"
    }
  }
  required_version = ">= 1.2.0"
}
provider "aws" {
  region  = "us-west-2"
}
resource "aws_instance" "app_server" {
  ami           = "ami-830c94e3"
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleAppServerInstance"
  }
}

Conclusione

IaC è una forma altamente produttiva di gestione della configurazione che si concentra sull'automazione della gestione dell'infrastruttura IT cloud. Una volta che IaC è in atto, può essere utilizzata per raggiungere livelli di automazione CI/CD per le modifiche all'infrastruttura di un progetto. IaC consente molte informazioni utili sulla comunicazione e sulla trasparenza relative ai cambiamenti dell'infrastruttura. IaC richiede una serie di dipendenze come piattaforme di hosting e strumenti di automazione, ampiamente disponibili dalle moderne società di hosting.




Commenti
* Obbligatorio