Adottare una cultura basata su DevOps

Completato
Consentire ai team operativi e di sviluppo di migliorare continuamente la progettazione e i processi del sistema lavorando con una mentalità orientata a collaborazione, responsabilità condivisa e proprietà.

DevOps è una community di pratiche in cui la diversità di prospettiva e competenze guida verso una missione. I team devono promuovere un ambiente collaborativo basato su conoscenze condivise anziché apprendimento isolato. Usare le funzioni condivise per cercare di superare i vincoli delle risorse.

La responsabilità condivisa favorisce una cultura DevOps ottimale. I team operativi e di sviluppo devono allineare gli obiettivi e le priorità alle aspettative dei clienti e tenere a mente il focus aziendale. Il team di sviluppo deve coinvolgere il team operativo nel ciclo di feedback, in modo che i miglioramenti siano guidati anche da upstream e offrano vantaggi anche agli altri team. I team operativi sono invece responsabili del successo del team di sviluppo a livello di risultati aziendali mediante la condivisione di risorse e feedback rilevanti per il carico di lavoro.

Allo stesso tempo, le procedure DevOps applicano linee chiare di proprietà e responsabilità a ogni team. Indipendentemente dalla posizione in cui viene eseguita l'applicazione, il team del carico di lavoro è responsabile di tale applicazione.

DevOps ottimizza le attività operative in modo che siano efficaci ma non onerose. Per sfruttare appieno il vantaggio di DevOps, la cultura deve ottimizzare i processi attraverso la tecnologia e avere processi per incoraggiare le persone dell'organizzazione a promuovere una comunicazione trasparente.

Scenario di esempio

Il reparto Risorse umane (HR) di Contoso sta avviando un progetto per sviluppare una nuova app line-of-business (LOB) per l'uso interno del reparto. L'app è attualmente in fase di pianificazione, non è ancora iniziata alcuna attività di progettazione o implementazione.

Collabora in modo efficiente

Usare sistemi e strumenti comuni che promuovono un ambiente collaborativo per la comunicazione e il monitoraggio dello stato di avanzamento.

Gli strumenti e i processi comuni consentono la comunicazione trasparente. I team di sviluppo e i team operativi traggono vantaggio dalla consapevolezza della situazione in vari ambienti, da informazioni relative a problemi di supporto comuni, sfide e risultati positivi complessivi.

I team avranno già familiarità con i percorsi di escalation esistenti in caso di evento imprevisto.

Un backlog condiviso rende chiare le priorità, ad esempio il lavoro a nuove funzionalità o la correzione di bug.

Sfida di Contoso

  • Contoso ha tre team tecnici che saranno coinvolti nello sviluppo e nella manutenzione della nuova app: sviluppo, test e operazioni. Non sono attualmente disponibili strumenti standard di comunicazione e monitoraggio dei progetti usati in modo coerente in tutti i team.
  • Storicamente, ogni team è stato in grado di selezionare i propri strumenti preferiti. Alcuni usano Slack, mentre altri usano Microsoft Teams per la messaggistica interna. Alcuni usano Azure DevOps (ADO) e altri usano Excel per tenere traccia delle attività e ogni team usa un repository di documenti diverso dagli altri per condividere le conoscenze e le procedure di risposta agli eventi imprevisti.
  • Nei progetti precedenti l'organizzazione tecnica complessiva ha rilevato difficoltà per le comunicazioni e la collaborazione a causa dei diversi strumenti usati. Per il futuro, Contoso HR vuole migliorare la produttività ed evitare situazioni che potrebbero rallentare il progetto, come quelle rilevate in precedenza.

Applicazione dell'approccio e risultati

  • I lead dei team tecnici hanno incontrato gli sponsor del progetto per scegliere gli strumenti standard che verranno usati in futuro. Il gruppo ha scelto Azure DevOps per gestire il backlog, il repository di codice e la pipeline di distribuzione. Hanno anche scelto Microsoft Teams per le comunicazioni e la collaborazione.
  • L'uso di un set comune di strumenti consente ai team di sviluppo, operazioni e test di rimanere informati e sincronizzati in merito a stato dei vari ambienti, problemi comuni del progetto e obiettivi del team. I team possono inoltre accedere da un'unica posizione nota alle informazioni sui percorsi di escalation stabiliti in caso di eventi imprevisti.
  • Un backlog condiviso consente anche di pianificare in modo uniforme e rimanere allineati in merito alle priorità, ad esempio lo sviluppo di nuove funzionalità o la correzione di bug.

Adottare il miglioramento continuo

Creare una mentalità di apprendimento e sperimentazione continua durante tutto il ciclo di sviluppo. Supportare la condivisione delle informazioni tra i team e gestire la documentazione per il riutilizzo. Condurre inoltre analisi senza finalità di giudizio e fornire resoconti dopo il rilascio e/o revisioni dopo eventi imprevisti.

Tramite meccanismi di sperimentazione, ad esempio test A/B e sviluppo di modelli di verifica, è possibile incoraggiare l'innovazione mantenendo i costi bassi.

Condividere conoscenze attraverso la collaborazione che consente al team di acquisire competenze a livello di approcci di progettazione, strumenti e processi.

