NetDevOps e lo shift left per il networking

25/07/2023

I processi NetDevOps mutuano i principi dalla practice DevOps, filosofia di lavoro che mira a promuovere la collaborazione e la continua integrazione tra sviluppatori di software e amministratori di sistema, al fine di rendere più efficace e veloce il processo di sviluppo e rilascio di software.

I principi DevOps includono la cultura della collaborazione e della trasparenza, l’adozione di metodologie di lavoro agilil’automazione dei processi e la misurazione continua delle prestazioni.

NetDevOps si basa sugli stessi principi, ma estende questi concetti alle infrastrutture di network con lo scopo di portare maggiore efficienza, automazione, riduzione degli errori e scalabilità nella gestione operativa.

Utilizzando processi di CI/CD che includono ad esempio il controllo delle versioni, l’automation, la gestione delle infrastrutture come fossero “codice software”, il testing automatico, i deployment continui e la telemetria, i team di rete possono ottenere lo stesso livello di automazione, riusabilità e scalabilità dei team DevOps.

Tuttavia, implementare pratiche di NetDevOps può essere sfidante per le organizzazioni, poiché richiede uno sforzo di normalizzazione e standardizzazione delle architetture e delle attività operative, nonché la standardizzazione dei data model.

Una tipica pipeline di un processo NetDevOps è composta da diverse fasi che consentono di automatizzare e semplificare i processi di configurazione e gestione della rete. Le fasi principali di una pipeline NetDevOps includono:

  1. Sorgente di verità (SoT): la prima fase di una pipeline NetDevOps è la creazione di una sorgente di verità centralizzata per i dati della rete. La sorgente di verità fornisce una visione d’insieme della configurazione della rete e delle sue risorse, nonché una descrizione dello stato desiderato della rete. È buona norma che lo stato desiderato della rete venga versionato (così come il codice SW nelle pratiche DevOps) utilizzando strumenti ad esempio basati su GIT
  2. Automazione della generazione della configurazione: Una volta creata la sorgente di verità, la fase successiva consiste nell’automatizzare la configurazione dei dispositivi di rete. Ciò può essere fatto utilizzando strumenti come Ansible, Terraform, Puppet o SaltStack per creare script di configurazione che possono essere eseguiti automaticamente sui dispositivi di rete.
  3. Integrazione continua: La fase successiva è l’integrazione continua, in cui i cambiamenti proposti vengono testati automaticamente prima di essere implementati in produzione. Ciò consente di identificare e risolvere eventuali problemi prima che causino disservizi alla rete. Esistono soluzioni, come ad esempio Batfish o Robot Framework, che consentono di ricreare ambienti di test completi per svolgere tutte le operazioni di Continuous Integration in ambiente sicuro ed affidabile.
  4. Deployment automatizzato: Una volta completati i test, i cambiamenti possono essere implementati automaticamente in produzione. Ciò consente di ridurre al minimo i tempi di inattività e di garantire la continuità delle operazioni, nonché la certezza di ridurre a zero la possibilità di “sorprese”. Accanto ai già citati strumenti di automazione ci possiamo avvalere dei classici strumenti di Continuous Deployment utilizzati nel mondo DevOps, come ad esempio Jenkins, Github Actions, Gitlab pipelines, ecc…
  5. Telemetria, osservabilità e analisi: La telemetria è un componente fondamentale per gestire l’automazione in una logica di closed loop. Infatti, con la telemetria e la conseguente comprensione dello stato della rete è possibile prendere decisioni informate ed automatiche sulle modifiche da apportare alla rete stessa. Ciò consente di creare un feedback continuo tra la rete e gli strumenti di automazione, che aiuta a garantire che la rete sia sempre in uno stato ottimale. Strumenti conosciuti e fondamentali per coprire i temi di telemetria ed osservabilità sono ad esempio Prometheus, Loki ed Elasticsearch, ed accanto ad essi la possibilità di costruire dashboard manageriali e di reportistica utilizzando Grafana o Kibana.