Alla sua uscita, il Manifesto Agile ha rivoluzionato il mondo tech. Ha suggerito, fra le altre cose, che l'agile team, ovvero il team di sviluppo nel lavoro agile, dovrebbe lavorare direttamente con il cliente (o con il product owner). Quest’approccio permette di ridurre tempi e costi quando diventano necessarie modifiche ed aggiunte durante il progetto.
Sono passati ormai 22 anni da quando l’Agile Methodology è nata. Nonostante i grandi vantaggi, è emersa una mancanza critica: sono stati esclusi dalla rivoluzione i processi e i requisiti del team che deve operativamente distribuire e gestire il software.
Com'è nato DevOps?
DevOps è nato per integrare questi aspetti alle metodologie agili. È un approccio allo sviluppo software che consente all agile development team di creare, testare e rilasciare il software in modo rapido e affidabile, incorporando principi e pratiche del lavoro agile. Permette una maggiore automazione ed una migliore collaborazione tra i team di sviluppo e di operations (una separazione che va a sparire).
Quest’articolo ti aiuterà ad identificare gli strumenti DevOps più eleganti e diffusi che accelereranno il ritmo dell'innovazione e della trasformazione digitale nel 2022.
1. Kubernetes & Docker: a love story
Non si smette di parlare di Kubernetes.
Il motivo per cui è un punto di svolta è che, per la prima volta in decenni di best practice IT, ora abbiamo una lingua comune. Qualsiasi strumento che creerai o adotterai dovrà solo sapere come parlare con Kube, e quindi in virtù di Kube potrai controllare una vasta gamma di strumenti e software del tuo panorama IT.
Prima di Kube era necessario conoscere la lingua dell'API dei propri fornitori di storage, l'API del fornitore di rete, l'API del sistema di bilanciamento del carico, l'API del fornitore di server/hypervisor e l'elenco potrebbe continuare… Ora i fornitori stessi sono responsabili della manutenzione dei driver (traduttori) in modo che Kube sappia come guidare la loro API. Ciò riduce notevolmente i costi di gestione dell'IT.
Inoltre, ora che i container stanno diventando mainstream, anche i fornitori di app stanno entrando in questa logica. Con Kubernetes, puoi distribuire un'app perfettamente configurata in pochi secondi.
Docker è la piattaforma di definizione ed esecuzione del container. Kubernetes è l’orchestratore dei container, che lega tutto assieme.
2. Azure DevOps
(Foto da microsoft docs)
Al livello più alto, puoi pensarlo come una suite di strumenti. Così come Office è una raccolta di strumenti amministrativi per la produttività, Azure DevOps è una raccolta di strumenti tecnici per la produttività.
Originariamente era usato solo per lo sviluppo di software, ma il modo in cui la vedo io è che è più uno strumento di orchestrazione dell'automazione. Si occupa dell'applicazione dal momento in cui viene creata fino al monitoraggio, quando è già stata consegnata ai clienti.
Dispone di strumenti per gestire lo sviluppo, per versionare il codice, per rilasciare il software nei vari ambienti e per monitorare il software. Gestisce la knowledge base di un'azienda, permette di testare il codice ed implementare politiche di sicurezza. Infine, si integra con un sacco di altri sistemi per inviare notifiche ed espandere ulteriormente le sue capacità!
3. Terraform
(Foto da whizlabs.com)
Terraform ti consente di definire l'infrastruttura dei tuoi sistemi in forma di codice (Infrastructure as Code). Permette di ricostruire, modificare e tenere traccia delle modifiche all'infrastruttura con facilità. Ci sono alcune alternative ma generalmente si concentrano su un singolo provider cloud: Terraform è l'unico maturo che è completamente indipendente dalla piattaforma. Supporta:
- Microsoft Azure;
- Google Cloud;
- Amazon Web Services;
- Oracle Cloud;
- VMWare vSphere;
- Alibaba Cloud.
Risolve molti problemi affrontati quotidianamente in DevOps, quindi è un prodotto molto interessante. Se lavori in ambito IT, dovresti almeno essere consapevole di quali problemi sta cercando di risolvere.
4. Ansible
(Foto da techgenix.com)
Simili agli script Terraform, i playbook Ansible (con una logica più imperativa che descrittiva rispetto a Terraform) vengono utilizzati frequentemente per risolvere task ripetitivi e per configurare (e riconfigurare) infrastrutture anche complesse.
È incredibilmente utile e potente. Se dovessi ottenere informazioni da 500 macchine contemporaneamente (o, al contrario, sincronizzare i dati da una macchina ad altre 500), i comandi Ansible lo renderebbero estremamente semplice.
Ansible, grazie al Vault e al template engine, facilita inoltre la gestione dei secret Kubernetes, permettendo di velocizzare il popolamento degli helmchart con dati sensibili, chiavi, password, certificati.
Si fa presto ad impararlo, visto che la documentazione è chiare ed esaustiva.