<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1214412942025937&amp;ev=PageView&amp;noscript=1">

Red Blog

I migliori 7 DevOps Tools

Davide Costanza,

I 7 migliori strumenti DevOps tools

Il DevOps oggi non è più un oggetto misterioso: di questa metodologia si parla ormai da anni, con crescente consapevolezza dei suoi vantaggi. Intrecciare le attività di development e le operations permette di accelerare la creazione, il testing, le modifiche e i rilasci delle applicazioni, potenziandone allo stesso tempo la sicurezza e l'affidabilità. Ribaltando il tradizionale approccio basato sui ticket, si adotta un sistema fondato sulla comunicazione e sull'interazione. Un sistema in cui si possono apportare correzioni e miglioramenti strada facendo, attraverso continui feedback, anziché risolvere i problemi solo alla fine, e ci si può adattare alle richieste del cliente o ai cambiamenti del mercato in modo più tempestivo.

Ma c'è un'altra faccia della medaglia. Se con l'approccio tradizionale sviluppatori e sistemisti percorrono binari separati, con il DevOps comunicano e interagiscono molto di più. È un approccio "polifonico", per così dire, a più voci, che possono iniziare a cantare in momenti diversi e su tonalità diverse, ma che devono rispettare i tempi e le armonie. Il rischio che questa pluralità di voci si trasformi in caos esiste. Insomma, il DevOps ti metterà alla prova se ancora non sai maneggiarlo e se non utilizzi i giusti strumenti.

 

Scopri come innovare il rilascio delle applicazioni grazie ai container!

 

Quali sono dunque i "ferri del mestiere" indispensabili per lavorare bene? Che tu sia uno sviluppatore, un ingegnere, un product manager, un esperto di sicurezza informatica o un designer di interfacce, ti sarà necessario conoscere alcuni di questi strumenti.

1. GitLab

I migliori strumenti DevOps tools | GitLab

GitLab ed è molto più di un semplice spazio condiviso. Si tratta di un'applicazione Web per la gestione dei repository Git che copre l'intero ciclo di vita DevOps, dalla pianificazione alla produzione. La sua caratteristica vincente è quella di permettere ai contributori di un progetto di lavorare indipendentemente l'uno dall'altro ma allo stesso tempo in modo coordinato (i fondatori di GitLab chiamano questo approccio "concurrent DevOps").

