Articoli
Tutorial
Guide interattive
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.
Tom Hall
DevOps Advocate & Practitioner
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.
scopri la soluzione
Strumenti DevOps per tutto il team
Corso di formazione
Scopri gli elementi essenziali di Atlassian 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 dei pro e i 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 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 rese possibili 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. Sia che il team di progettazione sia suddiviso per ruoli o che ci siano team separati per lo sviluppo delle funzionalità, 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 pratica che richiede un cambiamento culturale, nuovi principi di gestione e l'uso di strumenti tecnologici. Gli ingegneri DevOps sono al centro della trasformazione e devono disporre di un ampio ventaglio di competenze per agevolare questo cambiamento. Tuttavia, la maggior parte delle organizzazioni avrà bisogno di più di un solo ingegnere DevOps, nella fattispecie di un insieme di tecnici 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 i silos per favorire la collaborazione tra diversi esperti e toolchain e portare a compimento la promessa di DevOps.
Open DevOps di Atlassian offre tutto ciò di cui hanno bisogno i team 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 come in base alle loro preferenze e non secondo le preferenze dei fornitori. Provalo subito.
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.