GESTIONE DELLA CONFIGURAZIONE: Tutto quello che devi sapere

gestione della configurazione

La gestione della configurazione è un componente cruciale di una piattaforma tecnologica di successo. Eccellenti dirigenti tecnologici vorranno sapere cosa serve per implementarlo. L'obiettivo principale della gestione della configurazione è classificare questi dati in modo da poter agire in modo rapido e sicuro. La gestione della configurazione è utilizzata in molte metodologie di gestione dei progetti, ma è particolarmente importante nel contesto dello sviluppo del software.
Esaminiamo la definizione di gestione della configurazione in relazione allo sviluppo e agli strumenti utilizzati per implementarla nella tua organizzazione.

Che cos'è la gestione della configurazione?

La gestione della configurazione è il processo di categorizzazione e monitoraggio dei sistemi fisici e virtuali di un'organizzazione, nonché dei metadati associati a queste risorse. La gestione della configurazione viene utilizzata nello sviluppo del software per ottimizzare le configurazioni delle applicazioni per gli ambienti di produzione al fine di ridurre i tempi di inattività.

L'acquisizione dei metadati per più sistemi di un'organizzazione è uno degli obiettivi principali della gestione della configurazione. In questo modo, il team di sviluppo sa non solo quali server sono accessibili, ma anche quali sistemi operativi esegue ciascun server per soddisfare i requisiti operativi della propria applicazione.

Segreti come password e chiavi API, endpoint per connessioni esterne come API e specifiche di calcolo come le esigenze di RAM sono altre istanze di metadati di configurazione.

Si occupa ugualmente dell'inventario dei sistemi e dei loro metadati, nonché del tracciamento di eventuali modifiche apportate a tali risorse. Se il modello di smartphone cambia improvvisamente nel caso ipotetico, è necessario essere informati in modo da poter regolare la ricerca del caricabatterie appropriato. Per le loro configurazioni software, i team di sviluppo e operativi richiedono lo stesso livello di esperienza.

Perché è importante la gestione della configurazione?

Per molti team, la gestione della configurazione è stata storicamente una responsabilità secondaria. I dati di configurazione in genere non vengono salvati nei database principali o nei sistemi di controllo della versione. Quando si tratta della parte operativa del ciclo DevOps, i dati di configurazione sono cruciali.
È più facile apprezzare l'importanza della gestione della configurazione se si considera innanzitutto cosa accadrebbe se non esistesse.

Il prezzo di una gestione della configurazione inadeguata o inesistente

La mancanza di una base di conoscenza consolidata è uno svantaggio significativo di un ciclo di vita dello sviluppo software senza gestione della configurazione. I metadati per i numerosi sistemi che compongono l'ambiente di produzione possono essere distribuiti su più file e workstation, con conseguente dispersione di informazioni cruciali come chiavi API e password. Trovare questi dati rallenta la pipeline.

Un altro svantaggio di questa mancanza di visibilità è che è difficile far corrispondere l'ambiente di test per un'applicazione all'ambiente di produzione in cui risiederà. Questa discrepanza compromette la qualità del test delle prestazioni poiché le impostazioni operative mentre il programma è attivo possono differire in modo significativo da quelle nell'ambiente demo. Peggio ancora, una configurazione errata nel software potrebbe impedirne la distribuzione in produzione.

Le configurazioni errate danneggiano le prestazioni e possono portare alla non conformità. Ad esempio, se i dati vengono archiviati al di fuori del database consentito, l'applicazione potrebbe violare i requisiti di riservatezza dei dati. In alternativa, se un team di sviluppo non dispone di un inventario accurato, potrebbe non essere in grado di tracciare adeguatamente quale software è stato aggiornato su quali sistemi, violando gli standard di sicurezza informatica e creando vulnerabilità.

Eccellenti vantaggi della gestione della configurazione

