Chi รจ l'ingegnere DevOps?

Gli ingegneri DevOps devono possedere competenze che abbracciano lo sviluppo e le operazioni, nonchรฉ competenze interpersonali per colmare le distanze tra team isolati.

Prova Compass gratis

Migliora la tua esperienza di sviluppatore, cataloga tutti i servizi e aumenta l'integritร  del software.

Quando un'organizzazione รจ radicata in una struttura a silos in cui sviluppo e operazioni funzionano separatamente, l'implementazione di DevOps comporta spesso una revisione della struttura organizzativa. Sono necessari le persone, la cultura e gli strumenti giusti per implementare correttamente la metodologia DevOps. Tuttavia, uno degli ostacoli piรน comuni all'implementazione di questa metodologia รจ la mancanza di competenze nei dipendenti, in base a quanto emerso dalla 2020 DevOps Trends Survey di Atlassian.

L'ingegnere DevOps riveste un ruolo chiave nell'implementazione di una ristrutturazione DevOps. Questa persona deve possedere un ampio ventaglio di competenze che vanno dallo sviluppo alle operazioni, ma anche le competenze interpersonali per colmare le distanze tra i team isolati.ย 

Chi รจ l'ingegnere DevOps?

L'ingegnere DevOps รจ un tecnico IT generalista che deve avere una vasta conoscenza sia dello sviluppo che delle operazioni, inclusi i processi di codifica, la gestione dell'infrastruttura, l'amministrazione del sistema e le toolchain DevOps. Dal momento che lavorano con l'obiettivo di creare un ambiente piรน collaborativo tra i vari silos aziendali, gli ingegneri DevOps devono possedere anche abilitร  interpersonali.ย 

Gli ingegneri DevOps devono avere una solida conoscenza dell'architettura, del provisioning e dell'amministrazione di sistema comuni, ma devono anche avere esperienza con il set di strumenti e le pratiche di sviluppo tradizionali, ad esempio l'uso del controllo del codice sorgente, la fornitura e la ricezione di revisioni del codice, la scrittura di test unitari e familiaritร  con i principi Agile.

Ruoli e responsabilitร 

Il ruolo dell'ingegnere DevOps varia da un'organizzazione all'altra, ma implica inevitabilmente una combinazione di progettazione dei rilasci, provisioning e gestione dell'infrastruttura, amministrazione del sistema, sicurezza e advocacy DevOps.ย 

Nella progettazione dei rilasci rientrano tutte le attivitร  di compilazione e distribuzione del codice dell'applicazione. Gli strumenti e i processi precisi variano notevolmente a seconda di molte variabili, ad esempio del linguaggio scelto per la stesura del codice, della porzione di pipeline automatizzata e se l'infrastruttura di produzione รจ on-premise oppure si trova nel cloud. La progettazione dei rilasci potrebbe comportare anche la selezione, il provisioning e la manutenzione degli strumenti CI/CD o la scrittura e la manutenzione di script di compilazione/distribuzione su misura.

Il provisioning dell'infrastruttura e l'amministrazione del sistema includono la distribuzione e la manutenzione dei server, dell'archiviazione e delle risorse di rete necessarie per ospitare le applicazioni. Per le organizzazioni con risorse on-premise, ciรฒ potrebbe comprendere la gestione di server fisici, dispositivi di archiviazione, switch e software di virtualizzazione in un data center. Nel caso delle organizzazioni ibride o interamente basate sul cloud, generalmente ciรฒ include il provisioning e la gestione delle istanze virtuali degli stessi componenti.ย 

L'advocacy DevOps รจ spesso sottovalutata o completamente ignorata, ma รจ probabilmente il compito piรน importante degli ingegneri DevOps. Il passaggio alla cultura DevOps puรฒ essere complicato e fonte di confusione per i membri del team di progettazione. In qualitร  di esperto in materia DevOps, spetta all'ingegnere DevOps promuovere questo approccio a livello aziendale e tenere corsi di formazione su DevOps rivolti a tutti i membri dell'organizzazione.

Le 9 competenze chiave dell'ingegnere DevOps

Le competenze tecniche richieste a un ingegnere DevOps variano a seconda della struttura del team, delle tecnologie e dei set di strumenti in uso. Tuttavia, sono essenziali solide capacitร  di comunicazione e collaborazione. รˆ inoltre importante che l'ingegnere DevOps abbia una conoscenza approfondita di tutti i componenti della pipeline di distribuzione e di pro e contro degli strumenti e dei servizi disponibili.

1. Comunicazione e collaborazione