Potrai, infatti, procedere nel tuo lavoro (sia esso lo sviluppo, il design dell'interfaccia, il controllo di sicurezza o compliance, o altro ancora) senza vincolare i tuoi collaboratori né essere vincolato da loro, come avverrebbe con un'impostazione sequenziale rigida. Ciascun flusso di lavoro viene aggiornato in tempo reale, in modo che cambiamenti apportati da ciascun contributore siano visualizzati dagli altri. Per mantenere la visione d'insieme e il controllo sul progetto, GitLab include strumenti di gestione, monitoraggio e compliance.

2. Jenkins

I migliori strumenti DevOps tools | Jenkins

Oggi più che in passato, le applicazioni sono in continua evoluzione e devono poter comunicare le une con le altre. Per questo scopo ti verrà Jenkins, programma che può fungere da semplice automation server per la Continuous Integration oppure trasformarsi a seconda delle tue esigenze tramite centinaia di plugin. Jenkins permette di creare in modo semplificato il "cantiere" in cui la soluzione software viene costruita, integrando diversi strumenti coinvolti nel processo di produzione del software: sistemi di build (es. Maven), sistemi di test, sistemi di analisi del codice, sistemi di deploy o altro. Quindi Jenkins è il cantiere che mette insieme gru, nastri trasportatori, bacini di carenaggio, macchine varie.

Realizzato in Java, questo strumento può essere usato da remoto (con accesso da browser) oppure installato su una macchina con sistema operativo Windows, Mac OS X o altra piattaforma Unix, purché sia presente un Java Runtime Environment.

Scegliendo fra le centinaia plugin presenti sull'Update Center, potrai trasformare Jenkins a seconda delle tue necessità, nonché integrarlo con altri strumenti, sistemi di controllo e database. Alcune di queste estensioni, per esempio, ti permetteranno di testare le versioni di un software e ricevere notifiche email automatiche sugli esiti di ciascuna build, altre di gestire le credenziali di accesso, altre ancora di svolgere controlli di sicurezza o di monitorare flussi di lavoro esterni a Jenkins. Se sei uno sviluppatore, potrai scovare e risolvere bug all'interno del codice in modo rapido e magari automatizzare il testing di ogni versione.

3. Elastic 

I migliori strumenti DevOps tools | Elastic

Non esistono applicazioni senza dati. Che siano tanti o pochi, strutturati oppure no, che arrivino da fonti eterogenee o da una sola, dovrai certamente poter accedere a essi, importarli, filtrarli, metterli in ordine e consultarli: a questo servono i diversi programmi open source di Elastic. Il più noto è probabilmente Elasticsearch, un motore di ricerca con architettura distribuita, basato sull'API open source Lucene e con supporto al multitenancy. Può utilizzare client Java, .NET, PHP, Python, Apache Groovy e Ruby ed essere eseguito su un singolo computer portatile, così come su decine o centinaia di server. Una della sue caratteristiche, infatti, è l'estrema scalabilità orizzontale. Con questo strumento si possono eseguire ricerche su testi, numeri, immagini, dati geolocalizzati e altro ancora, ricevendo risultati in tempo quasi reale a dispetto dei volumi processati.

Altri software di Elastic sono Beats, Logstash e Kibana. Il primo è utile per raccogliere log e dati di vario tipo, centralizzandoli poi a uso e consumo delle ricerche con Elasticsearch. Logstash, invece, "ingerisce" i dati da diverse fonti (metriche, log, applicazioni Web, archivi, servizi cloud e altro), in un flusso continuo, con la possibilità di centralizzarli, trasformarli e metterli da parte negli stash. Kibana, infine, serve a creare visualizzazioni dei dati su grafici, istogrammi, torte, mappe interattive, grafi e altro ancora, anche su dashboard complesse e associando strumenti di analytics e monitoraggio. Tutti questi sono DevOps tools proprio perché il monitoraggio è uno dei "pilastri" del DevOps. Il monitoraggio è importante perché restituisce a Dev e Ops il feedback che permette loro di individuare i problemi: se i problemi sono rilevati in modo chiaro e puntuale, allora è possibile migliorare le soluzioni software e i relativi workflow di produzione.

4. Ansible e Ansible Tower 

I migliori strumenti DevOps tools | Ansible e Ansible Tower by Red Hat

Le attività di routine possono portare via tempo, innalzare barriere fra i team e creare complicazioni notevoli. Fortunatamente esiste l'automazione, un insieme di regole e processi che gestiscono la configurazione di rete, l’implementazione cloud, la creazione di ambienti di sviluppo e altri processi ancora. Quella proposta da Red Hat con Ansible è un'automazione a misura di DevOps e in linea con la filosofia open source: è tecnologicamente agnostica, quindi potrai usarla su qualsiasi tipo di infrastruttura sia per migliorare i processi esistenti sia in attività di DevOps.

L'automazione è il cuore del DevOps: Ansible permette agli Ops di automatizzare quelle procedure che i Dev sviluppano inizialmente in modo manuale. È un processo iterativo: i Dev creano delle soluzioni software e inizialmente le installano e configurano in modo manuale, poi gli Ops automatizzano le procedure. Ogni volta che i Dev modificano la soluzione, gli Ops collaborano con loro per aggiornare le corrispondenti automazioni. Ansible può dialogare con i sistemi, le applicazioni e gli strumenti già presenti in azienda o all'interno di un progetto, e grazie alla sua architettura agentless non crea rallentamenti.

Se il tuo lavoro prevede incarichi di amministrazione IT, ti sarà utile anche Ansible Tower: una API che mette a disposizione una console gestionale accessibile via Web. Dalla sua interfaccia potrai gestire i permessi di accesso degli altri utenti, assegnare compiti da svolgere, eseguire monitoraggi e operazioni di deployment rapido.

5. Kubernetes 

I migliori strumenti DevOps tools | Kubernetes

Nato nella mente degli ingegneri di Google, Kubernetes è oggi una tra le più popolari piattaforme open source per l'automazione delle operazioni dei container Linux. Nel 2015 questa tecnologia è stata donata dall'azienda di Mountain View (la quale continua a usarla per la gestione dei propri servizi) alla Cloud Native Computing Foundation e negli anni si è sviluppata grazie al contributo di società come Red Hat, che dopo Google è il secondo contributore del progetto upstream di Kubernetes.

Perché è utile? Quando vanno in produzione, come si suol dire, le applicazioni si espandono su più container, i quali devono essere distribuiti su più server host. Con Kubernetes i container possono essere raggruppati in cluster e orchestrati su diversi host, ma diventa anche possibile automatizzare i deployment e gli aggiornamenti delle applicazioni, aggiungere storage (elemento necessario per le applicazioni stateful), scalare le app containerizzate e le relative risorse, e altro ancora. Una tra le caratteristiche vincenti di Kubernetes è la trasversalità: la piattaforma supporta le implementazioni on-premise, il cloud pubblico e le infrastrutture ibride, consentendo di spostare i carichi di lavoro dall'una all'altra risorsa a seconda delle esigenze.

Ma perché possiamo considerare Kubernetes come uno dei migliori DevOps tools? Esso permette di creare più facilmente dei sistemi distribuiti basati su container, agevolando il deploy dei container, lo scaling, il networking, il monitoring e la gestione delle immagini. Alcuni di questi aspetti sono controllati dai Dev, altri ricadono in ambito Ops. Necessariamente Kubernetes fa da piattaforma di supporto entro la quale i due mondi vanno a congiungersi.

6. Docker 

I migliori strumenti DevOps tools | Docker

Da un altro progetto open source è nata una tecnologia che semplifica e rende automatico il deployment delle applicazioni containerizzate. Basato sul kernel di Linux, Docker consente di isolare applicazioni e processi, ovvero di eseguirli in modo indipendente, aumentando così la sicurezza ma allo stesso tempo permettendo di sfruttare l'infrastruttura già prevista nel sistema informatico del cliente. Potrai realizzare container che funzionano come macchine virtuali modulari estremamente leggere, facili da costruire, distribuire, copiare e spostare da un ambiente all'altro.

Docker ti permetterà non solo di eseguire i container, ma anche di effettuare rollback su versioni precedenti, di "riciclare" su applicazioni nuove processi già realizzati (riducendo anche i tempi di configurazione, esecuzione, provisioning delle risorse hardware), di accorciare il deployment, di controllare e distribuire facilmente le nuove versioni. Tutto questo contribuirà a sveltire il tuo lavoro e a evitare spiacevoli imprevisti, come ben sanno alcuni clienti illustri di Docker quali PayPal, eBay e Uber.

Tipicamente ciò che è dentro un container è responsabilità dei Dev, ma ciò che sta alla base e intorno è una faccenda da Ops: i container Docker permettono di individuare quello che è il punto di osmosi tra Dev e Ops e allo stesso tempo di tracciare una linea di demarcazione tra le rispettive aree di responsabilità.

7. Red Hat OpenShift 

I migliori strumenti DevOps tools | Red Hat OpenShift

Ai container dei tuoi progetti DevOps non può mancare uno strumento di gestione di livello superiore, un "direttore d'orchestra" capace di far procedere tutte le operazioni in armonia e in sincrono. Con Red Hat OpenShift potrai rendere automatici l’hosting, la configurazione, l’implementazione e l’amministrazione delle tue applicazioni su ambienti on premise, cloud pubblici o privati. Si tratta di una piattaforma PaaS (Platform as-a-Service) costruita sui container Docker e orchestrata con il motore Kubernetes, con cui potrai gestire tutto il ciclo di vita delle applicazioni, dalla creazione, al testing, alla distribuzione, agli aggiornamenti.

L'edizione di OpenShift proposta da Red Hat si integra con il sistema operativo Red Hat Enterprise Linux e funziona dunque in qualsiasi ambiente con installata questa piattaforma, per esempio su risorse Amazon Web Services, Microsoft Azure, Google Cloud Platform e Vmware. Web server, sistemi di gestione del database e vari strumenti di sviluppo sono inclusi nel servizio.

Red Hat OpenShift è lo strumento "definitivo", in quanto combina Kubernetes e la flessibilità dei container con dei meccanismi che permettono di automatizzare il build e il deploy delle applicazioni. Openshift è il collante entro il quale vivono, o possono convivere, tutti gli altri tool in precedenza menzionati: esso diventa quindi l'hub di collaborazione tra Dev e Ops.

Iniziando a prendere confidenza con questi "indispensabili" DevOps tools potrai dar forma alle tue idee e imprimere un'accelerata ai tuoi progetti, lasciandoti molte complicazioni alle spalle. Ma c'è molto altro da scoprire: per sapere quali vantaggi otterrai con i container, come poterli sfruttare in ambito aziendale e come gestirli al meglio, ti invito a leggere il nostro eBook gratuito "Modernizzare il rilascio delle applicazioni con i container".

Extra Red | Modernizzare il rilascio delle applicazioni con i container

Condividi l'articolo!

   

Commenti

Prova Red Cloud Gratis per 30 Giorni

Iscriviti alla newsletter

Condividi questo blog

   

Post correlati