Sägetstrasse 18, 3123 Belp, Switzerland +41 79 173 36 84 info@ict.technology

      Nomad: Orchestrazione dei workload moderna e snella per le aziende

      Target, uno dei più grandi rivenditori al dettaglio negli Stati Uniti con oltre 1.800 filiali, si è trovato di fronte a una sfida complessa: l'orchestrazione dei carichi di lavoro su più ambienti - dal cloud pubblico ai propri data center fino alle ubicazioni edge nei negozi. Kubernetes era già in uso in alcuni casi specifici, ma risultava troppo complesso e troppo costoso in termini di costi operativi complessivi. La scelta è quindi ricaduta su HashiCorp Nomad, portando a un'accelerazione significativa dei cicli di sviluppo e a una semplificazione dell'infrastruttura. Questo caso di successo evidenzia un modello ricorrente nel settore: le aziende riconoscono sempre più il valore di soluzioni di orchestrazione snelle ed efficienti, focalizzate sugli aspetti essenziali.

       

      L'orchestrazione dei container sta diventando un componente critico delle moderne infrastrutture IT. Man mano che sempre più aziende modernizzano i propri ecosistemi applicativi e adottano architetture cloud-native, si trovano ad affrontare la sfida di gestire in modo efficiente un numero crescente di flussi di lavoro. Tuttavia, molte organizzazioni hanno scoperto che le soluzioni di orchestrazione più diffuse, a causa della loro complessità, dell'elevata richiesta di risorse e delle ripide curve di apprendimento, tendono a ostacolare l'efficienza operativa piuttosto che favorirla. Il risultato logico sono costi operativi più elevati, cicli di sviluppo più lunghi e un carico eccessivo per i team IT.

      Inoltre, non è sempre sufficiente orchestrare solo i container. Per i carichi di lavoro su server (virtuali o bare metal), per le applicazioni sotto forma di eseguibili, batch job o persino servizi Java, sarebbero necessarie ulteriori soluzioni di orchestrazione. Questo aumenta ulteriormente la complessità dell'infrastruttura. Di conseguenza, molte aziende stanno cercando alternative più snelle ed efficienti per orchestrare i propri carichi di lavoro.  

      È qui che entra in gioco HashiCorp Nomad.

      Nomad si è affermato come un'alternativa elegante e potente per l'orchestrazione dei carichi di lavoro. A differenza di Kubernetes, Nomad segue un approccio pragmatico: un unico file binario, API semplici e un'architettura intuitiva consentono ai team di concentrarsi sulle proprie attività principali, invece di perdersi nella gestione della piattaforma di orchestrazione stessa. Inoltre, con Nomad non ha importanza se i carichi di lavoro siano containerizzati o meno.

       

      Perché più semplice può anche essere meglio: l’approccio di Nomad

      Nomad VerticalLogo ColorWhite RGBL'orchestrazione dei carichi di lavoro negli ambienti aziendali moderni richiede un equilibrio tra funzionalità e complessità. L'esperienza di Target lo dimostra chiaramente: l'azienda doveva gestire applicazioni su Google Cloud, nei propri data center e in oltre 1.800 filiali. La sfida consisteva nell'orchestrare in modo efficiente e centralizzato questi diversi ambienti senza aumentare inutilmente la complessità.

      La scelta di Nomad si è basata su diversi fattori chiave che si sono rivelati determinanti nella pratica.

      1. Un aspetto fondamentale era la coerenza: poiché Target utilizzava già container Docker con Kubernetes nei negozi, la possibilità di riutilizzare gli stessi container in altri ambienti aveva un grande valore. Ciò evitava la necessità di creare pacchetti RPM separati o altri formati di deployment.

      2. Anche la velocità dei deployment ha giocato un ruolo cruciale. I team di sviluppo di Target necessitavano della capacità di rilasciare e testare rapidamente nuove versioni, soprattutto durante la fase critica tra l'inizio della stagione del Black Friday e il periodo natalizio. Con Nomad, potevano distribuire modifiche in pochi minuti, rispetto ai cicli di deployment di 30 minuti o più dei loro precedenti processi basati su RPM e Docker.

      3. L’integrazione nativa con lo stack HashiCorp esistente si è rivelata un ulteriore vantaggio decisivo. Target aveva già un'infrastruttura funzionante con Consul per il service discovery e DNS, oltre a Vault per la gestione dei secrets. L'integrazione senza soluzione di continuità di Nomad in questo ecosistema ha consentito al team di continuare a utilizzare questi componenti collaudati.

      4. Il supporto multi-regione era essenziale per l'infrastruttura distribuita di Target. Con data center on-premise in Minnesota e una presenza cloud nelle regioni US-Central e US-East, il team aveva bisogno della capacità di distribuire i carichi di lavoro in tutto il gruppo e per ogni regione, garantendo al contempo una configurazione federata e un monitoraggio efficace.

      5. Infine, l’integrazione con Terraform è stato un fattore determinante. I team di Target utilizzavano già pipeline di deployment consolidate basate su Terraform, e la possibilità di mantenerle e riutilizzarle per i deployment con Nomad ha semplificato notevolmente l’adozione della piattaforma.

      Ottimizzazione delle risorse e workload misti

      L'uso efficiente delle risorse è fondamentale per le aziende che gestiscono workload diversificati. Nomad offre una potente soluzione di orchestrazione che consente un utilizzo ottimizzato delle risorse e una gestione flessibile dei workload misti.

      Utilizzo ottimale delle risorse

      Nomad si basa su un efficiente algoritmo di bin-packing, che distribuisce in modo ottimale le risorse del server inserendo in modo intelligente task di piccole dimensioni nelle capacità libere disponibili. Questo riduce le risorse inutilizzate e massimizza l'efficienza del cluster. Negli ambienti di High-Performance Computing o nelle aziende con workload altamente variabili, Nomad garantisce che l'hardware costoso venga utilizzato nel modo più efficiente possibile.

      • Allocazione dinamica delle risorse: i workload vengono posizionati in base alle esigenze in tempo reale per evitare tempi di inattività.
      • Aumento dell'efficienza: il posizionamento intelligente dei job riduce il fabbisogno hardware, abbassando i costi operativi.
      • Bilanciamento del carico: i workload possono essere automaticamente spostati sui nodi meno utilizzati per garantire un utilizzo uniforme del sistema.

      Supporto per workload misti

      Uno dei punti di forza di Nomad è la capacità di orchestrare parallelamente diversi tipi di workload. Mentre Kubernetes è progettato principalmente per applicazioni containerizzate, Nomad può gestire anche applicazioni standalone, batch job, microservizi (container) e processi critici per il sistema.

      • Elaborazione batch e workload HPC: ideale per istituti di ricerca o aziende con calcoli ad alta intensità di dati, che necessitano di elevate risorse di calcolo per brevi periodi.
      • Microservizi e applicazioni cloud-native: le architetture moderne e distribuite beneficiano dell'API semplice e della configurazione dichiarativa di Nomad.
      • Applicazioni legacy e processi di sistema: a differenza di Kubernetes, Nomad consente anche l'orchestrazione efficiente di workload non containerizzati.

      Semplificazione delle operazioni

      Nomad semplifica le operazioni grazie a un'architettura minimalista con un unico file binario e nessuna dipendenza esterna. Questo riduce il carico amministrativo e rende particolarmente semplice per i team IT più piccoli gestire una soluzione di orchestrazione potente.

      Grazie a questa combinazione di elevata efficienza delle risorse e supporto flessibile per i workload, Nomad rappresenta una piattaforma versatile, adatta sia agli ambienti cloud moderni e dinamici che alle infrastrutture IT tradizionali.


      Scheduling su scala enterprise e Bin Packing

      Il motore di scheduling di Nomad si distingue in modo significativo dalle altre soluzioni di orchestrazione grazie al suo approccio pragmatico ed efficiente. Al suo interno, Nomad utilizza uno scheduler distribuito basato sul protocollo di consenso Raft, che consente di coordinare in modo rapido e affidabile le decisioni di scheduling su un intero cluster. Target ha implementato questa architettura con cluster a tre nodi per regione, in cui un server funge da leader e gli altri due da follower, pronti a subentrare in caso di guasto. Cluster a cinque nodi sono ancora più ideali per scenari che richiedono la massima disponibilità: questi cinque nodi possono essere distribuiti su diverse fault domain o data center e rimanere operativi anche nel caso in cui il leader attuale del cluster fallisca inaspettatamente. In questo scenario, i follower rimanenti possono eleggere un nuovo leader, operazione che non sarebbe possibile in un cluster a tre nodi per mancanza di quorum. 

      Ciò che rende particolarmente efficace lo scheduler di Nomad è il suo avanzato algoritmo di Bin Packing, già menzionato nella sezione precedente. Mentre molte soluzioni di orchestrazione si basano su strategie di posizionamento semplici, che spesso portano a un utilizzo inefficiente delle risorse, Nomad adotta un approccio multidimensionale. Questo tiene conto simultaneamente di CPU, memoria, porte di rete e risorse personalizzate definite dall’utente. Nel caso di Target, ciò ha portato a un uso significativamente più efficiente delle risorse: con solo otto nodi per cluster, l’azienda è riuscita a eseguire una grande varietà di workload in modo efficiente, evitando il sovradimensionamento dell’hardware e della rete spesso riscontrato in piattaforme come VMware o Kubernetes.

      Le decisioni di scheduling si basano su un sofisticato sistema di vincoli (constraints) e affinità. Gli sviluppatori possono definire requisiti precisi per i loro workload, come esigenze hardware, topologia di rete o geolocalizzazione. Lo scheduler prende in considerazione questi vincoli insieme allo stato attuale del cluster per prendere decisioni di posizionamento ottimali. Per Target, questo aspetto era particolarmente rilevante per la gestione dei deployment multi-regione tra i loro data center in Minnesota e le regioni di Google Cloud.

      Un esempio concreto dell’implementazione di Target dimostra la potenza dello scheduler: l’azienda esegue un intero stack ELK (Elasticsearch, Logstash, Kibana) su Nomad, elaborando circa 300 GB di log al giorno. Questo dimostra la flessibilità dello scheduler nel gestire diversi tipi di workload - dalle applicazioni stateless fino ai sistemi complessi e stateful come Elasticsearch. Lo scheduler riconosce automaticamente le specifiche esigenze di questi workload differenti e li posiziona in modo ottimale sull’infrastruttura disponibile.

      Un altro aspetto degno di nota è la capacità dello scheduler di gestire istanze preemptible. Target sta sperimentando questa funzionalità nel proprio ambiente di staging, sfruttando istanze cloud a basso costo e temporaneamente interrompibili, mentre lo scheduler si occupa automaticamente di mantenere attivo il servizio. Questo dimostra come il motore di scheduling di Nomad non solo migliori l’efficienza tecnica, ma consenta anche significativi risparmi sui costi.

       

      Funzionalità di livello enterprise

      Nomad Enterprise estende la versione open-source di Nomad con funzionalità aggiuntive, progettate specificamente per soddisfare le esigenze delle grandi aziende. In ambienti complessi e distribuiti, Nomad Enterprise dimostra la sua forza, consentendo alle imprese una maggiore scalabilità, sicurezza e governance.

      Governance e gestione multi-cloud

      Una delle principali sfide per le aziende con infrastrutture globalmente distribuite è la gestione efficiente dei cluster su più regioni e provider cloud. Nomad Enterprise offre un'architettura federata potente per la gestione dei cluster:

      Nomad Multi Region

      • Cluster federati su più regioni e provider cloud: le aziende possono gestire più cluster Nomad distribuiti su diverse regioni o ambienti cloud in modo centralizzato. Ad esempio, un cluster può essere eseguito on-premise, un altro su Oracle Cloud Infrastructure (OCI) a Francoforte distribuito su tre data center, e un altro ancora su Amazon Web Services (AWS). Insieme, questi cluster formano un unico pool per le applicazioni. Questo consente una distribuzione flessibile dei workload in base alla vicinanza geografica, alle risorse ottimali per ogni applicazione, ai requisiti di latenza, alle condizioni di licenza del software o agli obblighi di conformità.
      • Controllo indipendente dei deployment per regione: ogni regione può operare e essere gestita in modo indipendente, garantendo che un errore o un guasto in una regione non abbia impatti sugli altri cluster. Allo stesso tempo, le politiche globali possono essere gestite centralmente. Ciò significa che un cluster Nomad on-premise può orchestrare e distribuire workload su OCI o AWS. I dati rilevanti vengono replicati tra il data center locale e gli ambienti cloud - con l'eccezione dei token, delle ACL policy regionali e delle policy Sentinel, che implementano le direttive aziendali (approfondiremo questo aspetto in un capitolo successivo).
      • Validazione automatizzata e processi di deployment: Nomad Enterprise consente di validare automaticamente i deployment e distribuirli in ambienti di produzione. Questo riduce gli errori manuali e aumenta l'affidabilità dei rilasci.

      Alta disponibilità e scalabilità

      Per le applicazioni critiche per il business, un'elevata disponibilità è essenziale. Nomad Enterprise fornisce funzionalità aggiuntive che migliorano la resilienza e la scalabilità dei cluster Nomad:

      Nomad 3 Node Cluster

      • Cluster a tre o cinque nodi per regione per garantire la resilienza: per assicurare un'elevata disponibilità, i server Nomad vengono eseguiti in cluster con almeno tre nodi per regione. Ciò garantisce che, anche in caso di guasto di uno o più server, i nodi rimanenti possano continuare le operazioni senza interruzioni.
      • Consenso automatico per le decisioni di scheduling: Nomad utilizza il protocollo di consenso Raft per prendere decisioni di scheduling in modo affidabile ed efficiente su tutto il cluster. In caso di failover del leader, viene automaticamente eletto un nuovo leader per garantire la disponibilità continua.
      • Scalabilità flessibile dei client-node: Nomad può scalare dinamicamente i client-node in base alle esigenze di workload, consentendo alle aziende di utilizzare le risorse in modo più efficiente e ridurre i costi operativi.

      Implementazione di policy e conformità normativa

      In settori regolamentati come la finanza, la sanità o la pubblica amministrazione, il rispetto di rigide normative sulla sicurezza e la conformità è essenziale. Nomad Enterprise offre un’integrazione potente con HashiCorp Sentinel per l’applicazione delle policy (“Policy Enforcement”), consentendo la definizione e l'automazione delle regole direttamente nel processo di orchestrazione. Questo permette di far rispettare in modo efficiente i requisiti normativi e le policy di sicurezza interne. Le aziende possono così beneficiare di una soluzione scalabile e automatizzata per la validazione delle policy, che si integra perfettamente nei workflow esistenti e nelle strategie di conformità. Oltre a Nomad, Sentinel è integrato anche in Terraform, Vault e Consul, consentendo l'implementazione del concetto di Policy-as-Code su tutti i livelli dell'infrastruttura.

      Sentinel: Policy Enforcement per Nomad Enterprise

      Sentinels and ContainersSentinel è un framework basato su policy che consente agli amministratori di definire policy dettagliate come codice e farle applicare automaticamente da Nomad. Le policy Sentinel si basano sul sistema Access Control List (ACL) esistente di Nomad, consentendo un controllo preciso sulla sottomissione e l'esecuzione dei job.

      Funzionalità chiave di Sentinel in Nomad Enterprise:

      • Controllo dettagliato delle policy: le policy Sentinel possono definire quali job possono essere eseguiti, garantire l'uso esclusivo di immagini container approvate o imporre altri requisiti di conformità.
      • Struttura dichiarativa delle policy: le policy vengono scritte nel linguaggio Sentinel, progettato per essere leggibile e valutato rapidamente. La complessità delle policy può essere modulata liberamente, ma dovrebbe essere gestita in modo da non influire negativamente sulle prestazioni.
      • Gestione dettagliata degli oggetti: le policy Sentinel possono accedere a vari oggetti all'interno dell'ecosistema Nomad, tra cui definizioni di job, job esistenti, token ACL e namespace. Questo permette di implementare controlli differenziati e meccanismi di enforcement avanzati.

      Gestione e applicazione delle policy Sentinel

      La gestione delle policy Sentinel avviene tramite il Nomad CLI, che supporta diversi livelli di applicazione (“Enforcement Levels”):

      • Advisory Policies: generano solo avvisi quando un job viola una policy, ma non ne bloccano l'esecuzione.
      • Soft-Mandatory Policies: i job che violano una policy possono comunque essere eseguiti, ma solo previa approvazione esplicita.
      • Hard-Mandatory Policies: i job che non rispettano le policy definite vengono rigorosamente bloccati e non possono essere eseguiti.

      Ad esempio, una policy può essere applicata con il seguente comando:


      nomad sentinel apply -level=soft-mandatory compliance-policy policy.sentinel

      Esempio pratico: restrizione delle esecuzioni di job

      Uno scenario comune è garantire che solo determinati driver di job possano essere utilizzati per ridurre i rischi di sicurezza. Una policy Sentinel potrebbe, ad esempio, imporre che sia consentito solo il driver “exec” (utilizzato per orchestrare eseguibili), impedendo l'esecuzione di job con driver non autorizzati come “docker” o “raw_exec”:


      main = rule { all_drivers_exec }
      
      all_drivers_exec = rule {
        all job.task_groups as tg {
          all tg.tasks as task {
            task.driver is "exec"
          }
        }
      }

       

      Integrazione di Sentinel-Policies con Terraform

      Per automatizzare la gestione delle policy, è possibile utilizzare Terraform. Con la risorsa nomad_sentinel_policy, le policy Sentinel possono essere integrate direttamente nei processi di Infrastructure-as-Code.

      resource "nomad_sentinel_policy" "enforce_exec_driver" {
        name  = "restrict-to-exec"
        policy = file("restrict-to-exec.sentinel")
        enforcement_level = "hard-mandatory"
      }

      In questo modo si garantisce che la policy desiderata venga applicata in modo coerente a livello aziendale.

       

      Confronto tra Nomad e Kubernetes

      Nomad si distingue per la sua semplicità, flessibilità ed efficienza, mentre Kubernetes eccelle grazie alle sue avanzate funzionalità di rete, storage e monitoraggio. Le aziende dovrebbero valutare quale soluzione si adatti meglio alla propria infrastruttura e ai propri casi d’uso. Sebbene Kubernetes sia ampiamente considerato lo standard per l’orchestrazione dei container, sempre più aziende adottano HashiCorp Nomad come alternativa più snella, meno complessa e con un supporto più ampio per diversi tipi di workload.

      Caratteristiche e vantaggi di Nomad

      Nomad offre numerosi vantaggi, rendendolo particolarmente interessante per le aziende che cercano una soluzione di orchestrazione semplice, flessibile e a basso consumo di risorse:

      • Semplicità di configurazione: Nomad è più veloce e facile da installare rispetto a Kubernetes, poiché richiede un unico file binario per client e server e una configurazione meno complessa.
      • Flessibilità nei workload: mentre Kubernetes si concentra principalmente sulle applicazioni containerizzate, Nomad, come descritto in precedenza, può gestire in modo efficiente anche workload non containerizzati e sistemi legacy.
      • Semplicità operativa: l’architettura di Nomad è più snella e richiede meno sforzi di gestione. I team possono concentrarsi maggiormente sullo sviluppo delle applicazioni anziché sulla gestione della piattaforma.
      • Minori risorse organizzative: la semplicità operativa di Nomad implica anche una minore necessità di risorse umane. Kubernetes è una piattaforma che richiede competenze specializzate e un numero significativo di personale per la configurazione e la gestione. Molti clienti devono assumere personale aggiuntivo solo per mantenere i cluster Kubernetes operativi e gestire gli incidenti. Con Nomad, le esigenze organizzative sono notevolmente inferiori.
      • Consumo ridotto di risorse: Nomad utilizza meno risorse di sistema rispetto a Kubernetes, rendendolo una soluzione ideale per Edge Computing, ambienti IoT e sistemi con risorse limitate. Inoltre, il minor fabbisogno di personale riduce i costi infrastrutturali complessivi, con un impatto positivo sul costo totale di proprietà (TCO) e sul ritorno sull’investimento (ROI).
      • Integrazione nativa con l’ecosistema HashiCorp: grazie all’integrazione con HashiCorp Consul per il service discovery e Vault per la gestione dei secrets, le aziende possono sfruttare al meglio i loro stack HashiCorp esistenti.
      • Supporto Multi-Region nativo: Nomad supporta nativamente il deployment multi-regione e multi-cloud, mentre Kubernetes richiede configurazioni aggiuntive e livelli di gestione più complessi per ottenere lo stesso risultato.

      Sfide

      Nonostante i numerosi vantaggi, l’uso di Nomad presenta anche alcune sfide rispetto a Kubernetes:

      • Load Balancing: Kubernetes include un sistema di bilanciamento del carico integrato tramite kube-proxy e Ingress. Nomad, invece, richiede soluzioni esterne per questa funzionalità. Un’opzione comune è Traefik, che si integra direttamente con Nomad. Per chi desidera un supporto completo, HashiCorp Consul rappresenta la scelta ideale. Nomad 3 Node Cluster
      • Gestione della rete e delle policy: Kubernetes offre funzionalità di rete avanzate, come le Network Policies per il controllo del traffico. Nomad richiede integrazioni con HashiCorp Consul, strumenti di terze parti o HashiCorp Sentinel, che però è disponibile solo nella versione Enterprise.
      • Supporto per Service Mesh: Kubernetes può essere esteso con Service Mesh come Istio o Linkerd. Nomad lavora con Consul, ma non offre nativamente lo stesso livello di funzionalità di un Service Mesh Kubernetes-based.
      • Monitoraggio e logging: Kubernetes fornisce soluzioni integrate per il monitoraggio e il logging. Nomad, invece, si basa principalmente su strumenti esterni per queste funzioni.
      • Approccio alla configurazione: Kubernetes utilizza un modello di configurazione dichiarativo, che semplifica la gestione di ambienti complessi. Nomad adotta invece un approccio procedurale, che offre un controllo più dettagliato ma può diventare più complesso con l’aumentare della scala dell’infrastruttura.
      • Soluzioni per lo storage persistente: Kubernetes supporta una vasta gamma di opzioni di storage persistente, incluse soluzioni locali, cloud e di rete. Nomad delega la gestione dello storage al sistema operativo o alla piattaforma container sottostante, come Docker, il che può richiedere ulteriore lavoro in ambienti complessi e misti.

      Questo confronto evidenzia come Nomad sia particolarmente vantaggioso per la sua semplicità, flessibilità ed efficienza, mentre Kubernetes si distingue per le sue funzionalità avanzate e integrate di rete, storage e monitoraggio. 


      Vantaggi pratici per i team di sviluppo

      L'esperienza di Target e di altri clienti HashiCorp dimostra che Nomad non solo semplifica la gestione dell'infrastruttura, ma offre anche vantaggi significativi per i team di sviluppo. Le seguenti migliorie si sono rivelate particolarmente preziose nell'operatività quotidiana:

      1. Cicli di sviluppo più rapidi: Con Nomad, è possibile portare nuovi servizi dalla fase di Proof-of-Concept (PoC) alla produzione in modo significativamente più veloce. La possibilità di distribuire e testare workload in maniera semplice ha ridotto drasticamente il Time-to-Market per nuove funzionalità e applicazioni.
      2. Deploy semplificati: L'uso di Nomad riduce il tempo di deployment da ore a minuti. Soprattutto nei periodi di elevato carico, come la stagione del Black Friday nel settore retail, i clienti possono implementare modifiche in tempo reale senza interrompere le operazioni o incorrere in problemi di risorse.
      3. Ottimizzazione dell'uso delle risorse: Grazie all'algoritmo di Bin Packing efficiente di Nomad, è possibile ottimizzare l’utilizzo dei server, combinare diverse architetture e tipologie di hardware e ridurre in modo significativo l'infrastruttura necessaria. Questo porta a risparmi considerevoli e misurabili sui costi infrastrutturali.
      4. Supporto flessibile per i workload: Mentre Kubernetes è ottimizzato principalmente per le applicazioni containerizzate, Nomad consente l'orchestrazione di una vasta gamma di workload, dalle applicazioni Java tradizionali ai moderni microservizi. Target è riuscita a creare una piattaforma unificata per tutti i workload senza dover ricorrere a soluzioni di orchestrazione aggiuntive.
      5. Blue-Green Deployments: Per minimizzare i tempi di inattività durante gli aggiornamenti, Target utilizza Blue-Green Deployments a livello di data center. Le nuove versioni vengono distribuite in parallelo a quelle esistenti e rese operative solo dopo test di successo. In caso di problemi, il sistema può tornare immediatamente alla versione precedente.

      Queste funzionalità e miglioramenti dimostrano che Nomad Enterprise rappresenta una soluzione potente ma al tempo stesso semplice per le aziende che cercano una piattaforma di orchestrazione moderna, altamente disponibile ed economicamente efficiente.

      Integrazione con lo stack HashiCorp

      Uno dei punti di forza di Nomad è l'integrazione nativa con gli altri strumenti di HashiCorp. Target e altri clienti con infrastrutture critiche sfruttano intensamente queste sinergie:

      • Consul per il service discovery e la configurazione dinamica
      • Vault per la gestione dei secrets e delle credenziali dinamiche
      • Terraform per Infrastructure as Code e deploy automatizzati

      Questa integrazione consente una pipeline completamente automatizzata, in cui gli sviluppatori possono inviare modifiche tramite Git, che vengono poi automaticamente validate e distribuite attraverso i processi CI/CD.

      Esempio: pipeline di deployment automatizzata

      Gli sviluppatori lavorano in un ambiente basato su Git, in cui tutte le modifiche al codice delle applicazioni e all'infrastruttura vengono versionate. Il flusso di lavoro tipico è il seguente:

      1. Modifica del codice e commit: Uno sviluppatore carica una nuova versione di un'applicazione in un repository Git. Questo può includere un aggiornamento di un'API di microservizi o una modifica della configurazione.
      2. Avvio della pipeline CI/CD automatizzata: Un sistema di build come GitHub Actions o Jenkins rileva la modifica e avvia una pipeline che segue diversi passaggi:
        • Build e test: L'applicazione viene compilata con le modifiche più recenti e resa disponibile come container image o binary.
        • Security scan e gestione dei secrets: Vault viene utilizzato per fornire secrets dinamici, evitando la memorizzazione di credenziali statiche nel codice o nelle pipeline.
        • Validazione dell'infrastruttura: Terraform verifica che tutte le componenti infrastrutturali necessarie siano correttamente provisionate.
      3. Deployment con Nomad:
        • Una volta completato il build con successo, viene generato o aggiornato un file di job di Nomad.
        • Il Nomad CLI o una combinazione di Terraform e Nomad viene utilizzata per registrare e distribuire il nuovo job.
        • Consul gestisce automaticamente il service discovery, consentendo alle nuove istanze di essere immediatamente riconosciute dagli altri servizi.
      4. Blue-Green Deployment e traffico dinamico:
        • Utilizzando la strategia di Rolling Deployment di Nomad, la nuova versione viene avviata in parallelo a quella esistente.
        • Se tutti i controlli di integrità hanno esito positivo, il traffico viene reindirizzato alla nuova versione utilizzando il bilanciamento del carico di Consul o Traefik.
        • In caso di problemi, è possibile effettuare automaticamente un rollback alla versione precedente.
      5. Monitoraggio e ottimizzazione:
        • Prometheus o altri strumenti di osservabilità raccolgono metriche sul deployment, accessibili tramite l'API REST di Nomad.
        • Se necessario, le risorse possono essere ridimensionate dinamicamente utilizzando Terraform e le funzionalità di Auto-Scaling di Nomad.