DevOps: come trasformare la cultura della tua azienda

ARTICOLO / 6 DICEMBRE 2023

 

Come la metodologia DevOps può essere applicata dai team di progetto nelle attività di ogni giorno per lavorare in modo più efficace.  

Prima di tutto, cosa si intende per DevOps?

DevOps è l’unione tra Development, "sviluppo", e Operations, "messa in produzione" o "deployment". È una metodologia di sviluppo software che nasce con l’obiettivo di agevolare la comunicazione e la collaborazione tra sviluppatori e addetti alle operations, puntando ad aiutare un'organizzazione a sviluppare in modo più rapido ed efficiente prodotti e servizi software.  

Questo metodo fornisce all'organizzazione l'abilità di creare applicazioni e servizi con la massima agilità offrendo ai clienti servizi migliori e maggiore competitività sul mercato. 

Contesto

"Il metodo DevOps si conferma una leva strategica, ma la necessità di sviluppare le capacità adeguate rimane un limite per la realizzazione dei risultati. La facilitazione dell'uso di strumenti e tecnologie in ottica DevOps permette alle aziende di affrontare sfide organizzative e culturali rendendole competitive."

Una ricerca di Gartner ha evidenziato quanto le aziende, indipendentemente dalla loro dimensione, desiderino implementare il metodo DevOps. In particolare è emerso che, entro il 2024, i leader di settore I&O (Infrastructure & Operations) che utilizzano tecniche di gestione del cambiamento organizzativo open-source per implementare e sviluppare le iniziative DevOps, miglioreranno del 50% la loro capacità di raggiungere i risultati aziendali desiderati

Come funziona la metodologia DevOps? 

Quando si parla DevOps si fa riferimento ad un cambiamento della cultura aziendale rispetto a quello che fino ad ora abbiamo conosciuto. Questa metodologia, infatti, si basa sulla collaborazione e la condivisione dei team, al fine di creare sinergia durante la creazione di un progetto coinvolgendo più parti dell’organizzazione. 

Modello operativo DevOps 

Tenendo a mente questi concetti fondanti della metodologia DevOps, attraverso questo articolo vediamo come implementare questa cultura all’interno di un’organizzazione. 

Le aree principali che compongono questo metodo sono 4 e riguardano: 

1 - PERSONE 

I Team di lavoro che compongo un’organizzazione. 

Questa prima area fa riferimento alla cultura e alla visione dell’azienda. I team, composti per macroaree, collaborano tra di loro in sinergia facilitando i diversi flussi di lavoro. 

La condivisione interna delle attività di progetto risulta un aspetto fondamentale, per poter risolvere rapidamente problemi già riscontrati, avere una visione globale degli output ed evitare divergenza nelle attività dei singoli team. 

I dati mostrano che l’applicazione di questa metodologia porta il 71% dei dipendenti a non sprecare il loro tempo su attività a basso valore aggiunto

2 - COMPETENZE 

Strumenti condivisi, valutazione aggiornata delle tecnologie utilizzate e meeting ricorrenti. 

Per rendere più agile e competitiva l’azienda è necessario stabilire dei meeting interni ricorrenti dove mettere a fattor comune le competenzevalidare i processi, condividere le problematiche e trovare una soluzione congiunta potenziando di fatto i flussi di lavoro. 

3 - INFORMAZIONI 

Risorse dettagliate condivise, analisi dei processi e monitoraggio. 

Attraverso la continua analisi dei processi è possibile identificare eventuali aspetti da migliorare. Grazie alle piattaforme condivise e allo scambio continuo di informazioni utili, il processo è costantemente monitorato e documentato. In questo modo si favorisce la trasparenza tra i team di lavoro, l’attuazione di modifiche nei progetti facilitando eventuali passaggi di consegna. 

4 - PROCESSI 

Pianificazione, misurazione dei miglioramenti e produzione 

L’adozione di un metodo agile e di tecnologie funzionali che possano ridurre sprechi nello sviluppo permette il continuo miglioramento e la distribuzione di progetti di valore. 

