Introduzione ad Azure DevOps

Cos’è Azure DevOps? Il termine è relativamente nuovo, essendo stato usato per la prima volta nella Agile Toronto Conference del 2008 e concretizzato come metodologia nel libro del 2013 “The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win”.

Il termine deriva dall’unione dei due termini inglesi Development e Operations e può essere definito come l’adozione delle metodologie, per progettare una soluzione, combinando lo sviluppo (Dev) e le operazioni (Ops) per unire persone, processi e tecnologie nella pianificazione delle applicazioni, sviluppo, distribuzione e operazioni. DevOps influenza il ciclo di vita dell’applicazione durante le fasi di pianificazione, sviluppo, recapito e operazioni.

Il diagramma seguente illustra le fasi del ciclo di vita dell’applicazione DevOps:

Figura 1: Ciclo di vita dell’applicazione DevOps

Azure DevOps è una suite di strumenti e servizi offerta da Microsoft Azure per la gestione end-to-end del ciclo di sviluppo del software. Fornisce un insieme completo di strumenti che supportano pratiche di sviluppo DevOps e include diversi servizi chiave, tra cui:

  • Azure Boards
  • Azure Repos
  • Azure Pipelines
  • Azure Test Plans
  • Azure Artifacts

Azure DevOps è stato progettato per essere un ambiente collaborativo e centralizzato in cui le squadre di sviluppo possono pianificare, scrivere, testare e distribuire il software. Questo approccio aiuta a migliorare la comunicazione tra i team, ridurre i tempi di distribuzione, automatizzare i processi e garantire una maggiore qualità del software. È particolarmente adatto per le organizzazioni che desiderano adottare pratiche DevOps per ottimizzare il ciclo di sviluppo del software.

 Azure Boards è una piattaforma di gestione del lavoro e del progetto pensata per aiutare i team di sviluppo software a pianificare, monitorare e gestire il loro lavoro in modo efficiente. Azure Boards offre una serie di funzionalità per supportare le metodologie di sviluppo software agili, tra cui Scrum e Kanban, nonché altre pratiche di gestione del lavoro.

Le principali caratteristiche di Azure Boards includono:

  • Pianificazione Agile: Azure Boards consente di pianificare il lavoro in modo agile, definendo backlog degli elementi di lavoro, storie utente, attività e bug. Le squadre possono stabilire priorità e definire obiettivi per ciascun sprint.
  • Monitoraggio del lavoro: Gli strumenti di Azure Boards consentono di tenere traccia dello stato e del progresso del lavoro. È possibile visualizzare le tavole Kanban per monitorare le attività in corso, utilizzare i grafici Burndown per seguire l’avanzamento dello sprint e generare report personalizzati.
  • Collaborazione: Azure Boards promuove la collaborazione all’interno del team. I membri del team possono commentare, assegnare e aggiornare le attività direttamente nella piattaforma.
  • Integrazione con strumenti di sviluppo: Azure Boards si integra con strumenti di sviluppo come Azure Repos (per il controllo del codice sorgente), Azure Test Plans (per la gestione dei test) e Azure Pipelines (per l’automazione della distribuzione).
  • Personalizzazione: È possibile personalizzare i processi di sviluppo e le tavole di lavoro per adattarli alle esigenze specifiche del team.

Azure Boards è particolarmente utile per i team di sviluppatori software che seguono metodologie agili e che desiderano una piattaforma centralizzata per la pianificazione e il monitoraggio del lavoro. Fornisce una visibilità chiara sullo stato del progetto e promuove la collaborazione tra i membri del team.

Figura 2: Interfaccia di Azure boards

 Azure Pipelines è uno strumento di automazione del processo di compilazione, test e distribuzione del software, progettato per semplificare e migliorare il flusso di lavoro di sviluppo e distribuzione delle applicazioni.

