Metodologia DevOps: cos'è e come funziona Cenni introduttivi sul paradigma DevOps: caratteristiche principali, principi di base, toolchain, lifecycle, strumenti applicativi e scenari di utilizzo

DevOps Methodology, Lifecycle and Best Practices explained

Il termine DevOps (crasi di development e operations) definisce una metodologia di sviluppo software che combina lo sviluppo di software (development) con le attività di operations connesse alla messa in esercizio dei prodotti IT (operations), fondendo questi due aspetti nell'intero ciclo di vita del servizio: dalla progettazione iniziale del prodotto alle sue modifiche in corso d'opera, dalla gestione del codice alle attività di sviluppo, dalla messa in esercizio (deployment) alla manutenzione evolutiva (maintenance).

In questo articolo, dopo una breve introduzione, cercheremo di far luce sulla metodologia generale, le fasi che ne definiscono il ciclo di vita e le best practice che questo nuovo concetto può portare alle società che si occupano di sviluppo software.

Caratteristiche principali

Il metodo DevOps punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle operations dell'IT, nel tentativo di produrre una sinergia basata sull'interdipendenza tra le due cose. Nello specifico, si tratta di un metodo che aiuta le aziende nella gestione dei rilasci, standardizzando gli ambienti di sviluppo mediante processi automatici, flessibili e controllabili, così da fornire agli sviluppatori un controllo maggiore di tutti gli ambienti.

L'adozione del paradigma DevOps favorisce la creazione di full-stack developer e di infrastrutture application-centered, concetti che si sposano bene sia con le metodologie di sviluppo Agile (lean development in primis) che con architetture service-oriented (Service-Oriented Architecture, SOA) basate su microservizi (microservices) in ambienti cloud. I concetti di continuous integration e continuous deployment (CI/CD), che costituiscono l'asse portante della metodologia DevOps, trovano la loro condizione ideale nelle moderne architetture basate su container, che costituiscono l'ambiente di lavoro più utilizzato da chi intende adottare questo metodo di lavoro.

Toolchain

Poiché la metodologia DevOps è pensata per essere interfunzionale, presuppone l'uso di più set di strumenti (toolchain) anziché uno singolo: ciascuno di questi set, spesso chiamati toolchain, può essere raggruppato in una categoria specifica: ciascuna categoria riflette uno dei vari aspetti chiave (o "fasi") dei processi di progettazione, sviluppo e/o consegna del prodotto. Ecco un elenco dei principali toolchain, raggruppati nelle rispettive categorie:

  • Planning: task management, schedules.
  • Coding: code development and review, source code management tools, code merging.
  • Building: continuous integration tools, version control tools, build status.
  • Testing: continuous testing tools that provide quick and timely feedback on business risks, performance measurement.
  • Packaging: artifact repository, application pre-deployment staging.
  • Releasing: change management, release approvals, release automation.
  • Operating: infrastructure installation, configuration and management, infrastructure changes (scalability), infrastructure as code tools, capacity planning, capacity & resource management, security check, service deployment, high availability (HA), data recovery, log/backup management, database management.
  • Monitoring: service performance monitoring, log monitoring, applications performance monitoring, end-user experience, incident management.

Ovviamente, ciascuna toolchain prevede l'utilizzo di un set di strumenti di sviluppo adeguati: ad esempio, l'integrazione continua può essere affrontata con l'uso congiunto di pipeline Jenkins, Gitlab e Bitbucket; l'infrastruttura come codice può essere gestita usando Terraform, Ansible e Puppet; e così via.

Lifecycle

Se prendiamo le categorie in cui abbiamo diviso le toolchain e le uniamo insieme, possiamo determinare il seguente ciclo di vita del paradigma DevOps, noto anche come DevOps lifecycle.

Planning > Coding > Building > Testing > Packaging > Releasing > Operating > Monitoring

Che si può ulteriormente "sintetizzare" nei seguenti modi:

Planning > Continuous Integration > Continuous Deployment > Monitoring

Planning > CI / CD > Monitoring

Il lifecycle di cui sopra viene convenzionalmente visualizzato all'interno di un diagramma che ha il simbolo dell'infinito, a significare il processo di ciclo continuo che contraddistingue il paradigma DevOps. Ecco uno dei diagrammi a nostro avviso più efficaci, che contiene anche alcuni dei set di strumenti principali corrispondenti alle varie categorie:

Metodologia DevOps: cos'è e come funziona
Taken from quintagroup.com

Alcuni diagrammi utilizzano Configuration anziché Operation, altri (come quello da noi proposto qui sopra) preferiscono utilizzare le fasi di Release e Deploy al posto di Packaging e Releasing, altri ancora uniscono le fasi di Test e Packaging all'interno del concetto-contenitore Continuous Integration, e così via: si tratta tuttavia di differenze minime, che non modificano il concetto generale.

Infrastructure as Code

Infrastructure as code (IaC) è il processo di gestione e provisioning dei data center dei computer attraverso file di definizione leggibili dalla macchina (script o definizioni dichiarative) anziché mediante attività di configurazione dell’hardware fisico o tramite strumenti di configurazione interattiva. Si tratta di una modalità di configurazione tipica degli ambienti cloud computing, in particolare per la configurazione degli ambienti Infrastructure as a Service (IaaS).

L’approccio IaC può utilizzare sia script che definizioni dichiarative, piuttosto che processi manuali, ma il termine è più spesso usato per promuovere approcci dichiarativi. E’ un approccio che si è diffuso negli ultimi anni in conseguenza della necessità di creare ambienti elastici, esigenza che porta spesso all'adozione del paradigma DevOps.

Conclusioni

Per il momento è tutto: ci auguriamo che questo articolo possa essere utile per farsi un'idea della metodologia DevOps e magari, perché no, favorire la diffusione di un paradigma che può essere certamente il caso di adottare all'interno delle aziende o organizzazioni che abbiano la necessità di migliorare il proprio processo di sviluppo e deploy dei prodotti software.

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.