architetture orientate ai servizi

lavori in corso

SOA

Una architettura orientata ai servizi (SOA: Service Oriented Architecure) è un metodo di sviluppo del software che utilizza componenti indipendenti ciascuno con un compito preciso accessibile in maniera definita.

In questo contesto gli attori coninvolti nella produzione e nell'uso di un servizio sono sempre programmi: un programma usa servizi offerti da altri e a sua volta può offrirne ad altri ancora.

Principi base

Non esiste uno standard nell'implementazione di questo tipo di architetture ma alcuni principi basilari vengono normalmente seguiti:

Come in tutte le architetture ci sono dei pro e dei contro. Da tenere sempre in mente che i contro dovrebbero essere utili perché in fase di progetto si mitighino tali problemi per quanto possibile e i pro funzionano per un sistema ben realizzato!

Vantaggi delle architetture SOA

Svantaggi delle architetture SOA

Microservizi

In questi ultimi anni questa architettura sta prendendo sempre più spazio, pur partendo dall'idea di SEO la porta ancora più avanti:

Proviamo a riassumere la situazione confrontando i due estremi: un sistema monolitico e uno a microservizi:

diagramma sistema monolitico e microservizi

Aspetto Monolitico Microservizi
struttura Un’unica applicazione che contiene tutte le funzionalità Applicazione divisa in molti servizi indipendenti
Deploy (pubblicazione del servizio) Tutto il codice viene rilasciato insieme Ogni microservizio può essere rilasciato separatamente
Scalabilità Si scala tutta l’applicazione insieme (anche parti che non servono) Si scala solo il servizio necessario
Comunicazione interna tra le parti dell'applicazione Più veloce: chiamate locali (metodi, funzioni) Più lente (in rete): scambio di messaggi con protocolli leggeri
Database Un unico database condiviso Più database separati
Gestione del codice Più semplice all’inizio, ma cresce la complessità con le dimensioni del progetto Codice distribuito, più gestione ma più flessibilità
Resistenza ai guasti Un problema può bloccare tutta l’applicazione Il problema resta confinato nel servizio
Tecnologie Non è obbligatorio ma di solito un unico stack tecnologico e unico linguaggio di programmazione Ogni servizio può usare stack diversi e linguaggi di programmazione diversi
Manutenzione a lungo termine Difficile per applicazioni grandi Più semplice, si lavora su un microservizio isolatamente