Vantaggi del modello DevOps 

Le aziende che utilizzano ancora una gestione tradizionale dei processi potrebbero riscontrare le seguenti criticità: 

  • difficoltà di interscambio tra i team, 
  • difficoltà nell’identificare e risolvere bug su tecnologie non standardizzate, 
  • overhead nella gestione del supporto ai progetti causato da paradigmi diversi

Adottando il metodo DevOps invece si beneficerebbe dei seguenti vantaggi

  • Velocità: processi più agili, come microservizi e distribuzione continua, consentono di monitorare i servizi e rilasciare aggiornamenti con maggiore frequenza. 
  • Distribuzione rapida: rapidità nel rilascio di nuove funzioni e di correzioni di bug. Integrazione e distribuzione continua sono pratiche che automatizzano le procedure di rilascio del software, dalla build alla distribuzione. 
  • Affidabilità: un processo standardizzato consente la continua verifica degli aggiornamenti garantendo maggiore affidabilità e produttività. Attraverso il monitoraggio e la misurazione dei miglioramenti si possono mantenere sotto controllo le prestazioni in tempo reale. 
  • Collaborazione: la creazione di team dedicati che lavorano in maniera più efficace grazie all’adozione del modello DevOps migliorerà la sinergia dell’organizzazione. Sentendosi parte del processo, i vari team avranno la possibilità di condividere responsabilità e integrare i loro flussi di lavoro. Si riducono così i tempi dei passaggi di consegna e di on-boarding nei progetti. 

Perché utilizzare l’approccio DevOps 

Prima di tutto indentifichiamo i motivi per i quali si decide di cambiare: 

  • un incremento del numero di persone che lavorano ai progetti che richiede una standardizzazione di essi. 
  • garantire un on-boarding uniforme alle persone che si uniscono al team. 
  • dare la possibilità ad ogni componente del team di lavorare in maniera agile, indipendentemente dalla sua esperienza. 

È importante cambiare perché il metodo DevOps ti permette di rendere più agile la tua azienda, di standardizzare ed avere maggior controllo dei processi, di creare sinergia tra diversi team di lavoro e aumentare e migliorare la comunicazione all’interno dell’organizzazione. 

5 punti per implementare il metodo DevOps nella tua azienda 

Possiamo identificare 5 punti per passare da un metodo tradizionale di gestione dei processi al metodo DevOps

1 - Strumenti e best practice

Attraverso l’utilizzo di strumenti come un Git workflow condiviso potrai uniformare i processi di sviluppo, avere un versionamento più pulito e comprensibile, contribuzioni più chiare e tracciabili e una riduzione e un miglioramento della gestione dei conflitti nel codice. 

Attraverso l’Infrastructure as Code si beneficerà della minimizzazione delle azioni umane non tracciabili a favore di un approccio più disciplinato e consistente, di un maggior riutilizzo, della scalabilità e della velocità degli ambienti. 

Con i processi di code review (eg: Pull Request) si introducono livelli di approvazione per il codice che richiedono la verifica da parte di una o più persone, assicurando meno errori nel codice e la garanzia del mantenimento degli standard decisi

Attraverso una pipeline di CI/CD, ovvero di un’integrazione e un deployment continui, si ha la possibilità di automatizzare i processi di rilascio e di collegare il repository e le approvazioni a rilasci su ambienti selezionati. 

Infine, l’analisi statica del codice permette di valutare la qualità della code base, mostrando eventuali punti critici da risolvere. 

2 - Studio, scelta e mantenimento degli standard

Dopo aver analizzato le necessità del team viene creata una documentazione dettagliata che raccoglie le seguenti componenti: 

  • come creare un progetto da zero 
  • quali linee guida seguire 
  • quali framework usare 
  • la naming convention e la folder convention 

Deve essere inoltre scelto un tool per la condivisione della documentazione di progetto in modo che tutto il team abbia un punto unico dove trovare tutto il necessario. 