Le principali caratteristiche di Azure Pipelines includono:

  • Automazione del flusso di lavoro: Azure Pipelines consente di definire pipeline di distribuzione automatizzate per i progetti di sviluppo software. Queste pipeline definiscono una serie di passaggi e azioni da eseguire in modo automatizzato, come la compilazione del codice, l’esecuzione di test, la creazione di pacchetti di distribuzione e la distribuzione dell’applicazione.
  • Supporto per diversi linguaggi e piattaforme: Azure Pipelines è compatibile con un’ampia gamma di linguaggi di programmazione e framework. Supporta anche la distribuzione su molteplici piattaforme, inclusi Windows, Linux e macOS.
  • Integrazione con strumenti di sviluppo: Azure Pipelines si integra con strumenti di controllo del codice sorgente come Azure Repos, GitHub e Bitbucket, consentendo il controllo delle modifiche nel codice e l’avvio automatico delle pipeline in base alle modifiche apportate.
  • Test automatici: È possibile integrare test automatici all’interno delle pipeline per garantire che il software funzioni correttamente prima della distribuzione.
  • Rilascio continuo: Azure Pipelines supporta il rilascio continuo (Continuous Deployment, CD) consentendo di distribuire automaticamente il software in ambienti di produzione o di test una volta superati i test e le verifiche necessari.
  • Gestione delle variabili e delle configurazioni: È possibile definire variabili e configurazioni per adattare le pipeline alle specifiche esigenze del progetto e dell’ambiente di distribuzione.
  • Report e monitoraggio: Azure Pipelines fornisce report dettagliati sull’esecuzione delle pipeline, consentendo di monitorare il progresso e individuare eventuali problemi.

Azure Pipelines è una componente chiave nell’implementazione di pratiche di sviluppo DevOps, che consente di automatizzare e accelerare il processo di distribuzione del software, riducendo il rischio di errori umani e migliorando la qualità delle applicazioni. È ampiamente utilizzato nelle organizzazioni che cercano di implementare processi di sviluppo e distribuzione efficienti e automatizzati.

Figura 3: Interfaccia di Azure Pipelines

Azure Repos è un servizio di controllo del codice sorgente che consente ai team di sviluppo di collaborare, gestire, tracciare e controllare le modifiche al codice sorgente dei loro progetti software. È una piattaforma di gestione del controllo delle versioni, che supporta principalmente il sistema di controllo del codice sorgente Git, ma offre anche supporto per il sistema di controllo del codice sorgente Team Foundation Version Control (TFVC).

Ecco alcune delle principali caratteristiche di Azure Repos:

  • Gestione del codice sorgente Git: Azure Repos è basato su Git, un sistema di controllo del codice sorgente distribuito. Consente alle squadre di collaborare in modo efficiente, tenere traccia delle modifiche al codice e gestire il ciclo di vita del codice sorgente.
  • Gestione delle modifiche: Azure Repos consente di registrare, gestire e visualizzare le modifiche al codice sorgente, inclusi i commit, le pull request e le revisioni del codice. Le squadre possono commentare e rivedere il codice in modo collaborativo.
  • Controllo delle versioni: Azure Repos fornisce un sistema di controllo delle versioni per tenere traccia delle versioni precedenti del codice sorgente. Questo è utile per la gestione delle versioni e il ripristino a versioni precedenti in caso di necessità.
  • Integrazione con Azure DevOps: Azure Repos si integra perfettamente con altri servizi di Azure DevOps, come Azure Boards per la gestione del lavoro, Azure Pipelines per l’automazione dei flussi di lavoro e Azure Test Plans per la gestione dei test.
  • Sicurezza: Azure Repos offre funzionalità avanzate di sicurezza e autorizzazioni per garantire che solo gli utenti autorizzati possano accedere e modificare il codice sorgente.
  • Ricerca e monitoraggio: È possibile cercare facilmente il codice sorgente all’interno del repository e monitorare l’attività del repository per tenere traccia delle modifiche e delle attività degli utenti.

Azure Repos è particolarmente adatto per i team di sviluppo di software che cercano un sistema di controllo del codice sorgente scalabile, flessibile e collaborativo. È una componente fondamentale nella gestione del ciclo di vita del codice sorgente e nel supporto delle pratiche DevOps per la distribuzione di software di alta qualità.

Figura 4 Interfaccia di Azure Repos

 GitHub Advanced Security per Azure DevOps è un servizio di test della sicurezza delle applicazioni pensato per gli sviluppatori. Consente ai team di sviluppo, di sicurezza e delle operazioni (DevSecOps) di classificare in ordine di priorità l’innovazione e migliorare la produttività degli sviluppatori senza sacrificare la sicurezza. Rileva ed evita perdite di segreti dai processi di sviluppo delle applicazioni con l’analisi dei segreti e protegge la catena di approvvigionamento del software identificando tutti i componenti open source vulnerabili che potrebbero essere usati con l’analisi delle dipendenze.