I team DevOps traggono grandi vantaggi dalla gestione della configurazione. Come dimostrato nella sezione precedente, la visibilità che fornisce è fondamentale per lo sviluppo di un catalogo unificato di sistemi e servizi di cui il team può tenere conto durante lo sviluppo e la manutenzione delle applicazioni.

La documentazione è una componente chiave di questa visibilità, secondo la gestione della configurazione. Ciò facilita l'inserimento di nuovi ingegneri e garantisce che altri possano apprendere rapidamente l'ambiente operativo per essere più efficaci nelle emergenze in cui è necessaria una risposta rapida.

L'analisi dell'ambiente di produzione e la garanzia che l'ambiente di test corrisponda sono entrambi processi semplici grazie alla gestione della configurazione. Ciò riduce il rischio di distribuzioni perché è più probabile che l'applicazione venga eseguita come pianificato ei test eseguiti su di essa sono rappresentativi delle effettive richieste di software. Quando il tempo di inattività dell'applicazione ha un impatto monetario, si consiglia di ridurre al minimo i fattori di rischio quando possibile.

Infine, aiuta con il ripristino di emergenza in caso di interruzione o altro incidente imprevisto. La tracciabilità è un elemento fondamentale della gestione della configurazione, quindi è relativamente semplice eseguire il rollback di un aggiornamento all'ultima versione stabile nota del software. Ciò consente al programma di continuare a svolgere le responsabilità aziendali mentre il team lavora su una soluzione a lungo termine.

Ora che hai compreso i vantaggi di un'eccellente gestione della configurazione, diamo un'occhiata a come potresti implementarla nella tua azienda.

Che aspetto ha una strategia di gestione della configurazione?

Un piano di gestione della configurazione si concentra su quattro aree. Esaminiamo ciascuno di essi.

# 1. Scoperta

L'inventario dei sistemi esistenti è il primo passo. La catalogazione dovrebbe avvenire in tutti i contesti importanti per il test e il funzionamento della tua applicazione. Il processo di scoperta passerà quindi alla raccolta dei metadati degli elementi identificati in un unico repository centrale. Questa singola fonte di verità memorizzerà questi dati in file di dati, con grande cura per crittografare tutti i dati sensibili, come password e chiavi, prima di salvarli.

# 2. Prova delle prestazioni

Al termine del processo di rilevamento, è possibile analizzare i dati di configurazione assemblati per creare una linea di base per il corretto funzionamento. In altre parole, il benchmark è una linea di base delle configurazioni necessarie affinché il programma funzioni correttamente. Questi parametri possono essere trovati ispezionando un'applicazione in esecuzione e l'ambiente circostante.

#3. Controllo della versione

La gestione della configurazione include ampiamente il controllo della versione. L'utilizzo di un sistema di controllo della versione come Git e il monitoraggio dei file di dati di configurazione si tradurrà in una cronologia verificabile di eventuali modifiche apportate. Il controllo della versione semplifica inoltre il rollback a una versione precedente se un aggiornamento interrompe l'applicazione.

#4. Revisione

Un vantaggio separato ma importante dell'utilizzo di un sistema di controllo della versione è che consente di conservare i dati di configurazione nello stesso repository del codice, impedendo modifiche non autorizzate. È possibile limitare le funzionalità di modifica a specifici membri del team e progettare un processo di approvazione in modo che qualsiasi modifica alla configurazione richieda un'approvazione preventiva prima di essere implementata nell'applicazione.

Poiché l'intero team può esaminare i file di configurazione nel repository, ciò promuove la responsabilità, elimina i rischi e facilita la cooperazione.

In che modo la gestione della configurazione si lega a DevOps, distribuzione continua e altre tecnologie...

A questo punto, dovresti avere una buona comprensione di cos'è la gestione della configurazione e di cosa si sforza di fare. Prima di esaminare gli strumenti, vorrei esplorare come la gestione della configurazione si adatta ad altri concetti di sviluppo software come Agile, DevOps, integrazione continua, distribuzione continua e Docker in modo che tu possa capire come questi concetti si adattano alle idee di gestione della configurazione.