Per un ingegnere DevOps รจ importante comunicare e collaborare in modo efficace con team, manager e clienti. Queste cosiddette "soft skill" sono spesso trascurate e sottovalutate, ma il successo di DevOps dipende fortemente dalla qualitร  e dalla quantitร  dei feedback ricevuti nel corso dell'intero flusso di valore.

2. Amministrazione del sistema

Gli ingegneri DevOps devono avere esperienza con l'amministrazione del sistema, ad esempio con il provisioning e la gestione dei server, e con la distribuzione di database, il monitoraggio della sicurezza, l'applicazione di patch al sistema e la gestione della connettivitร  di rete interna ed esterna.

3. Esperienza con gli strumenti DevOps

Poichรฉ l'utilizzo degli strumenti giusti รจ essenziale per le pratiche DevOps, gli ingegneri DevOps devono conoscere e saper utilizzare diversi strumenti che riguardano l'intero ciclo di vita DevOps, dall'infrastruttura e dalla compilazione, al monitoraggio e alla gestione di un prodotto o servizio.

4. Gestione della configurazione

Spesso ci si aspetta che gli ingegneri DevOps abbiano esperienza con uno o piรน strumenti di gestione della configurazione come Chef, Puppet o Ansible. Molte organizzazioni hanno adottato questi o altri strumenti simili per automatizzare le attivitร  di amministrazione del sistema, come la distribuzione di nuovi sistemi o l'applicazione di patch di sicurezza ai sistemi giร  in esecuzione.

5. Container e orchestrazione di container

Con la containerizzazione, una tecnologia resa popolare da Docker, il codice dell'applicazione e il relativo ambiente di runtime sono raggruppati nella stessa immagine. Ciรฒ riduce la necessitร  di utilizzare gli strumenti di gestione della configurazione tradizionali. Allo stesso tempo, la gestione dei container comporta altre sfide e l'esperienza con la classe di strumenti noti come "orchestratori di container" (ad es. Docker Swarm o Kubernetes) diventa una competenza necessaria per gli ingegneri DevOps.

6. Continuous integration e continuous deployment

La continuous integration e la continuous delivery (CI/CD) sono pratiche fondamentali di un approccio DevOps allo sviluppo del software e sono abilitate da una serie di strumenti disponibili. La funzione essenziale degli strumenti o dei set di strumenti CI/CD รจ l'automatizzazione del processo di compilazione, test e distribuzione del software.

Gli ingegneri DevOps di solito devono avere esperienza con la configurazione e la distribuzione di uno o piรน strumenti CI/CD e in genere devono lavorare a stretto contatto con il resto dell'organizzazione di sviluppo per assicurarsi che questi strumenti vengano utilizzati in modo efficace.

7. Architettura e provisioning di sistema

Gli ingegneri DevOps devono saper progettare, effettuare il provisioning e gestire gli ecosistemi informatici, sia on-premise che nel cloud. รˆ importante che conoscano Infrastructure as Code (IaC), un processo di gestione IT che applica le best practice dello sviluppo del software DevOps alla gestione delle risorse dell'infrastruttura cloud. Gli ingegneri DevOps devono sapere inoltre come modellare l'infrastruttura di sistema nel cloud con Amazon Web Services (AWS), AWS CloudFormation o Terraform.

8. Familiaritร  con la codifica e lo scripting

Molti amministratori di sistema tradizionali hanno esperienza con la scrittura di script di shell per l'automatizzazione dei task ripetitivi. Gli ingegneri DevOps devono andare oltre la scrittura di script di automazione e conoscere le pratiche di sviluppo software avanzate e sapere come implementare le pratiche di sviluppo Agile, ad esempio le revisioni del codice e l'utilizzo del controllo del codice sorgente.

9. Competenze di gestione collaborativa

La collaborazione tra team รจ una componente fondamentale di una strategia DevOps efficace, indipendentemente dalla specifica struttura organizzativa. Che il team di progettazione sia suddiviso per ruoli o che ci siano team separati per lo sviluppo delle funzioni, il controllo qualitร , DevOps e cosรฌ via, gli ingegneri DevOps devono lavorare a livello dell'intera organizzazione, nel ruolo di coach e colleghi, con molte persone diverse.ย 

Ad esempio, uno dei vantaggi piรน preziosi dell'investimento DevOps รจ la capacitร  di fornire feedback piรน rapidi agli sviluppatori. Gli ingegneri DevOps dovranno lavorare spesso con il team del controllo di qualitร  (sia con i tester manuali che con gli sviluppatori che scrivono l'automazione dei test) per migliorare la velocitร , l'efficacia e l'output delle metodologie di test.

