Microservizi e SOA: similitudini e differenze

In qualsiasi dibattito sulle architetture a microservizi è facile che questi vengano prima o poi assimilati alle Service-Oriented Architecture (SOA) molto popolari dai primi anni Duemila in poi.

I microservizi, si usa dire, sono un’evoluzione delle SOA.

L’espressione non è formalmente sbagliata, anche perché non esistono definizioni univoche e immutabili sia delle SOA sia dei microservizi.

Le similitudini tra i due approcci effettivamente ci sono e anche l’obiettivo che intendono ottenere è lo stesso, ossia la flessibilità applicativa. Attenzione però a non cadere nella tentazione di considerare SOA e microservizi come del tutto la stessa cosa. Alcune differenze restano e vanno considerate, almeno per avere termini di paragone chiari.

Di cosa stiamo parlando

Il concetto delle Service-Oriented Architecture si afferma all’inizio degli anni Duemila come modo per scomporre applicazioni monolitiche in una serie di servizi distinti che possono dialogare fra loro in rete. Ogni servizio è autonomo, rappresenta una operazione (in senso lato) con un risultato ben definito, si richiama anche senza sapere come funziona “dentro”, può essere poi composto da altri servizi SOA.

Rispetto allo scenario dell’IT in cui si sono sviluppate, le SOA portavano innovazione soprattutto per la flessibilità applicativa che promettevano, in particolare per il fatto di definire un’architettura distribuita e teoricamente multivendor. Oggi sembra una cosa ovvia, dieci anni (e più) fa non lo era.

Anche l’obiettivo dei microservizi è “spacchettare” le applicazioni complesse in componenti più piccoli e mirati. Un’applicazione diventa quindi una collezione di servizi che dialogano in rete quasi sempre via API e HTTP, ciascuno funzionante come processo autonomo. È una definizione davvero molto simile alla precedente, infatti le differenze tra i due approcci si delineano non tanto dal punto di vista teorico quanto da quello pratico, considerando come sono stati implementati.

Cosa cambia tra i due approcci

Innanzitutto, le applicazioni odierne basate su microservizi tendono a essere molto più modulari di quelle basate sulle SOA, che mediamente non coinvolgevano più di tre o quattro servizi distinti. Nel caso dei microservice, invece, i componenti possono anche essere nell’ordine delle decine.

Parziale conseguenza di questa modularità è che la comunicazione tra microservizi può essere molto articolata e comprendere API molto specifiche. Ciascun microservizio ha le sue specificità e ciò si riflette anche da questo punto di vista. In confronto le SOA adottano sistemi di comunicazione più standard e meno numerosi.

Un’altra differenza chiave è nella gestione dello storage: le SOA di solito avevano un layer dedicato alla memorizzazione di informazioni condiviso tra tutti i servizi. I microservice non si pongono il problema dal punto di vista teorico, a memorizzare i dati dovrebbero essere le applicazioni che usano i microservizi.

C’è infine la scelta tecnologica della piattaforma che gestisce i microservizi. Un microservice è quasi sempre realizzato con un container, anche se questo non è imposto da nessuna specifica. Quando si parlava di SOA, invece, i container nemmeno esistevano.

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche iscriviti alla newsletter gratuita.

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here