La percezione che ho è che in molti parlino di DevOps, pochi usino gli strumenti DevOps e nessuno pensi da DevOps.
DevOps è un termine che negli ultimi anni ha acquisito una crescente importanza nel mondo dell'informatica e del Cloud. È un acronimo che deriva dalla fusione di "Developer" e "Operational", ma il suo significato va ben oltre la semplice somma dei due termini. DevOps significa approcciare alle attività da sistemista con procedure e modalità del developer.
DevOps, oltre a essere un modello, rappresenta anche una cultura con la comunicazione al centro, l’efficienza come traguardo e la ripetibilità come dogma.
Adottando questa metodologia è possibile garantire innovazione e qualità di software e sistemi interi in modo continuativo.
Nel mercato, soprattutto italiano, sembra esserci qualche fraintendimento sul tema e in CloudFire ce ne accorgiamo soprattutto nelle fasi di ricerca di talenti con competenze specifiche DevOps. La poca chiarezza non è tanto di chi offre questo tipo di skills, anzi, arriva dalla domanda del mercato stesso. In poche parole, molti cercano figure e approcci DevOps aspettandosi tutt’altro.
Per questo motivo, in questo articolo, vogliamo chiarire che cosa significa DevOps per CloudFire, in ogni sua accezione.
DevOps come Modello
DevOps rappresenta un approccio multidisciplinare alla gestione di infrastrutture intere in quanto utilizza gli stessi strumenti per il deploy di software come di virtual machines, di databases come di infrastrutture cloud, di reti come di web servers, e via dicendo.
L’obiettivo principale di questo modello è quello di accelerare il time-to-market di software e infrastrutture, garantendone qualità, riproducibilità e stabilità e prevede:
- Continuous Integration (CI) del codice attraverso l’automatizzazione dei processi di build e test del codice prodotto;
- Continuous Distribution (CD) di nuove funzionalità e bugfix in modo rapido e sicuro sempre tramite l’automazione dei processi di Deploy e monitoring;
- Infrastructure as a Code per una gestione dell’infrastruttura attraverso strumenti di configurazione e provisioning automatizzati, gli stessi utilizzati per il rilascio di software;
- Monitoraggio continuo con la raccolta e l’analisi dei dati utilizzati per scatenare azioni automatiche di modifica in ottica di ottimizzazione performance e di resilienza;
- Collaborazione e comunicazione tra team mediante la promozione di una cultura aziendale e l’utilizzo di metodologie condivise tra mondi che storicamente non si sono mai parlati molto.
Quali sono i benefici del modello DevOps?
A seconda del contesto e dell’effettivo utilizzo del modello, è possibile:
- Soddisfare maggiormente il cliente con una miglior user experience, una maggior velocità nel rilascio di nuove funzionalità e di risoluzione dei problemi;
- Garantire l’omogeneità di ambienti di Produzione e di Test così da evitare problemi derivanti da procedure differenti per il rilascio nei diversi contesti;
- Fornire un processo di lavoro strutturato e condiviso tra più aree del business.
DevOps come Profilo professionale
Come dicevamo prima, DevOps non è solo un modello, è anche una figura professionale che possiede competenze sia nello sviluppo software che nelle operazioni IT. Si occupa di automatizzare i processi, configurare l'infrastruttura, risolvere problemi e garantire la continuità operativa dei sistemi.
Attenzione, non si tratta di un sistemista che ora sa programmare, ma di un sistemista che utilizza metodi e strumenti del developer per operare su infrastrutture che di norma erano prerogativa dell’operational.
Di base quindi, in CloudFire un DevOps Engineer è una figura che ha competenze trasversali su:
- Strumenti di condivisione e Versioning: Git, BitBucket, Mercurial;
- Programmazione: Linguaggi come Python, Go, Typescript;
- Sistemi operativi: Linux, Windows;
- Cloud computing: AWS, Azure, Google Cloud, Openstack, Software Defined Storages;
- Strumenti DevOps: Ansible, Puppet, Docker, Kubernetes;
- Database: MySQL, PostgreSQL, Elasticsearch, MongoDB, Neo4j
- Reti: Networking di base.
- Strumenti di monitoring: Prometheus, Grafana, Loki.
La richiesta di un tale pool di competenze, trasversali fra di loro, è intrinseca e legata alla natura delle attività che un DevOps Engineer svolge tutti I giorni.
DevOps tools e tecnologie
Parlando di DevOps poi è naturale parlare anche di strumenti e tecnologie utilizzate. Fermo restando che I tool che supportano il modello DevOps sono numerosi e in continua evoluzione, ne elenchiamo di seguito I più comuni:
- Strumenti di version control: Git;
- Strumenti di integrazione continua: Jenkins, CircleCI, Gitlab-ci, Tekton;
- Strumenti di distribuzione continua: FluxCD, Sveltos, Argo CD;
- Strumenti di containerizzazione: Docker, ContainerD, CRI-O, katacontainer;
- Strumenti di orchestrazione: Kubernetes, Nomad;
- Strumenti di configurazione: Ansible, Puppet, Chef, Terraform;
- Strumenti di monitoraggio: Prometheus, Grafana, Elasticsearch, Loki, Jaeger.
DevOps in CloudFire
DevOps per come lo intendiamo in CloudFire è tutto questo e oltre: un approccio insito nella cultura aziendale che ci permette di innovare e di migliorare continuamente.
Ed è proprio questo di cui siamo sempre alla ricerca!
Se sei interessato a questo approccio e desideri unirti al nostro team, applicati!