Agile è compatibile con la gestione della configurazione?

SÌ. Il software agile, per definizione, rappresenta il desiderio di apportare modifiche al nostro software più rapidamente per adattarsi alle richieste del mercato. La gestione della configurazione ci consente di mantenere un'elevata velocità gestendo in modo sicuro le modifiche.

Gestione della configurazione e DevOps: come si adattano?

DevOps è l'applicazione di concetti agili sia alle divisioni di sviluppo che a quelle operative. DevOps mira infatti ad allineare gli obiettivi di entrambi i reparti. In alcune aziende, il dipartimento di sviluppo persegue il cambiamento, mentre il dipartimento operativo cerca la stabilità. Le aziende che abbracciano DevOps, d'altra parte, cercano sia la stabilità delle proprie risorse implementate sia la frequenza del cambiamento. Tuttavia, raggiungere questo risultato richiederà un cambiamento culturale.

La gestione della configurazione, come Agile, offre ai team la fiducia necessaria per apportare modifiche rapidamente. L'organizzazione assegna compiti di gestione ai team di sviluppo in base a principi agili, consentendo loro di fornire, configurare e mantenere la propria infrastruttura. Lo costruisci e lo gestisci.

Dove si inseriscono le pipeline nella gestione della configurazione?

Le pipeline software (o "flusso di valore", che possiamo progettare con strumenti come Plutora) sono le fasi che in genere automatizziamo per spostare il codice dal commit alla produzione. Le pipeline in genere includono fasi come codice di linting, codice di unit test, codice di test di integrazione e creazione di artefatti.

Una pipeline software è di conseguenza un tipo di gestione della configurazione. Quando creiamo software utilizzando strumenti come Docker, codifichiamo le nostre istruzioni di compilazione in un Dockerfile. Questo ci consente di comprendere meglio le dipendenze dei nostri artefatti.

La gestione della configurazione dell'infrastruttura come codice è una cosa reale?

Infrastructure-as-code (o IaC) è la pratica per garantire che tutto il provisioning dell'infrastruttura avvenga tramite codice. L'obiettivo di IaC è tenere un registro documentato di quali servizi esistono, dove si trovano e in quali condizioni sono disponibili. La gestione della configurazione può decidere di utilizzare i componenti di IaC per avere una comprensione completa di tutte le risorse tecnologiche di proprietà di un'organizzazione.

Disponi di una gestione della configurazione di integrazione/consegna continua?

Il processo per garantire che il software sia sempre in una forma rilasciabile è noto come consegna continua. Ciò può essere ottenuto mediante un'ampia automazione e test. L'integrazione continua è il processo che spesso riunisce artefatti software disparati in un'unica posizione per garantire che il codice si integri correttamente. Gli strumenti di integrazione continua, che spesso sono server che eseguono suite di test di automazione, funzionano come una sorta di gestione della configurazione fornendo visibilità sulle procedure necessarie per impostare e configurare una risorsa software specifica.

Ciò dovrebbe rispondere ad alcune delle tue domande rimanenti su come la gestione della configurazione si allinea con metodi o idee che potresti utilizzare o con cui hai familiarità. Qualsiasi discussione sulla gestione della configurazione, tuttavia, sarebbe inadeguata senza una discussione sugli strumenti. Pertanto, diamo un'occhiata ai vari strumenti a nostra disposizione per implementare la gestione della configurazione.

Strumenti di gestione della configurazione

# 1. Idiota

Git è la soluzione di controllo della versione leader del settore per il monitoraggio delle modifiche al codice. L'inclusione dei dati di gestione della configurazione con il codice in un repository Git fornisce una visualizzazione completa del controllo della versione di un intero progetto. Git è uno strumento fondamentale per la gestione della configurazione di livello superiore. Il seguente elenco di strumenti di gestione della configurazione alternativi deve essere conservato in un repository Git e utilizzare il monitoraggio del controllo della versione Git.

#2. Docker

