Architettura a Microservizi: perché riduce i tempi di rilascio

20 maggio 2020 / di pubblicato in
Architettura a Microservizi: perché riduce i tempi di rilascio

Nelle attività di sviluppo software una Architettura a Microservizi può rappresentare la soluzione a molti problemi di modernizzazione ed efficientamento del parco applicativo, e permettere un’accelerazione dei tempi di rilascio delle nuove versioni del codice, salvaguardando al contempo i requisiti di sicurezza (approccio già seguito dai principali vendor di software).


Costruire un’architettura applicativa agile

Oggi la trasformazione digitale impone ai responsabili dell’infrastruttura IT di ammodernare la tradizionale architettura applicativa, rendendola più agile e flessibile in rapporto alle esigenze di business: per cogliere le opportunità di mercato e creare nuovo valore per gli utenti (interni e Clienti finali) è infatti fondamentale saper innovare di continuo funzionalità e servizi, incrementando la frequenza di rilascio di nuove versioni delle applicazioni.

Di fronte a tali esigenze, l’architettura applicativa classica, tipicamente esistente in molte organizzazioni, si rivela però rigida, perché costituita da applicazioni legacy monolitiche, che risultano complesse e difficili da aggiornare (con tempistiche spesso non adeguate alla velocità con cui il business evolve): in un’applicazione con architettura monolitica i diversi componenti software, come il database, la logica di business o l’interfaccia utente sono strettamente integrati tra loro, e implementati come un solido blocco di codice. Questa stretta interdipendenza tra i componenti rende complesso qualsiasi intervento di aggiornamento o manutenzione, specie quando l’applicazione in questione diventa di grandi dimensioni, in quanto, ogni volta che si modifica il codice, anche solo di un dato componente software, poi occorre eseguire il deployment e il collaudo dell’intera applicazione, prima di rilasciarla nuovamente in produzione.


Architettura a microservizi, cos’è

A causa delle limitazioni appena illustrate, l’architettura monolitica presenta diversi inconvenienti: quando si rilascia in produzione un’applicazione monolitica, si rischia di creare rallentamenti o blocchi nella normale operatività aziendale, e anche d’introdurre bug di sicurezza, in sistemi che stanno funzionando e generando valore per l’organizzazione. Dunque, il modello di sviluppo monolitico non stimola ad accrescere i rilasci software.

Ancora, il modello monolitico non favorisce l’adozione di paradigmi come DevOps, e rende più problematico l’utilizzo di metodologie di sviluppo come CI/CD (continuous integration, continuous delivery/continuous deployment), che, portando automazione e capacità di monitoraggio all’interno del processo di sviluppo, hanno l’obiettivo di velocizzare i cicli di rilascio del software e di accelerarne la frequenza, riducendo al contempo costi di sviluppo e rischi di perturbamento della security.  

Una possibile risposta all’esigenza di accelerare i tempi di rilascio delle applicazioni è il passaggio a un’architettura a microservizi: quest’ultima corrisponde a un modello di sviluppo che si fonda sulla scomposizione dell’applicazione in un insieme di servizi più piccoli interconnessi tra loro


Rilasci software più rapidi con l’architettura a microservizi

Nell’approccio basato sull’architettura a microservizi, ciascun microservizio costituisce una piccola applicazione, indirizzata a eseguire in maniera indipendente determinate funzioni.

In termini di efficienza e rapidità di sviluppo all’interno della pipeline, i vantaggi dell’architettura a microservizi sono riscontrabili da vari punti di vista:

  • In primo luogo, il fatto di scomporre un’applicazione, magari complessa e costituita da molte linee di codice, in ‘pezzi’ più piccoli, maggiormente comprensibili e gestibili, consente di sviluppare ogni singolo microservizio più rapidamente, e anche di aggiornarlo con maggior facilità.
  • Poiché, in un’architettura a microservizi, ciascun microservizio può essere sviluppato e implementato in maniera indipendente, questa modalità di lavoro rende possibile l’adozione delle pratiche CI/CD (che consentono un tasso di errore inferiore, evidenziando fin da subito eventuali bug e inconsistenze) anche nei casi in cui l’applicazione da costruire è molto complessa e di grandi dimensioni.
  • La possibilità di sviluppare ciascun microservizio in maniera indipendente dagli altri permette a ciascun team di concentrarsi su un dato componente software, con conseguenti benefici a livello di efficienza e velocità di creazione del componente stesso.
  • Adottando un’architettura a microservizi, il ritmo dei cicli di rilascio del software non è rallentato dall’utilizzo vincolante di determinati tool di sviluppo, perché ogni sviluppatore è libero di scegliere la tecnologia che ritiene più appropriata per creare un dato microservizio.


Sinthera - white paper - DevSecOps la guida per vincere la sfida della digital transformation