Allo stesso tempo, gli sviluppatori potrebbero aver bisogno del supporto degli ingegneri DevOps quando sono impegnati nel miglioramento del processo di creazione e distribuzione del codice dell'applicazione.

Il team DevOps: altri ruoli e responsabilitร 

DevOps Evangelist

Esperto DevOps che promuove e sviluppa le pratiche DevOps in tutta l'organizzazione. Il DevOps Evangelist ha in genere un solido background tecnico, ma il fulcro del suo ruolo risiede nella comunicazione interpersonale e nel miglioramento dei processi.

Release Manager/Change Advisory Board

Le organizzazioni che non sono passate a DevOps o che sono ancora nelle fasi iniziali della transizione potrebbero prevedere la presenza di un gruppo separato denominato Change Advisory Board (CAB) o di un ruolo individuale di Release Manager.ย 

Lo scopo di tali ruoli รจ garantire che qualsiasi nuovo software applicativo rilasciato nell'ambiente di produzione soddisfi gli standard di qualitร  e sicurezza e disponga delle approvazioni di gestione appropriate.ย 

Questi ruoli erano particolarmente importanti quando i rilasci di software presentavano rischi maggiori. Tuttavia, perdono di importanza (o diventano addirittura obsoleti) se vengono implementate strategie come test automatizzati e dark launch.

Automation Expert

Tutti gli ingegneri DevOps devono avere esperienza con l'automazione. Tuttavia, sono abbastanza comuni le organizzazioni in cui รจ previsto un ruolo separato di esperto di automatizzazione o ingegnere dell'automazione, il cui compito potrebbe essere quello di gestire gli strumenti CI/CD o sviluppare e gestire le suite di test automatizzate.

sviluppo software

Nella maggior parte dei casi, il titolo di Software Developer fa riferimento a chi si occupa della scrittura del codice di applicazione front-end o back-end o entrambi. Prima dell'ascesa dell'approccio Agile, queste figure professionali sono sempre state chiamate "Computer Programmer".

Controllo qualitร 

Il team di controllo di qualitร  (QA) รจ responsabile della ricerca dei guasti nel software. Gli ingegneri del controllo di qualitร  si sono da sempre concentrati sul test manuale del nuovo codice dell'applicazione per verificarne l'integritร  ("smoke test"), controllare che non ci fossero interferenze con le funzionalitร  esistenti ("test di regressione") o conflitti con le nuove funzionalitร  ("test di integrazione").ย 

Le organizzazioni stanno integrando o sostituendo sempre piรน i tester manuali con il ruolo di Software Development Engineer in Test (SDET). L'SDET si concentra sul test del nuovo codice dell'applicazione prima che venga rilasciato nell'ambiente di produzione. Tuttavia, piuttosto che testare manualmente il software, l'SDET si dedica alla scrittura del codice di automazione di test.

Security Engineer

Spesso, nelle organizzazioni che non sono ancora arrivate all'integrazione completa dei problemi di sicurezza e conformitร  nei loro processi di pianificazione e sviluppo รจ presente una persona o un team responsabile della sicurezza. Ciรฒ si rivela frequentemente un approccio contrario al modello perchรฉ mette la sicurezza in secondo piano. Proteggere il software dopo che รจ stato progettato, compilato e distribuito รจ infatti molto piรน difficile rispetto a quando viene invece progettato tenendo presente la sicurezza.

Andare oltre un singolo ruolo

DevOps รจ una prassi che richiede un cambiamento culturale, nuovi principi di gestione e l'uso di strumenti tecnologici. Gli ingegneri DevOps svolgono un ruolo centrale in tale trasformazione e devono disporre di un ampio ventaglio di competenze per agevolare questo cambiamento. Tuttavia la maggior parte delle organizzazioni piรน che di un solo ingegnere DevOps avrร  bisogno di un mix di generalisti e specialisti che lavoreranno a stretto contatto per implementare DevOps e migliorare il ciclo di vita dello sviluppo del software. Gli ingegneri DevOps aiutano ad abbattere le barriere per favorire la collaborazione tra diversi esperti e diverse toolchain e realizzare tutte le potenzialitร  di DevOps.

Open DevOps di Atlassian offre tutto ciรฒ di cui i team hanno bisogno per sviluppareย e utilizzare il software. I team possono creare la toolchain DevOps che preferiscono grazie alleย integrazioni con i fornitori e le app del Marketplace leader del settore. Infatti crediamo che i team debbano lavorare in base alle loro preferenze e non secondo le preferenze dei fornitori. Provalo subito.

Consigliata per te

Community DevOps

Percorso di apprendimento DevOps

Inizia gratis