La containerizzazione, come un blocco della configurazione, è una forma avanzata di gestione della configurazione offerta da Docker. Docker si basa su file di configurazione denominati Dockerfiles, che includono un elenco di comandi che vengono valutati per ricostruire l'istantanea prevista dello stato del sistema operativo. Docker genera contenitori da questi Dockerfile, che sono istantanee di un'applicazione preimpostata. I Dockerfile sono impegnati in un repository Git per il controllo della versione e richiedono una gestione della configurazione aggiuntiva prima di poter essere distribuiti su un'infrastruttura.

#3. Terraforma

Terraform di HasiCorp è una piattaforma di gestione della configurazione open source. IaC viene utilizzato da Terraform per il provisioning e la gestione di cluster, infrastrutture cloud e servizi. AWS, Microsoft Azure e altre piattaforme cloud sono supportate da Terraform.

Ogni piattaforma cloud ha la propria rappresentazione e interfaccia per i componenti dell'infrastruttura di base come server, server di database e code. Terraform ha creato un livello di astrazione degli strumenti di configurazione per le piattaforme cloud. Gli strumenti di configurazione consentono ai team di produrre file che sono descrizioni riproducibili della loro infrastruttura.

#4. Chef, Burattino, Ansible, Salt Stack

I framework di automazione IT includono Ansible, Salt Stack, Chef e Puppet. Diversi processi tipici dell'amministratore di sistema sono automatizzati da questi framework. Ogni framework utilizza un set di file di dati di configurazione, in genere YAML o XML, che vengono analizzati da un eseguibile.

I file di dati di configurazione descrivono i passaggi da eseguire per configurare un sistema. L'eseguibile quindi esegue le azioni. La lingua dell'eseguibile varia tra le piattaforme; Ansible e Salt Stack sono basati su Python, mentre Chef è basato su Ruby. Questo metodo è analogo all'esecuzione di script shell ad hoc, ma fornisce un'esperienza più strutturata e raffinata attraverso gli ecosistemi delle rispettive piattaforme.

Questi strumenti forniranno l'automazione necessaria per ottenere CI/CD.

Come si può iniziare con la gestione della configurazione?

Ovviamente non si può passare da “zero” a “condizione desiderata” in un istante. Infatti, prima di scegliere un sistema di gestione della configurazione, dovresti prima determinare perché ne hai bisogno. Ecco come iniziare con la gestione della configurazione:

  • Inizia compilando elenchi di controllo e documentazione manuali in un gruppo comune di opzioni di configurazione che esistono su tutti (o la maggior parte) dei sistemi. Concentrare inizialmente gli sforzi di gestione della configurazione sui modelli più diffusi può aiutarti a risparmiare la maggior parte del lavoro umano e offrire rapidi vantaggi di automazione alla tua azienda.
  • Verifica che il monitoraggio, l'antivirus e altri software di uso comune siano inclusi nell'elenco di controllo.
  • Per sviluppare parti riutilizzabili dell'infrastruttura come codice, categorizzare i sistemi in base a ciò che deve essere modificato per renderli specifici per applicazioni specifiche, posizioni geografiche o altre categorie.
  • Scegli un sistema di gestione della configurazione.

Conclusione

Questo è tutto quello che c'è da fare! Si spera che questo chiarisca la tua comprensione della gestione della configurazione. Si tratta di tenere traccia dello stato attuale del software e dell'infrastruttura.

Esistono numerosi approcci all'implementazione della gestione della configurazione, nonché numerosi strumenti e procedure. Quindi, quando si tratta di strategia, prenditi il ​​tuo tempo per valutare le scelte e determinare come vuoi che funzionino le tue procedure di gestione della configurazione.
Eppure alla fine ne varrà la pena. Se gestisci correttamente la configurazione, i tuoi team saranno più sicuri, più produttivi e in grado di apportare modifiche più rapidamente!

Buona fortuna, e d'ora in poi controlla, monitora e scrivi tutto come codice!

Riferimenti

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

Potrebbe piacerti anche