Attraverso attività di modularizzazione delle componenti riutilizzabili, si possono creare librerie per semplificare le implementazioni che vengono ripetute in ogni progetto. Questo permette di non riscrivere codice che svolge le stesse funzionalità potendo usare il componente pronto e testato. 

Ultima ma non per importanza, creare e mantenere dei blueprint per gli use case più comuni come container o cloud functions. 

3 - Automazione: che permette la diminuzione delle attività di lavoro ripetitive a basso valore aggiunto e la rimozione della attività manuali, affidandosi a tools che si occupano di queste operazioni al posto dello sviluppatore. 

4 - Condivisione: favorita da meeting periodici che permettono di confrontarsi, allinearsi e migliorare di volta in volta i processi decisi. 

5 - Monitoraggio e misurazione dei miglioramenti: permette di certificare che i miglioramenti messi in atto stiano portando del valore aggiunto ai progetti. Per esempio, partire da un blueprint o poter utilizzare librerie testate e validate permette di iniziare il progetto da un punto più avanzato risparmiando tempo. 

Come abbiamo applicato il metodo DevOps nel nostro caso 

Le metodologie DevOps forniscono linee guida su come ottimizzare i processi, però l’applicazione pratica dipende fortemente dal dominio applicativo dell’azienda. 

Nel nostro caso specifico il percorso che abbiamo seguito nell’ultimo anno ci ha portato ad adottare una serie di attività di miglioramento ispirate dalla metodologia, tra le quali: 

  • Divisione in aree di competenza: abbiamo diviso il team in cinque aree di competenza, infrastruttura, backend, frontend, mobile e machine learning; ogni area è responsabile della gestione dei propri standard e organizza dei meeting a cadenza fissa in cui discutere delle aree di miglioramento e presentare novità o possibili tecnologie che il team vorrebbe introdurre. 
  • Code review: ogni contribuzione alle code base passa attraverso un processo di code review tramite lo strumento delle Pull Request. Uno o più sviluppatori si occupano di validare ogni pull request o di fornire del feedback migliorativo sulla contribuzione fino a quando il codice non rispetta gli standard richiesti. 
  • Documentazione esaustiva su Confluence: abbiamo scelto Confluence come strumento per raccogliere la documentazione relativa a: 
  1. Documentazione generale di progetto: istruzioni su come effettuare il setup di un progetto partendo da zero, in modo da aiutare gli sviluppatori a seguire uno standard univoco. 
  1. Documentazione specifica di progetto: report sull’implementazione specifica di un progetto in cui vengono raccolte le specifiche, scelte implementative, librerie e punti di attenzione; questo tipo di documentazione aiuta molto all’onboarding di un nuovo sviluppatore nel progetto. 
  1. Documentazione tecnica: dettagli implementativi su come utilizzare una libreria o un componente sviluppato internamente. 
  • Common libraries: librerie di componenti riutilizzabili per facilitare l’implementazione di nuovi progetti includendo test e documentazione specifica. 
  • Blueprint: per le componenti non riutilizzabili al 100% abbiamo definito dei repository di esempio per i casi d’uso più comuni come container e cloud functions, che possono essere utilizzati per accelerare le attività di setup di un progetto. 
  • Onboarding: sviluppo di una applicazione di demo in cui vengono mostrate tutte le guideline scelte dal centro di competenza. Questa demo viene utilizzata per aiutare nell’onboarding di nuovi colleghi che possono vedere un’implementazione pratica di quello che hanno studiato nella documentazione fornita. 
  • Condivisione delle competenze: organizziamo dei momenti di condivisione di argomenti specifici, non necessariamente correlati alle attività di sviluppo delle singole persone. Questi argomenti mirano a diffondere conoscenze che altrimenti difficilmente sarebbero arrivate a tutto il team, dando un’ulteriore possibilità di crescita ed engagement. 

Con queste attività abbiamo già notato dei miglioramenti sulla velocità di sviluppo e sulla qualità del codice che ci incoraggiano a continuare su questa strada. 

 

Gli autori

Michele Massaro – Project Manager, Var Group

Francesco Meneguzzo – Lead Backend Software Engineer, Var Group