Home
topics
Cosa un'architettura SOA (Service-Oriented Architecture)?
La SOA, o service-oriented architecture, ossia architettura orientata ai servizi, definisce un modo per rendere i componenti software riutilizzabili e interoperabili mediante delle interfacce di servizio. I servizi utilizzano standard di interfaccia comuni e un modello architettonico tali da poter essere rapidamente incorporati in nuove applicazioni. Questo solleva da alcuni compiti lo sviluppatore di applicazioni che in precedenza ha sviluppato o duplicato la funzionalità esistente o doveva sapere come connettersi o fornire interoperabilità con le funzioni esistenti.
Ogni servizio in una SOA incorpora il codice e le integrazioni dei dati necessari per eseguire una funzione aziendale completa e discreta (ad esempio, il controllo del credito del cliente, il calcolo di un pagamento di un prestito mensile o l'elaborazione di un'applicazione ipotecaria). Le interfacce di servizio forniscono un legame debole, il che significa che possono essere chiamate con poca o nessuna conoscenza di come il servizio è implementato, riducendo le dipendenze tra le applicazioni.
Questa interfaccia è un contratto di servizio tra il fornitore del servizio e il consumatore del servizio. Le applicazioni che sono dietro l'interfaccia di servizio possono essere scritte in Java, Microsoft.Net, Cobol o qualsiasi altro linguaggio di programmazione, fornite come applicazioni software confezionate da un fornitore (ad esempio, SAP), applicazioni SaaS (come, ad esempio, Salesforce CRM), oppure ottenute come applicazioni open source. Le interfacce di servizio sono spesso definite usando i Web Service Definition Language (WSDL), una struttura tag standard basata su xml (extensible markup language).
I servizi vengono erogati usando protocolli di rete, come SOAP (simple object access protocol), HTTP o Restful HTTP (JSON/HTTP), per inviare richieste di lettura o modifica dei dati. La governance dei servizi controlla il ciclo di vita per lo sviluppo e nella fase appropriata i servizi sono pubblicati in un registro che permette agli sviluppatori di trovarli rapidamente e di riutilizzarli per assemblare nuove applicazioni o processi aziendali.
Questi servizi possono essere sviluppati partendo da zero ma spesso vengono creati esponendo funzioni da sistemi legacy di record come interfacce di servizio.
In questo modo, SOA rappresenta una tappa importante nell'evoluzione dello sviluppo e dell'integrazione delle applicazioni negli ultimi decenni. Prima che la SOA emergesse alla fine degli anni 90, il collegamento di un'applicazione a dati o funzionalità ospitate in un altro sistema richiedeva una complessa integrazione point-to-point, integrazione che gli sviluppatori dovevano ricreare, in parte o completamente, per ogni nuovo progetto di sviluppo. L'esposizione di queste funzioni attraverso i servizi SOA ha permesso allo sviluppatore di riutilizzare semplicemente la funzionalità esistente e collegarsi tramite l'architettura SOA ESB (vedi sotto).
Sebbene la SOA e la più recente architettura a microservizi, condividono molte parole in comune (ossia "servizio" e "architettura"), sono solo vagamente collegate e, infatti, operano in ambiti diversi, come discusso più avanti in questo articolo.
Un ESB, o enterprise service bus, è un modello architettonico in cui un componente software centralizzato esegue l'integrazione tra le applicazioni. Esso esegue trasformazioni di modelli di dati, gestisce connettività e messaggistica, esegue il routing, converte i protocolli di comunicazione e gestisce potenzialmente la composizione di richieste multiple. L'ESB può rendere queste integrazioni e trasformazioni disponibili come interfaccia di servizio per il riutilizzo da parte di nuove applicazioni. Il modello ESB viene generalmente implementato utilizzando un toolset e un runtime di integrazione progettati appositamente per garantire la migliore produttività possibile.
È possibile implementare una SOA senza un ESB, ma questo sarebbe equivalente ad avere solo un gruppo di servizi. Ogni proprietario di un'applicazione dovrebbe connettersi direttamente a qualsiasi servizio di cui ha bisogno ed eseguire le trasformazioni dei dati necessarie per soddisfare ciascuna delle interfacce di servizio. Ma ciò richiede molto lavoro (anche se le interfacce sono riutilizzabili) e crea una significativa difficoltà di manutenzione futura, dato che ogni connessione è point to point. In realtà gli ESB sono stati considerati un elemento di fatto di qualsiasi implementazione SOA al punto che i due termini vengono talvolta utilizzati come sinonimi, creando confusione.
Rispetto alle architetture che l'hanno preceduta, la SOA ha offerto notevoli vantaggi alle aziende:
Fino al 2010 le implementazioni SOA sono state utilizzate a pieno regime presso aziende leader praticamente in ogni settore. Ad esempio:
Gli esperti hanno riempito alcune migliaia di pagine cartacee e digitali comparando SOA e microservizi, e definendo le sottigliezze della loro reciproca relazione. Ai fini del presente articolo, le differenze principali tra i due sono l'accoppiamento dei componenti e l'ambito dell'utilizzo:
L'architettura con microservizi è emersa e ha guadagnato terreno con l'aumento di virtualizzazione, cloud computing, pratiche di sviluppo agili e DevOps. La maggior parte dei vantaggi dei microservizi in questi contesti deriva dal disaccoppiamento completo dei componenti, che semplifica e migliora quanto segue:
Per un'analisi più approfondita delle differenze tra SOA e microservizi, consulta "SOA e Microservizi: qual è la differenza?"
Così come l'architettura dei microservizi ha il potenziale per apportare miglioramenti in agilità, scalabilità e resilienza al design delle applicazioni, queste stesse tecniche possono essere applicate anche all'integrazione. Questo è importante perché, nel tempo, lo schema ESB fortemente centralizzato e il relativo team centralizzato di specialisti dell'integrazione possono diventare un collo di bottiglia. Prendendo in prestito dai principi dei microservizi, possiamo potenzialmente suddividere l'ESB in integrazioni più dettagliate e decentrate. Questa è una delle premesse fondamentali alla base dell'integrazione agile.
Connetti applicazioni, servizi e dati con IBM Cloud Pak for Integration, la piattaforma di integrazione più completa disponibile sul mercato.
Connetti app e dati con un potente software di integrazione delle applicazioni automatizzato con l'intelligenza artificiale.
IBM API Connect® è una soluzione di gestione sicura delle API che utilizza un'esperienza intuitiva per aiutare a creare, gestire, proteggere, socializzare e far fruttare le API in modo coerente.
Apprendi le basi della SOA (service-oriented architecture) e dei microservizi, le loro principali differenze e individua l'approccio più adatto alla tua realtà.
Questa guida descrive come accelerare la tua modernizzazione delle applicazioni, migliorare la produttività degli sviluppatori e migliorare l'efficienza e la standardizzazione operativa.
Scopri di più sull'ESB (un componente essenziale della SOA), sui vantaggi che fornisce e su come si collega all'architettura di microservizi.