Il compito principale è prevenire le vulnerabilità durante la scrittura del codice

Figura 5: Scheda Github Advanced Security per Azure DevOps

 Azure Test Plans è progettato per la pianificazione, la gestione e l’esecuzione di test software all’interno di un processo di sviluppo. Questo servizio supporta le attività di testing, aiutando le squadre di sviluppo a garantire che il loro software sia privo di bug e soddisfi i requisiti specificati.

Ecco alcune delle principali funzionalità di Azure Test Plans:

  • Pianificazione dei test: Azure Test Plans consente di pianificare i test in modo dettagliato, definendo i casi di test, le suite di test e i piani di test. Questo aiuta a organizzare e strutturare i test in base ai requisiti del progetto.
  • Esecuzione dei test: È possibile eseguire test manuali e automatizzati direttamente all’interno di Azure Test Plans. Per i test manuali, il servizio offre strumenti per registrare i risultati e tracciare i bug rilevati durante il processo di test.
  • Integrazione con strumenti di sviluppo: Azure Test Plans è integrato con Azure DevOps Services, consentendo una stretta collaborazione tra i team di sviluppo e i team di test. Può essere collegato a Azure Boards per tenere traccia delle attività correlate ai test.
  • Gestione dei bug: Durante l’esecuzione dei test, è possibile catturare e tracciare i bug e le problematiche direttamente all’interno di Azure Test Plans. Questi bug possono essere assegnati ai membri del team per la correzione.
  • Report e analisi: Azure Test Plans fornisce report dettagliati sull’esecuzione dei test, sullo stato di avanzamento e sulla copertura dei test. Questi report aiutano a identificare eventuali aree problematiche e a monitorare il progresso.
  • Automazione dei test: Azure Test Plans supporta l’automazione dei test attraverso l’integrazione con Azure DevOps Pipelines o con altri strumenti di automazione del test.

Azure Test Plans è particolarmente utile per le organizzazioni che seguono metodologie di sviluppo software agili o DevOps e desiderano garantire la qualità del software attraverso test rigorosi e ben documentati. Fornisce un ambiente centralizzato per la gestione delle attività di test, la tracciabilità dei risultati dei test e la collaborazione tra i team di sviluppo e test.

Figura 6: Interfaccia di Azure Test Plans

 Azure Artifacts è un servizio di gestione dei pacchetti che consente alle organizzazioni di gestire e distribuire in modo efficiente i pacchetti di software, le librerie e le dipendenze all’interno dei loro progetti di sviluppo software. È particolarmente utile per le organizzazioni che sviluppano applicazioni software e hanno bisogno di un sistema centralizzato per la gestione delle risorse.

Ecco alcune delle principali funzionalità di Azure Artifacts:

  • Archiviazione dei pacchetti: Azure Artifacts offre un repository sicuro e privato per archiviare i pacchetti di software, inclusi pacchetti NuGet, pacchetti npm, Maven, Python e RubyGems. Questi pacchetti possono essere condivisi e distribuiti all’interno dell’organizzazione.
  • Controllo delle versioni: Azure Artifacts offre funzionalità di controllo delle versioni per i pacchetti archiviati, consentendo di tenere traccia delle diverse versioni di un pacchetto e di gestirne le dipendenze.
  • Integrazione con Azure DevOps: Azure Artifacts è integrato con altri servizi di Azure DevOps, come Azure Repos (per il controllo del codice sorgente) e Azure Pipelines (per l’automazione della distribuzione), facilitando la distribuzione dei pacchetti all’interno dei flussi di lavoro di sviluppo.
  • Sicurezza e autorizzazioni: È possibile definire autorizzazioni granulari per i repository di pacchetti, garantendo che solo gli utenti autorizzati possano accedere ai pacchetti.
  • Gestione delle dipendenze: Azure Artifacts consente di gestire le dipendenze dei progetti in modo centralizzato. È possibile configurare progetti per utilizzare i pacchetti archiviati in Azure Artifacts come dipendenze, semplificando la gestione delle librerie condivise.
  • Ricerca e monitoraggio: È possibile cercare e monitorare i pacchetti all’interno dei repository, semplificando la ricerca di pacchetti specifici e il monitoraggio dell’attività.

