DevOps combina lo sviluppo software (Dev) con le attività dell'IT (Ops), con l'obiettivo di accorciare il tempo di sviluppo e produrre software di alta qualità con integration e delivery continue.
PER SAPERNE DI PIÙ: Cos'è DevOps e come adottarlo
Con DevOps intendiamo una metodologia che mette assieme una serie di principi e buone prassi e che tende a utilizzare alcune tipologie di strumenti. Ma quali? Qui di seguito abbiamo elencato quelli che secondo noi sono i tool più utili e spiegato perché li riteniamo tali, senza la pretesa di creare un elenco esaustivo.
DevOps tools che coprono l’intero flusso DevOps
Iniziamo la nostra rassegna con GitLab e GitHub, due degli strumenti più completi presenti sul mercato: questi tool, infatti, coprono potenzialmente l'intero ciclo di vita del flusso DevOps. Chiaramente questo non toglie che alcuni passaggi del flusso possano essere gestiti con soluzioni iper specialistiche, che vedremo nei prossimi paragrafi.
1. GitLab
GitLab è una piattaforma DevOps completa, distribuita come una singola applicazione che gestisce la pianificazione dei progetti ed il codice sorgente fino alla CI/CD, monitoraggio e sicurezza, rilasciata con licenza Open Source. È possibile installarne una versione on-premise oppure acquistare un piano a pagamento su Gitlab.com.
Questo strumento permette di velocizzare il ciclo DevOps, nonché di ridurre i costi di sviluppo e il time to market aumentando la produttività degli sviluppatori. E lo fa grazie a una serie di features e funzionalità:
- Metriche e insight che permettono di intervenire per velocizzare la delivery
- Strumenti di planning che si adattano ad ogni processo di sviluppo, da quello Waterfall a DevOps
- Branching tools per la creazione, visualizzazione e gestione del codice e dei dati di progetto
- Testing automatizzato per la verifica degli standard di qualità del codice
- Package management built-in
- Automazione del processo di release e delivery delle applicazioni attraverso pipeline completamente configurabili
- Strumenti di configurazione e gestione delle applicazioni e dell’infrastruttura
- Monitoring per la rilevazione tempestiva degli errori
2. GitHub
GitHub è una piattaforma SaaS cloud-based che permette un approccio collaborativo alla gestione del codice, utile nella gestione di tutto il ciclo di vita del software. Di proprietà di Microsoft dal 2018, GitHub non è un progetto open source e non può essere installato on-premises, ma può essere utilizzato solo nella versione Cloud.
GitHub è una soluzione con funzionalità molto simili a quelle di GitLab, essendo quest’ultima la sua controparte Open Source. Facciamo comunque una rapida panoramica delle sue features:
- Strumenti di collaborazione allo sviluppo, test e deploy del codice
- Automazione della CI/CD, del testing, della pianificazione e del project management
- Identificazione delle vulnerabilità e analisi del codice in ottica di sicurezza
- Tool di project management, collaborazione e tracking delle attività
GitHub inoltre è disponibile anche tramite una mobile app dedicata.
La piattaforma, che è la più grande al mondo per l'hosting e la gestione di progetti open source, nella sua parte pubblica funge a tutti gli effetti da social network. Oltre ad essere uno strumento di lavoro, GitHub rappresenta per moltissimi sviluppatori uno spazio dove fare community con persone che hanno interessi simili e condividere progetti e idee.
DevOps tools per planning & collaboration
1. KANBAN TOOL
Kanban Tool è uno strumento software in Cloud per la gestione visiva dei progetti che permette di gestire attività e progetti attraverso una Kanban board. Kanban è sistema di produzione sviluppato in Giappone da Toyota per la produzione "just in time".
Lo scopo dello strumento è visualizzare il flusso di lavoro, misurarlo e gestirlo, limitare il work-in-progress, rendere le politiche di processo esplicite e riconoscere le opportunità di miglioramento. Kanban Tool è una suite SaaS proprietaria (closed source) che include il client web, Android e iOS e che può essere utilizzata on-premises.
2. JIRA
Jira è una delle più note piattaforme SaaS collaborativa per la gestione dei progetti creata dal gruppo statunitense Atlassian. Si integra con i principali strumenti per il controllo versione del software ed è spesso usata in combinazione con Bitbucket, il sistema di controllo versione della suite di Atlassian.
Jira permette di gestire un progetto attraverso le metodologie Agili, pianificarne le tappe di sviluppo attraverso Kanban board, tracciare i bug e in generale tutto il flusso di sviluppo.
Jira è disponibile sia nella versione Cloud che on-premise. L'evoluzione della piattaforma le permette di essere utilizzata non solo per lo sviluppo software ma anche come strumento per il project management.
DevOps tools per il configuration management
1. Terraform
Terraform è uno strumento per la creazione, la modifica e il controllo delle versioni dell'infrastruttura, che può gestire i più diffusi service provider o soluzioni custom.
Proviamo a riassumere il suo funzionamento per punti:
- I file di configurazione descrivono a Terraform i componenti necessari per eseguire una singola applicazione o l'intero data center
- Terraform genera un piano di esecuzione che descrive cosa farà per raggiungere lo stato desiderato
- Terraform esegue il piano per costruire l'infrastruttura descritta
- Man mano che la configurazione cambia, Terraform è in grado di determinare cosa è cambiato e di conseguenza creare piani di esecuzione incrementali
Terraform permette di gestire risorse di calcolo esterne, come Cloud pubblici, privati, appliance di rete, sistemi di Software-as-a-Service (SaaS) e Platform-as-a-Service (PaaS). Terraform utilizza un linguaggio dichiarativo per la configurazione delle macchine chiamato HashiCorp Configuration Language (HCL) oppure può utilizzare opzionalmente Json (JavaScript Object Notation).
2. Packer
Packer è uno strumento creato da HashiCorp. Si tratta di un software Open Source per automatizzare la creazione di “machine images” per differenti piattaforme a partire da una singola sorgente di configurazione.
HashiCorp Packer attualmente permette di automatizzare la costruzione di immagini per Amazon EC2, CloudStack, DigitalOcean, Docker, Google Compute Engine, Microsoft Azure, QEMU, VirtualBox, VMware. Rimane possibile comunque integrare ogni altra piattaforma data la sua natura estensibile a plug-in.
Il sistema utilizza tecniche di gestione della configurazione moderne e favorisce l'uso di script per il provisioning automatico. Inoltre, durante la creazione di immagini, Packer è in grado di utilizzare strumenti come Chef o Puppet per installare software sull'immagine.
DevOps tools per fare CI/CD
1. GitLab CI
GitLab CI è la componente per la Continuous Integration (CI) di GitLab, che permette di automatizzare la build e la fase di test del codice su larga scala.
La CI permette di integrare il codice sviluppato dai programmatori nel repository condiviso tramite merge request (MR) che attivano una pipeline con le fasi di build, test e validazione del nuovo codice prima di fare merge con il master del repository. Lo step successivo è quello della Continuous Delivery (CD) che permette di avviare un’attività di delivery strutturata del codice che è stato validato nella fase di CI.
Uno dei vantaggi della pipeline CI/CD di GitLab è rappresentato dalla possibilità di avere un unico flusso dalla pianificazione al deployment, tutto integrato all'interno della piattaforma. Si tratta inoltre di uno strumento open source facile da usare, scalabile, veloce (parallelizza la build) e ottimizzato per la delivery in contesti diversi.
La soluzione funziona su Linux, Windows, MacOS e le altre piattaforme che supportano il linguaggio GO, può essere testata localmente, supporta Docker e Kubernetes (architettura pensata per il Cloud Native), permette di usare password e chiavi di accesso in modo riservato e sicuro durante le varie fasi.
2. GitHub Actions
GitHub Actions è la componente per l'automazione dei workflow di sviluppo del codice secondo l'approccio CI/CD. Essa permette di avere la fase di build, test e deploy del codice direttamente da dentro GitHub, coordinando più branches, revisioni del codice e sistemi di individuazione e tracking dei problemi.
Utilizzabili su Linux, macOS e Windows, le Actions di GitHub permettono di avere build a matrice (cioè test simultanei in più sistemi operativi e versioni dell'ambiente runtime) e più linguaggi (a partire da Node.js, Python, Java, Ruby, PHP, Go, Rust e .NET).
Oltre agli aspetti di flessibilità, sicurezza, gestione dei log in tempo reale e test su più container, le Actions di GitHub sono arricchite dai flussi di lavoro definiti dalla community di sviluppatori e integrate con strumenti come Jira per gestire i ticket.
DevOps tools per il monitoring
1. Grafana + Prometheus
Grafana è uno strumento open source e multipiattaforma per la visualizzazione interattiva degli analitici di una applicazione web. Fornisce mappe, grafici e vari tipi di alert. Esiste anche una versione commerciale Grafana Enterprise che aggiunge ulteriori capacità nella versione a pagamento.
Come strumento di visualizzazione Grafana viene utilizzato in molti stack di visualizzazione in combinazione con altre soluzioni come Prometheus. Si tratta di un software open source gratuito e multipiattaforma per il monitoraggio degli eventi. Prometheus registra in tempo reale le metriche di un oggetto (sito, applicazione web o altro) archiviandole in un database come serie storica di data point.
2. Datadog
Datadog è un servizio di monitoraggio di applicativi software basato su Go che permette di monitorare il funzionamento di server, singoli database e servizi applicativi sul Cloud. Datadog svolge il suo lavoro di monitoraggio come piattaforma di Software-as-a-Service. Il servizio a pagamento è integrato con tutti i principali fornitori di servizi Cloud con più di 350 integrazioni specifiche fornite direttamente con lo strumento.
Datadog fornisce sistemi di log management, monitoraggio di infrastrutture, tracing end-to-end, sistemi serverless, monitoraggio di rete e monitoraggio per la sicurezza.
Conclusione
I progetti software, tanto nel Cloud quanto on-premises, sono diventati sempre più complessi e richiedono strumenti applicativi per la loro gestione, oltre alle metodologie migliori per il loro sviluppo e l'accompagnamento attraverso tutto il ciclo di vita del software.
Sul mercato esistono molti tool diversi, ma non sono tutti uguali. Soprattutto non sono tutti adatti per lo sviluppo DevOps con metodologia Agile. In questa breve guida abbiamo voluto indicare quelli che riteniamo essere alcuni degli strumenti secondo noi migliori. Un elenco frutto di ricerche, test e soprattutto tanta esperienza sul campo: speriamo che ti sia utile!
- Post precedente
- Vedi tutti i post
- Post successivo