Gestire i progetti di sviluppo software con Azure DevOps: le funzioni chiave
La piattaforma Azure DevOps è la soluzione completa offerta da Microsoft per la gestione dei progetti di sviluppo software: contiene in sé tutto il supporto necessario all’azienda per lo sviluppo e la manutenzione software, dalla raccolta dei requisiti al rilascio ed il monitoraggio dei sistemi di produzione.
Se si è in cerca di una soluzione di gestiore di progetti software Azure DevOps è sicuramente la più indicata. Permette di gestire i requisiti in maniera Agile o classica e il codice con una source control centralizzata oppure con Git e fornisce pipeline automatizzate per compilare, testare e distribuire il codice in qualsiasi piattaforma.
Tutti i servizi sono gestiti direttamente da Microsoft nei datacenter del cloud Azure, garantendo quindi la scalabilità necessaria per le grandi aziende, e minimizzando il costo di manutenzione, che si riduce alla semplice amministrazione della sicurezza e delle configurazioni dello strumento stesso. La disponibilità in più datacenter differenti garantisce inoltre la sicurezza dei dati e soprattutto la possibilità di poter scegliere l’utilizzo del datacenter più vicino per minimizzare le latenze ed aumentare la banda di trasmissione.
Senza dimenticare chi lavora con risorse On-Premise, per i quali è possibile infatti adottare scenari ibridi in cui i build server ed i server di rilascio sono on-premise, senza la necessità di dover configurare VPN o protocolli di rete particolari, dato che tutte le componenti on-premise utilizzano la modalità pull sul classico link.
Oltre a questi benefici, presenta altri vantaggi per il business:
- collaborazione: una delle peculiarità di questo sistema è l’aumento della collaborazione tra sviluppatori e system administrator
- velocità: processi capaci di adattarsi alle esigenze e di rilasciare aggiornamenti con più frequenza
- automazione: l’automatizzazione di una serie di processi ripetitivi e l’esecuzione di test automatici fanno sì che la qualità dei prodotti migliori notevolmente
- distribuzione rapida: la velocità nel rilascio di nuove funzionalità e nella correzione dei bug dà un grande vantaggio sulla concorrenza
- affidabilità: la verifica costante degli aggiornamenti e delle modifiche all’infrastruttura garantisce affidabilità e di conseguenza produttività
- scalabilità: questo modello permette di gestire infrastrutture e processi di sviluppo su qualsiasi scala, garantendo efficienza e contenimento dei rischi
- sicurezza: grazie a policy di conformità automatizzate, controlli granulari e tecniche di gestione di configurazione, si può monitorare la conformità e garantire un alto livello di sicurezza
Di seguito una panoramica delle funzioni chiave della piattaforma.
Le soluzioni di Microsoft DevOps
Vengono messe a disposizione diverse soluzioni che permettono di distribuire software in modo più rapido e affidabile, indipendentemente dalle dimensioni del tuo reparto IT e dagli strumenti usati.
1. Azure Boards
Permette la gestione delle informazioni del progetto, dai requisiti ai bug, dai test case all’esecuzione dei test manuali. Il tutto è utilizzabile da interfaccia web tramite board Agili, ma il sistema è completamente accessibile mediante REST API e fornisce integrazioni native con Excel e Power Point e integrazioni nel marketplace con strumenti come Word e Outlook.
2. Gestione del codice sorgente
Grazie al supporto a due differenti tipologie di gestione di codice sorgente (TFVC e Git), il team può utilizare la soluzione più adatta al proprio scenario. La possibilità di creare molteplici repository Git con supporto a Fork e Pull Request permette di adottare flussi di controllo del codice moderni e tipici delle metodologie DevOps.
3. Integrazione continua
Sfrutta l’integrazione continua per velocizzare lo sviluppo del software e migliorarne la qualità. Quando usi Azure DevOps o Jenkins per creare app nel cloud e distribuirle in Azure e ogni volta che esegui il commit del codice, questo viene automaticamente compilato e testato per consentire una più rapida individuazione dei bug.
4. Recapito continuo
Grazie al recapito continuo, puoi garantire che il codice e l’infrastruttura siano sempre pronti per la distribuzione in produzione. Combinando integrazione continua e il processo Infrastructure as Code (IaC), otterrai distribuzioni identiche e l’affidabilità che ti serve per distribuire in produzione in qualsiasi momento.
5. Distribuzione continua con Integrazione continua/Recapito continuo
Grazie alla distribuzione continua, puoi automatizzare l’intero processo dal commit del codice alla produzione in caso di esito positivo dei test di integrazione continua/recapito continuo. L’uso combinato delle pratiche di integrazione continua/recapito continuo e degli strumenti di monitoraggio ti consentiranno di distribuire in modo sicuro le funzionalità ai clienti non appena sono pronte.
Le architetture delle soluzioni
Illustriamo di seguito 3 architetture che possono progettare e implementare soluzioni sicure, a disponibilità elevata, ad alte prestazioni e resilienti in Azure.
1. Integrazione continua/Distribuzione continua Java con Jenkins e app Web di Azure
Servizio app di Azure è un modo facile e veloce per creare app Web usando Java, Node, PHP o ASP.NET, nonché il supporto per runtime di linguaggi personalizzati tramite Docker. Una pipeline di integrazione continua e distribuzione continua che effettua automaticamente il push di ogni modifica nei servizi app di Azure ti permette di accelerare i tempi di distribuzione per i tuoi clienti.
2. Panoramica della pipeline di integrazione continua/recapito continuo dell’infrastruttura non modificabile con Jenkins e Terraform nell’architettura virtuale di Azure
Azure è un cloud di livello superiore per ospitare macchine virtuali che eseguono Windows o Linux. Indipendentemente dal linguaggio che usi per sviluppare le tue applicazioni, ad esempio Java, Node.js, Go o PHP, ti servirà una pipeline di integrazione continua e distribuzione continua per effettuare automaticamente il push delle modifiche nelle macchine virtuali.
3. Integrazione continua e recapito continuo di contenitori tramite Jenkins e Kubernetes in Azure Kubernetes Service (AKS)
I contenitori semplificano la compilazione e la distribuzione continua di applicazioni. Grazie all’orchestrazione della distribuzione dei contenitori tramite il servizio Kubernetes di Azure, puoi ottenere cluster di contenitori gestibili e replicabili. Configurando una compilazione continua per generare l’orchestrazione e le immagini dei contenitori, puoi aumentare la velocità e l’affidabilità della distribuzione.
Gli strumenti di Microsoft DevOps
1. Iac, Azure Resource Manager e altri per una migliore ripetibilità e affidabilità
Tramite Iac, automatizzi il provisioning e la configurazione di ambienti e acquisisci le definizioni di ambiente come codice dichiarativo, come JSON o YAML. Invece con Azure Resource Manager, Terraform e Ansible, esegui in modo affidabile il provisioning di un ambiente identico.
2. Azure Log Analytics e Grafana per ottenere informazioni dettagliate di utilità pratica
L’integrità dell’infrastruttura puoi tenerla sotto controllo con strumenti, come Azure Log Analytics e Monitoraggio di Azure, e puoi integrare i dati in dashboard esistenti, come Grafana o Kibana. Azure Application Insights offre, invece, informazioni dettagliate di utilità pratica grazie alle funzionalità di gestione delle prestazioni e analisi immediata.
3. Chef Automate o Criteri di Azure per rafforzare la conformità e la sicurezza
Grazie a strumenti DevOps quali Chef Automate o Criteri di Azure, puoi gestire l’infrastruttura e le applicazioni di cui è stato eseguito il provisioning, garantendo la conformità. Combinandoli con servizi quali Centro sicurezza di Azure, limiterai l’esposizione alle minacce e riuscirai rapidamente a individuare e porre rimedio alle vulnerabilità.
I servizi DevOps
- Azure Boards: offri valore ai tuoi utenti con maggiore rapidità usando strumenti Agile consolidati per pianificare, verificare e analizzare il lavoro in diversi team.
- Azure Pipelines: crea, esegui test e distribuisci con CI/CD (continuous integration/continuous delivery) ottimale per qualsiasi linguaggio, piattaforma e cloud. Connettiti a GitHub o a qualsiasi altro provider Git e distribuisci in modo continuativo.
- Azure Repos: ottieni repository Git privati, senza limiti e ospitati sul cloud e collabora per scrivere codice migliore con richieste pull e gestione avanzata dei file.
- Azure test Plans: testa e distribuisci in tutta sicurezza con strumenti di testing esplorativo e manuale.
- Azure Artifacts: crea, ospita e condividi pacchetti con il tuo team e aggiungi artefatti alle tue pipeline di CI/CD con un singolo clic.
Conclusioni
Azure DevOps permette una pianificazione più intelligente, una collaborazione migliore e una distribuzione più rapida con un set di servizi moderni per lo sviluppo. Inoltre, puoi creare delle integrazioni flessibili, combinando gli strumenti modulari di Azure DevOps in base alle tue esigenze e integrandoli con i tuoi strumenti e IDE (integrated development environment – ambiente di sviluppo integrato) e con centinaia di integrazioni disponibili nel Marketplace. A seguito del lancio di DevOps, è stata ideata una metodologia (metodologia DevOps) che identifica 5 procedure che permettono un miglior coordinamento e coordinazione del team e dell’uso efficace di questa piattaforma.