Nell’ingegneria del software, quando si parla di software configuration management (SCM) s’intende un insieme di processi, politiche, strumenti indirizzati ad organizzare il processo di sviluppo: la gestione delle configurazioni (CM) permette, tramite un database (CMDB), di memorizzare i dati relativi ai vari “configuration items” (CI), o elementi di configurazione. Questi ultimi includono risorse hardware (server, rete, storage), artefatti software, documentazione, codice sorgente, modifiche richieste, modifiche eseguite, e tutte le informazioni utili a monitorare e gestire i processi di configurazione dei sistemi IT lungo l’intero ciclo di sviluppo software (SDLC).

Soprattutto negli odierni e complessi ambienti IT, costituiti da infrastrutture virtualizzate, piattaforme multicloud e nuvole ibride, in mancanza di un configuration management plan, il rischio è ritrovarsi con una base di codice sorgente e dati di configurazione frammentati; con informazioni disperse o non aggiornate sullo stato di ciascun componente dell’infrastruttura.


Valore del configuration management plan

Naturalmente, l’importanza di attuare un configuration management plan non si limita unicamente alla necessità di ottimizzare i processi di configurazione, ma, più in generale, condiziona anche l’abilità del responsabile delle operation, e del suo team di ingegneri, d’implementare sistemi IT sempre solidi, stabili, e capaci di rispondere alle esigenze di business, nonostante la crescente complessità tecnologica. Complessità causata, ad esempio, dall’adozione di approcci di sviluppo come i microservizi: in un’architettura a microservizi, ciascun microservizio, per poter essere inizializzato e funzionare, viene infatti registrato con i propri specifici metadati di configurazione. In ogni caso, un ragionamento analogo vale anche per le macchine virtuali (VM), o per la tecnologia di containerizzazione, perché ogni container ottiene istruzioni per il proprio funzionamento leggendo i metadati di configurazione. Questi ultimi possono essere, ad esempio, i valori della quantità di RAM, o di capacità computazionale della CPU, da allocare per ciascuna VM o container, o i dati di configurazione che specificano connessioni esterne a database o domini.


Attuare un configuration management plan

Da un punto di vista business, un valido configuration management plan è un pilastro fondamentale per migliorare la gestione degli altri processi di ITSM (IT service management), tra cui incident management, change management, release management, information security management, strategici per ottimizzare la conduzione dell’attività aziendale.

Il configuration management plan dovrà documentare e informare tutte le parti interessate nel progetto su quali tool CM verranno utilizzati e come. In particolare, nel piano occorrerà definire le metodologie che nel progetto permetteranno di:

  • Identificare, raccogliere, aggregare i dati di configurazione per tutti gli elementi di configurazione (CI), quindi i componenti e servizi in uso nell’infrastruttura;
  • Definire e creare per i differenti elementi di configurazione baseline di riferimento, quindi stati di configurazione funzionanti in ambiente di produzione;

  • Controllare, nel CMDB, modifiche, versioni, rilasci dei CI;

  • Monitorare il ciclo di vita dei CI, segnalandone stato, completezza, correttezza, coerenza, e controllandone, memorizzazione, gestione, distribuzione.   

 

Più automazione per il configuration management

Rispetto ai metodi classici di configuration management, la diffusione degli ambienti virtualizzati e l’introduzione del paradigma DevOps accelerano e automatizzano notevolmente le operazioni di CM: è evidente che, soprattutto quando nell’infrastruttura il numero di macchine virtuali e container da controllare aumenta, memorizzazione e amministrazione dei metadati di configurazione non sono più gestibili in modalità non sistematica o disorganica. Il configuration management plan deve quindi favorire, tramite opportuni tool, l’automazione delle operazioni di configurazione, e stabilire in un repository centralizzato un database che funga da singola fonte di verità (SSOT) per tutte le operazioni CM.


Automazione dell’infrastruttura IT

In confronto ai tempi in cui l’amministrazione dei sistemi hardware e software era eseguita manualmente, con DevOps vengono completamente automatizzati anche configurazione e deployment dell’infrastruttura IT: ciò è possibile, ad esempio, attraverso l’applicazione di pratiche come “infrasctructure as code” (IaC), in grado, tramite script, di configurare e implementare tutto l’ambiente IT (server, storage, rete) richiesto per il funzionamento di determinate applicazioni.