L'esecuzione di analisi retrospettive dopo un progetto aiuta a identificare le aree per migliorare e a celebrare il successo.

Sfida di Contoso

  • Per facilitare ulteriormente la condivisione delle informazioni e promuovere una cultura di collaborazione e trasparenza, il team vuole avere una fonte di verità centralizzata e facilmente accessibile per la documentazione del progetto. Tra le altre cose, questo risulterà utile se un nuovo sviluppatore si unisce al team e deve ottenere rapidamente informazioni aggiornate sul progetto.
  • Il reparto Risorse umane di Contoso è particolarmente interessato a garantire che le informazioni apprese dagli eventi imprevisti che influiscono sulla disponibilità dell'applicazione vengano acquisite e condivise nell'intera organizzazione tecnica per aiutare la gestione di eventi imprevisti futuri e prevenire il più possibile la ricorrenza di tali eventi.
  • Per evitare la ripetizione di errori precedenti durante la progettazione dell'esperienza utente dell'applicazione, il team vuole anche usare un approccio più agile che consenta loro di prendere in considerazione il feedback degli utenti reali.

Applicazione dell'approccio e risultati

  • Il team crea un wiki di condivisione delle conoscenze in Azure DevOps in cui verranno pubblicate tutte le specifiche di progettazione insieme a tutte le procedure operative attive, i piani di risposta agli eventi imprevisti e i risultati retrospettivi.
  • L'esecuzione di analisi retrospettive senza finalità di giudizio dopo eventi imprevisti e ogni iterazione di sviluppo e la documentazione delle informazioni nel wiki sta aiutando il team del progetto a identificare le aree di miglioramento e a celebrare il successo.
  • Il team ha adottato un approccio esplorativo alla progettazione dell'esperienza utente per la nuova applicazione, sfruttando i test A/B per trovare la migliore esperienza utente tra diverse varianti proposte dai consulenti dell'esperienza utente e prendendo in considerazione il feedback degli utenti per prendere decisioni basate sui dati.

Codificare le procedure operative e di sviluppo

Configurare gli standard per tutte le procedure operative e di sviluppo ed esaminarli e convalidarli con cadenza regolare. Queste procedure includono attività di routine, processi fuori banda, esercitazioni e situazioni di emergenza, scelta di strumenti, procedure di monitoraggio, piani di sviluppo di competenza e persino comunicazioni con stakeholder e divulgazioni ai clienti. Essere intenzionali ed espliciti in merito alle decisioni.

Gli standard aggiungono prevedibilità alle operazioni e rendono scalabili i processi e le procedure. La convalida degli standard è un ottimo modo per definire punti di miglioramento.

Prepararsi per situazioni di emergenza e di ripristino eseguendo esercitazioni regolari.

Eseguire con precisione e abilitare la governance per evitare anomalie che portano a rischi.

Sfida di Contoso

  • Una delle sfide che ha influenzato la produttività e la qualità dell'output del team di sviluppo in passato è la mancanza di standardizzazione e coerenza nella codebase. Ad esempio, l'assenza di uniformità nelle convenzioni di denominazione o l'uso di modelli software comuni rende difficile per i membri del team comprendere il codice creato da altri e ciò ha influito sull'efficienza.
  • Senza un approccio comune documentato correttamente per le operazioni, è inoltre possibile che il personale operativo usi metodi diversi per raggiungere lo stesso obiettivo, causando inefficienza e confusione.
  • Motivati dal successo ottenuto implementando altri miglioramenti di DevOps, il reparto Risorse umane di Contoso ha deciso di affrontare questo problema come parte del ciclo di sviluppo successivo.

Applicazione dell'approccio e risultati

  • Il team di sviluppo si riunisce durante il ciclo di sviluppo per concordare un set di standard di sviluppo da implementare. Documenteranno le scelte effettuate e inizieranno ad applicarle durante le revisioni del codice e tramite strumenti. Stanno esaminando argomenti come: Convenzioni di formattazione e denominazione del codice, gestione degli errori, controllo della versione e procedure di sicurezza. Il team prevede di prestare particolare attenzione alle metriche di qualità e ai report generati in Azure DevOps per quantificare l'impatto che queste modifiche avranno sulla qualità e sulla produttività, in modo da poter dimostrare il valore di questi tipi di miglioramenti di DevOps al team di gestione.
  • Analogamente, il team operativo dedica contemporaneamente tempo all'estensione della documentazione esistente sulla gestione di routine e sulle procedure di risoluzione dei problemi e alla pubblicazione nel wiki. In futuro il wiki fungerà da singola fonte di verità, risparmiando tempo ed energia che altrimenti verrebbero dedicati alla ricerca di informazioni.

Verificare le conoscenze

1.

Quale dei seguenti è un vantaggio dell'uso di un set comune di strumenti da parte dei team operativi e di sviluppo?

2.

Quale dei seguenti è un esempio di creazione di una mentalità orientata all'apprendimento e alla sperimentazione continui?

3.

Vero o falso: Contoso ha sofferto per la mancanza di standardizzazione nel set di strumenti.