20 anni fa, il termine “ingegnere DevOps” era sconosciuto.
Oggi, i DevOps engineer (o ingegneri DevOps) sono il collante che tiene insieme i dipartimenti IT e permettono ai vari team di consegnare i progetti più velocemente e in modo più efficiente.
Questa crescita si nota nei soldi che girano intorno a questo ruolo.
Il mercato DevOps era valutato solo 4 miliardi di dollari nel 2019, ma si prevede che crescerà fino a 17 miliardi di dollari entro il 2026. Naturalmente, la domanda di DevOps engineer sta aumentando rapidamente in tutto il mondo.
Se avete sempre voluto sapere cosa fa un ingegnere DevOps, questo è l’articolo che fa per voi.
Continuate a leggere e imparerete tutto quello che c’è da sapere per diventare ingegneri DevOps, comprese le competenze necessarie, le vostre responsabilità come ingegnere DevOps e quanto potete aspettarvi di guadagnare nel vostro nuovo ruolo.
Cominciamo!
Cos’È DevOps?
DevOps è un insieme di pratiche, strumenti e approcci per gestire lo sviluppo del software e i progetti IT.
Il termine “DevOps” deriva dalle parole “sviluppo” (development) e “operazioni” (operations) Patrick Debois ha inizialmente usato il termine DevOps per la conferenza del 2009 DevOps Days. A DevOps Days, Debois ha presentato DevOps come un approccio alternativo che aiutava i team di sviluppo a consegnare i progetti più velocemente attraverso una gestione attenta e distribuzione continua.
Dopo la conferenza, DevOps ha iniziato a crescere in popolarità in tutto il mondo. Nel 2013, DevOps è stato presentato nel libro ‘The Phoenix Project‘ (scritto da George Spafford, Kevin Behr e Gene Kim). Nel suo libro, il manager IT Bill usa DevOps per completare un grande progetto in 90 giorni.
Chi Sono i DevOps Engineer?
Un ingegnere DevOps è un professionista IT che lavora con il team di sviluppo software, il personale operativo IT, gli utenti del sistema e la gestione per ottimizzare il lancio di nuovi aggiornamenti e programmi.
Gli ingegneri DevOps sono essenzialmente la spina dorsale dei dipartimenti IT, e creano rapidamente sistemi integrati e facili da usare.
Benefici dell’Assunzione di un DevOps Engineer
Ci sono molti benefici nell’assumere una persona esperta in DevOps in quanto può:
- Aiutare un’azienda a integrare meglio i suoi sistemi IT, rendendoli più user-friendly
- Aiutare i team di sviluppo a rilasciare più velocemente i progetti di sistema ottimizzando il processo di sviluppo
- Implementare strumenti DevOps che aiutano i team di sviluppo a migliorare la qualità del loro lavoro
- Automatizzare i processi interni ripetitivi
- Aiutare a progettare sistemi cyber-sicuri
- Implementare pratiche DevOps come l’Integrazione continua / Continuous Delivery (CI/CD)
La ricerca del rapporto 2020 DevOps Trends di Atlassian mostra anche che:
- Il 61% delle aziende intervistate che hanno implementato DevOps credono che abbia aiutato a produrre “prodotti di qualità superiore”
- Il 49% delle aziende intervistate che hanno implementato DevOps credono che abbia migliorato la frequenza di deployment
- Il 99% delle aziende intervistate crede che DevOps “abbia avuto un impatto positivo sulla loro organizzazione”
Cosa Fa un DevOps Engineer?
Per capire cosa fa un ingegnere DevOps, dovete capire il ciclo di vita dello sviluppo dei sistemi o Systems Development Life Cycle, abbreviato come SDLC).
Il SDLC comprende sei fasi di sviluppo, tra cui:
- Pianificazione: Quando il team di sviluppo delinea lo scopo e i requisiti del progetto
- Analisi: Quando il team di sviluppo ricerca e analizza i requisiti per implementarli nel sistema
- Progettazione: Quando il team di sviluppo disegna l’architettura del progetto
- Implementazione: Quando il team di sviluppo costruisce il sistema
- Test: Quando il team di sviluppo testa il codice del sistema e risolve gli errori
- Deployment e manutenzione: Quando il team di sviluppo rilascia il sistema ed esegue la manutenzione per eliminare ogni ostacolo al funzionamento
Esistono diversi approcci al SDLC, comprese le metodologie Waterfall e Agile. Nella metodologia Waterfall, le persone lavorano attraverso il SDLC dalla pianificazione all’implementazione e alla manutenzione in modo sequenziale. Nel metodo Agile, le persone lavorano con il SDLC in maniera continuativa.
Gli approcci Waterfall e Agile si presentano così:
DevOps è parzialmente costruito sull’approccio Agile allo sviluppo. In particolare, gli ingegneri DevOps implementano una versione del SDLC conosciuta come DevOps Life Cycle. Come l’approccio Agile, il DevOps LifeCycle si muove in loop tra queste fasi:
- Pianificazione
- Feedback continuo
- Operazione
- Integrazione continua e distribuzione continua
- Costruzione
Il DevOps LifeCycle si presenta così:
Gli ingegneri DevOps operano anche sui principi di integrazione continua e di consegna continua (Continuous Integration e Continuous Delivery, o CI/CD).
L’integrazione continua è la pratica di aggiungere continuamente modifiche al codice nel vostro repository (essenzialmente compilando il codice mentre lo scrivete). La consegna continua è la pratica di preparare automaticamente e costantemente le modifiche al codice per la distribuzione (spingendo nuove caratteristiche, correzioni di bug e aggiornamenti agli utenti in modo continuo, piuttosto che in un unico grande aggiornamento).
Quali Sono le Responsabilità degli Ingegneri DevOps?
La quotidianità lavorativa degli ingegneri DevOps è difficile da riassumere in modo univoco perché ogni team di sviluppo lavora su progetti unici per aziende con diversi approcci DevOps. Tuttavia, esistono alcune responsabilità chiave che la maggior parte degli ingegneri DevOps condividono. Queste includono:
Gestione del Progetto
Gli ingegneri DevOps spesso supervisionano e gestiscono più progetti IT in contemporanea. In pratica, questo significa che programmano e gestiscono le riunioni, fissano le scadenze, controllano i membri del team, delegano il lavoro, valutano il lavoro, allenano i compagni di squadra e danno consigli sulle decisioni del progetto.
Gli ingegneri DevOps fanno anche da collegamento con gli utenti, la gestione e gli sviluppatori durante la progettazione di un sistema.
Gestire la Sicurezza del Sistema
Gli ingegneri DevOps ottimizzano la sicurezza dell’infrastruttura IT della loro azienda progettando sistemi, aggiornamenti e pratiche di sicurezza informatica. Anche se tutti gli ingegneri DevOps considerano la sicurezza nel loro lavoro quotidiano, alcuni ingegneri DevOps (chiamati ingegneri SecDevOps) si concentrano a tempo pieno sulla sicurezza del sistema.
Migliorare l’Infrastruttura IT
Gli ingegneri DevOps cercano i punti deboli dell’infrastruttura IT e lavorano per migliorarli. In particolare, creano soluzioni per aiutare gli sviluppatori a lavorare più velocemente, individuano i difetti dei programmi o progettano aggiornamenti in base al feedback degli utenti.
Poiché gli ingegneri DevOps si concentrano su un approccio CI/CD, apportano costantemente piccoli miglioramenti all’infrastruttura IT.
Automatizzare i Compiti Ripetitivi
Gli ingegneri DevOps riducono i compiti ripetitivi necessari per portare in vita un nuovo sistema o un aggiornamento. Per esempio, un ingegnere DevOps può progettare un plugin software per aiutare gli sviluppatori a codificare più velocemente e con meno errori.
È importante notare che gli ingegneri DevOps non stanno cercando di automatizzare il lavoro degli sviluppatori. Stanno semplicemente lavorando per migliorare l’efficienza dello sviluppo grazie soluzioni di sviluppo più facili e veloci.
Benchmarking e Test delle Prestazioni
Gli ingegneri DevOps tengono traccia del funzionamento quotidiano dell’infrastruttura IT attraverso test di benchmark. I test di benchmark li aiutano a identificare le aree di inefficienza del sistema e a mitigare i potenziali problemi prima che si presentino.
I test di benchmark che ogni ingegnere DevOps utilizza dipendono dall’organizzazione e dal progetto, anche se di solito usano test che aderiscono ai sette principi di benchmarking.
- Rilevanza
- Rappresentatività
- Equità
- Ripetibilità
- Costo-efficacia
- Scalabilità
- Trasparenza
Ottimizzare i Cicli di Rilascio
Gli ingegneri DevOps ottimizzano il ciclo di rilascio del sistema riducendo il tempo e le risorse necessarie per progetti o aggiornamenti. Ci sono molti modi in cui gli ingegneri DevOps migliorano il ciclo di rilascio, compresa la rimozione delle perdite di tempo, dando priorità ai componenti critici di ogni rilascio o introducendo nuovi software e strumenti.
Monitoraggio e Segnalazione degli Errori
Infine, gli ingegneri DevOps monitorano costantemente il software e i sistemi per aiutare a risolvere rapidamente gli errori del sistema. Gli ingegneri DevOps sono interessati soprattutto a ridurre la lunghezza del tempo tra il momento in cui l’errore viene rilevato (cioè il Time to Detect o TTD) e risolto (cioè il Time to Minimize o TTM). Anche se alcuni ingegneri DevOps risolvono gli errori di sistema manualmente, altri lasciano questo compito agli sviluppatori full-stack.
Quali Competenze Servono per Diventare DevOps Engineer?
Dato che gli ingegneri DevOps hanno diverse responsabilità sul lavoro, avrete bisogno di molte abilità diverse per fare questo mestiere. In questa sezione delineiamo alcune di queste abilità critiche.
Esperienza con gli Strumenti di Automazione
Per prima cosa, dovrete sapere come usare gli strumenti di automazione. Gli strumenti di automazione vi permettono di affidare funzioni ripetitive a programmi di automazione. Due di questi programmi di automazione includono:
Atlassian Bamboo
Atlassian Bamboo è uno strumento di integrazione e CI che permette agli sviluppatori di automatizzare il processo di costruzione e distribuzione. È un programma open-source che funziona con tutti i linguaggi di programmazione e offre pre-costruzioni, test del codice, strumenti di reporting e strumenti di distribuzione. Questo strumento si integra anche con altri programmi come Jira, BitBucket e Git (tra gli altri). Atlassian è disponibile in versioni gratuite e a pagamento a seconda delle dimensioni e dei requisiti del vostro team.
Jenkins
Jenkins è un server di automazione gratuito che aiuta gli sviluppatori ad automatizzare la costruzione del sistema di distribuzione attraverso i plugin. Jenkins offre più di 1.800 plugin forniti dalla comunità ed è open-source (quindi potete sviluppare e usare i vostri plugin personalizzati). Jenkins si integra anche con strumenti come Git.
Esperienza con i Sistemi di Controllo di Versione
Come ingegnere DevOps, dovrete anche acquisire familiarità con i sistemi di controllo delle versioni (Version Control Systems, o VCS). Questi strumenti aiutano sviluppatori e ingegneri DevOps a tenere traccia degli aggiornamenti al loro repository di codice sorgente. Risolvono anche i conflitti quando più persone aggiungono codice contemporaneamente.
Se avete un background di software developer, probabilmente saprete già usare strumenti VCS popolari come Git. Git è uno strumento gratuito e open-source che si integra con strumenti di hosting di repository come GitHub e BitBucket.
Esperienza con gli Strumenti di Hosting dei Repository
Visto che siete parte del team di sviluppo, saprete usare gli strumenti di repository hosting come ingegnere DevOps. Come suggerisce il nome, gli strumenti di repository hosting ospitano il codice in modo sicuro nel cloud. Questi strumenti danno anche agli sviluppatori l’accesso al codice pre-scritto per accelerare il processo di sviluppo del software.
Come ingegneri DevOps dovrete avere familiarità con tre strumenti di hosting cruciali. Questi includono:
GitHub
GitHub è un servizio di hosting basato sul cloud usato da più di 65 milioni di sviluppatori, più di 3 milioni di organizzazioni e il 72% delle aziende Fortune 500 del mondo. GitHub esiste dal 2008 e offre versioni gratuite e a pagamento. Al momento Microsoft possiede GitHub.
GitLab
GitLab è un’alternativa a GitHub con caratteristiche DevOps come integrazione continua, sicurezza e strumenti di gestione dei progetti. GitLab offre sia piani gratuiti che a pagamento e si integra con Git. Nonostante i loro nomi simili, non c’è alcuna affiliazione tra GitLab e GitHub.
Atlassian BitBucket
BitBucket è un servizio di hosting progettato apposta per i team di sviluppo. Si integra con Git e strumenti di gestione dei progetti come Jira e Trello. Se avete cinque utenti o meno, potete usare BitBucket con il suo piano gratuito.
Esperienza con gli Strumenti di Gestione della Configurazione
Come ingegneri DevOps, dovrete anche avere familiarità con gli strumenti di gestione della configurazione. Questi strumenti aiutano i professionisti IT a configurare in modo coerente i diversi elementi del sistema o della rete. Aiutano anche gli sviluppatori a ridurre il tempo di implementazione di un nuovo sistema.
Ci sono due popolari strumenti di gestione della configurazione che gli ingegneri DevOps utilizzano. Questi includono:
Puppet
Puppet precede DevOps poiché Puppet Labs Limited lo ha rilasciato per la prima volta nel 2005. Nonostante la sua età, Puppet è ancora oggi uno dei migliori strumenti di gestione della configurazione, poiché permette agli sviluppatori di impostare lo stato desiderato per il loro sistema. Puppet poi configura automaticamente il sistema in quello stato.
Chef
Chef è un altro strumento open-source di gestione della configurazione. È costruito intorno allo “Chef Server”, che funge da centro operativo. Lo Chef Server supervisiona e gestisce le Chef Workstations e gli Chef Nodes sulla rete. Come Puppet, Chef permette agli sviluppatori di impostare lo stato desiderato per il loro sistema sotto forma di “ricettario” (per rimanere in tema con il nome). Facebook, IBM e Rakuten usano Chef.
Esperienza con il Software di Monitoraggio
Visto che il monitoraggio è una componente cruciale del lavoro di un DevOps Engineer, gli ingegneri DevOps devono avere familiarità con il software di monitoraggio. Il software di monitoraggio vi permette di osservare l’infrastruttura per qualsiasi potenziale problema.
Anche se ogni organizzazione ha il suo approccio al monitoraggio, si possono usare strumenti di monitoraggio come:
Nagios
Nagios è un vecchio strumento DevOps open-source rilasciato nel 2002. Controlla la vostra infrastruttura in background e vi avvisa se sospetta che ci sia un problema. Oltre 9.000 clienti attualmente usano Nagios per il monitoraggio di server e applicazioni.
Raygun
Raygun è un servizio di monitoraggio in tempo reale per applicazioni web e mobili. Raygun tiene traccia delle implementazioni, dell’esperienza del cliente, degli errori e dei crash e di come gli utenti interagiscono con il sistema. Marchi come Coca-Cola, Target, Microsoft e Avis usano Raygun.
Competenze di Codifica
Poiché gli ingegneri DevOps sono una parte cruciale del processo di sviluppo, per avere successo in questo ruolo è fondamentale avere familiarità con alcuni dei più comuni linguaggi di scripting e programmazione.
Un linguaggio di scripting è un linguaggio di programmazione che viene tradotto in codice macchina dopo l’esecuzione. Ci sono due tipi di linguaggi di scripting: lato server e lato client. Alcuni dei più popolari linguaggi di scripting lato client includono HTML, CSS e Javascript. Alcuni dei linguaggi di scripting lato server più popolari includono PHP, Node.js, ASP.NET, Ruby, Perl, Python e Java.
Un linguaggio di programmazione usa un compiler per convertire il codice in codice macchina. Due dei linguaggi di programmazione più popolari sono C++ e C.
Competenza negli Strumenti di Containerizzazione
In molte organizzazioni gli ingegneri DevOps lavorano con strumenti di containerizzazione, i quali aiutano gli sviluppatori a confezionare il codice e a distribuirlo in piccoli container. Distribuire il codice con la containerizzazione permette ai sistemi di funzionare più velocemente e più efficacemente tra diversi ambienti.
Per diventare ingegneri DevOps di successo, dovreste imparare le basi degli strumenti di containerizzazione come:
Docker
Docker è uno strumento Platform-as-a-service che permette agli sviluppatori di costruire, impacchettare e distribuire il codice tramite container. Docker si integra con GitHub e alimenta DevKinsta.
Kubernetes
Kubernetes (conosciuto anche come ‘K8s’) è un sistema open-source per la distribuzione e la gestione che usa la containerizzazione. Kubernetes offre rollout automatici, gestione della configurazione, impacchettamento automatico dei container, esecuzione batch e bilanciamento del carico (tra le altre caratteristiche).
Esperienza con gli Strumenti di Gestione dei Progetti
Poiché gli ingegneri DevOps gestiscono e supervisionano i progetti di sviluppo, prima di diventare ingegneri DevOps è necessario conoscere gli strumenti di sviluppo dei progetti. Gli strumenti di gestione dei progetti aiutano le persone a tenere traccia dei progetti usando diagrammi di Gantt, liste di controllo e sistemi di archiviazione basati su schede.
Tre degli strumenti di gestione dei progetti più popolari per DevOps includono:
- Trello: Trello è uno strumento di gestione dei progetti basato su schede. Con Trello, potete creare delle schede con una serie di liste. Poi, spostate le carte tra queste liste. Trello è uno strumento collaborativo, il che significa che più persone possono modificare ogni scheda. Le persone spesso paragonano Trello ad Asana.
- Atlassian Jira: Jira è uno strumento di gestione dei progetti progettato specificamente per i team IT che usano un approccio Agile o DevOps. Jira vi permette di tracciare ogni compito richiesto con schede e tabelle per il progetto. Jira è anche uno strumento di collaborazione che ospita più utenti contemporaneamente.
- Atlassian Confluence: Atlassian Confluence è uno strumento di lavoro che permette ai piccoli team di condividere il lavoro e gestire i progetti attraverso un calendario o una timeline. Alcuni team usano Jira e Confluence insieme.
Esperienza con i Servizi di Cloud Pubblico
Dato che gli ingegneri DevOps lavorano spesso con progetti basati sul cloud, per svolgere bene il vostro nuovo ruolo dovrete avere familiarità con i servizi basati sul cloud. I servizi di cloud pubblico sono servizi informatici che permettono alle organizzazioni di condividere reti, storage e hardware. Quando le organizzazioni usano i servizi di cloud pubblico, accedono alla loro infrastruttura attraverso internet.
Tre dei servizi cloud pubblici più popolari includono:
- Microsoft Azure
- Google Cloud
- Amazon Web Services (AWS)
Competenze Rivolte al Cliente
Poiché gli sviluppatori DevOps hanno bisogno di lavorare con gli utenti del sistema, è necessaria una buona abilità nel servizio al cliente per avere successo come DevOps. In particolare, avrete bisogno di eccellenti capacità di ascolto attivo, buone capacità di comunicazione, capacità di risoluzione dei conflitti e un talento per capire le esigenze degli utenti.
Abilità di Gestione Collaborativa
Dato che gli ingegneri DevOps spesso lavorano in piccoli team, dovrete essere capaci di lavorare in squadra. In particolare, dovrete essere molto efficaci nel dare e accettare feedback costruttivi, fare brainstorming in gruppo e lavorare per un obiettivo comune.
Competenze di Sviluppo WordPress
Poiché WordPress alimenta il 40% di tutti i siti web, potreste aver bisogno di robuste competenze di sviluppo WordPress per far parte di un team WordPress DevOps. In particolare, dovrete imparare come funziona WordPress e usare strumenti di hosting come DevKinsta.
DevKinsta è uno strumento di sviluppo gratuito che le persone usano per creare, sviluppare e testare siti WordPress. DevKinsta offre la gestione del database, il test delle email integrato, la registrazione degli errori di WordPress e un semplice processo di deployment. Al momento sono più di 10.000 i professionisti che usano DevKinsta.
Stipendio DevOps Engineer
Anche se l’ingegneria DevOps è ancora in fase di sviluppo, la maggior parte degli ingegneri DevOps guadagnano un ottimo stipendio.
Al 28 giugno 2021, lo stipendio medio degli ingegneri DevOps negli Stati Uniti era di 118.872 dollari. Questo significa che la maggior parte degli ingegneri DevOps a tempo pieno guadagnano tra 107.023 e 132.217 dollari. La variazione in questo intervallo tiene conto dell’istruzione, dell’esperienza professionale, delle competenze, delle responsabilità, della posizione e dell’azienda. Se il vostro datore di lavoro vi paga gli straordinari, i bonus o i benefit, il vostro stipendio potrebbe essere fuori da questo intervallo.
Poiché DevOps è un ruolo ancora nuovo, vale la pena notare che lo stipendio medio DevOps è diverso su alcuni siti web. Per esempio, Indeed riporta che lo stipendio medio DevOps è di 121.035 dollari negli Stati Uniti (al 13 luglio 2021).
Cosa Cercare Quando Si Assume un DevOps Engineer
Finora questo articolo si è concentrato sulle persone che vogliono diventare ingegneri DevOps. Ma che dire dei datori di lavoro? Se avete intenzione di assumere un ingegnere DevOps, tenete in considerazione alcune delle abilità e caratteristiche distintive dei grandi ingegneri DevOps.
Queste includono le seguenti.
Hard Skill
- Conoscenza dei linguaggi di scripting e di programmazione
- Una comprensione della metodologia Agile e dell’SDLC
- Una comprensione di concetti come la containerizzazione e l’automazione
- Competenza nella sicurezza informatica
- Esperienza con sistemi di controllo della versione, strumenti di hosting dei repository, strumenti di gestione della configurazione, strumenti di containerizzazione e strumenti di automazione
- Esperienza di monitoraggio, pianificazione e progettazione di progetti di sviluppo
Se un potenziale sviluppatore ha esperienza con i seguenti strumenti, potrebbe avere le competenze per essere un ottimo ingegnere DevOps:
- Bamboo
- Jenkins
- Git
- GitHub
- BitBucket
- Puppet
- Chef
- Nagios
- Raygun
- Docker
- DevKinsta
- Kubernetes
- Trello
- Atlassian Jira
- Atlassian Confluence
Competenze Trasversali
- Esperienza nella gestione di un progetto, inclusa l’organizzazione di riunioni, la definizione di scadenze e la delega del lavoro
- Eccellente lavoro di squadra e capacità di collaborazione
- Buone capacità creative di risoluzione dei problemi
- La capacità di accettare feedback e regolare il lavoro di conseguenza
- Grande capacità di ascolto attivo
- Esperienza di lavoro con gli utenti e in team diversi dove le persone hanno competenze molto diverse
Background Adatti ai Ruoli DevOps
Poiché DevOps è un campo nuovo, molti ingegneri DevOps passano a DevOps da altri ruoli. Se la persona che state considerando ha un background nello sviluppo software, nella gestione dell’hardware, nella gestione generale dell’IT o nell’amministrazione di sistema, avrà delle competenze trasferibili adatte a un lavoro di ingegneria DevOps.
Una persona può essere un ottimo ingegnere DevOps se ha una laurea o un titolo di specializzazione in uno di questi campi:
- Informatica
- Tecnologia dell’informazione
- Sistemi informativi
- Ingegneria del software
- Ingegneria dei sistemi
Riepilogo
Anche se DevOps si sta ancora sviluppando, gli ingegneri DevOps stanno diventando sempre più importanti nelle aziende con sistemi IT estesi (ma critici).
Un ingegnera o ingegnere DevOps di successo vale il suo peso in oro, in quanto può supervisionare i progetti IT, ottimizzare le prestazioni di altri team e accelerare il ciclo di vita dello sviluppo.
Supponiamo che vogliate diventare eccellenti professionisti DevOps. In questo caso, dovreste lavorare sulla vostra conoscenza di DevOps e familiarizzare con i servizi cloud pubblici più popolari, le tecnologie di virtualizzazione, gli strumenti di gestione dei progetti, gli strumenti di gestione della configurazione, gli strumenti di automazione e gli strumenti di codifica. Dovrete anche sviluppare forti capacità di collaborazione, ascolto e gestione dei progetti.
Cosa ne pensate dell’approccio DevOps? Ditecelo nei commenti qui sotto.
Lascia un commento