Azure Artifacts è utile per le organizzazioni che necessitano di un sistema centralizzato per la gestione dei pacchetti di software, delle librerie e delle dipendenze. Fornisce un modo efficace per archiviare, condividere e distribuire i pacchetti all’interno dell’organizzazione, migliorando la gestione delle risorse e la collaborazione tra i team di sviluppo.

Figura 7: Interfaccia di Azure Artifacts

Da dove iniziare?

Se non si conosce Azure DevOps e si vuole fare pratica nell’utilizzo degli strumenti con esso forniti, si può iniziare dall’indirizzo https://dev.azure.com. Da qui facendo click su Start free (Inizia gratuitamente nella versione italiana del sito) si può iniziare la procedura che ci guiderà nella creazione di una nuova organizzazione che verrà utilizzata con Azure Devops.

L’uso di Azure DevOps a livello personale o per piccoli gruppi di lavoro è gratuito, unico requisito è l’uso di un account personale Microsoft, che può essere creato anche durante la procedura di attivazione del servizio e creare una nuova organizzazione, dopo avere selezionato.

Figura 8: Pagina iniziale Azure DevOps

Inserire le credenziali dell’account personale Microsoft o crearne uno se non si possiede già.

Figura 9: Pagina di login Azure DevOps con account Microsoft

Fare clic su continua

Figura 10: Pagina primo accesso ad Azure DevOps

Inserire le informazioni relative alla creazione di una nuova organizzazione, il nome la regione cloud dove crearla (consiglio di usare la regione North Europe), inserire i caratteri del captcha e infine selezionare continua.

Figura 11:: Creazione Organization

Completata la procedura di creazione della propria organizzazione Azure DevOps (è possibile creare più organizzazioni con lo stesso account), si dovrà creare il primo progetto in Azure DevOps, inserendo il nome del progetto e facendo click su Create project

Figura 12: Creazione primo Progetto con impostazioni predefinite

Subito dopo apparirà la dashboard del progetto con i vari elementi a disposizione, pronti per essere usati per apprendere l’uso di Azure DevOps

Figura 13: Ambiente Azure DevoOs dopo creazione progetto

Il progetto creato usa elementi di tipo Basic, ma è possibile creare nuovi progetti e selezionare come Work item process tra Agile, CMMI e Scrum oltre che a Basic.

Figura 14: Scelte disponibili per i Work item process

Conclusioni

Negli ultimi anni, il mondo dello sviluppo software è stato rivoluzionato dalle pratiche DevOps. Questo approccio all’integrazione tra sviluppo e operazioni ha permesso alle organizzazioni di accelerare i tempi di distribuzione, migliorare la qualità del software e aumentare la collaborazione tra i team. In questo contesto, Azure DevOps si è affermato come una suite di strumenti e servizi all’avanguardia, offerta da Microsoft Azure, progettata per supportare il ciclo di vita completo del software.

Azure DevOps offre una serie di servizi chiave che coprono tutte le fasi del ciclo di sviluppo software. Questi servizi includono Azure Boards, Azure Repos, Azure Pipelines, Azure Test Plans e Azure Artifacts. Ogni servizio è progettato per affrontare aspetti specifici del processo di sviluppo e distribuzione del software, ma lavorano in sinergia per fornire un ambiente completo per il team di sviluppo.

L’integrazione e la collaborazione tra i vari servizi Azure DevOps offrono un vantaggio competitivo alle organizzazioni che abbracciano le pratiche DevOps. I team di sviluppo possono collaborare in modo più efficace, riducendo al minimo gli errori umani e accelerando la distribuzione. Inoltre, l’integrazione nativa con strumenti di sviluppo come Visual Studio e GitHub rende Azure DevOps una scelta ovvia per molte organizzazioni.

In conclusione, Azure DevOps è molto più di una suite di strumenti: è una filosofia che supporta la trasformazione delle pratiche di sviluppo e distribuzione software.