L'architettura orientata ai servizi, o SOA, definisce un modo per rendere i componenti software riutilizzabili e interoperabili attraverso interfacce di servizio. I servizi utilizzano standard di interfaccia comuni e un modello architettonico in modo da poter essere rapidamente incorporati in nuove applicazioni.
La SOA rimuove le attività dello sviluppatore dell'applicazione che in precedenza sviluppava o duplicava le funzioni esistenti o doveva sapere come connettersi o fornire interoperabilità con le funzioni esistenti.
Ogni servizio in una SOA incorpora il codice e i dati necessari per eseguire una funzione aziendale completa e discreta (ad esempio la verifica del credito di un cliente, il calcolo del pagamento mensile di un prestito o l'elaborazione di una richiesta di mutuo). Le interfacce di servizio forniscono un legame debole, ovvero possono essere chiamate con poca o nessuna conoscenza del modo in cui il servizio è implementato nel livello sottostante, riducendo le dipendenze tra le applicazioni.
Questa interfaccia è un contratto di servizio tra il fornitore e il consumatore di servizi. Le applicazioni che si trovano al di là dell'interfaccia di servizio possono essere scritte in Java, Microsoft .Net, Cobol o in qualsiasi altro linguaggio di programmazione e possono essere fornite come pacchetti di applicazioni aziendali da una società (ad es. SAP), come applicazioni SaaS (ad es. Salesforce CRM) oppure come applicazioni open source.
Le interfacce di servizio sono spesso definite utilizzando il linguaggio WSDL (Web Service Definition Language), una struttura di tag standard basata su xml (Extensible Markup Language).
I servizi vengono esposti utilizzando protocolli di rete standard, ad esempio SOAP/HTTP o Restful HTTP (JSON/HTTP), per inviare richieste di lettura o per modificare i dati. La governance dei servizi controlla il ciclo di vita dello sviluppo e, nella fase appropriata, i servizi vengono pubblicati in un registro affinché gli sviluppatori li possano trovare e riutilizzare rapidamente per assemblare nuove applicazioni o processi aziendali.
Questi servizi possono essere creati da zero, ma spesso vengono creati esponendo funzioni di sistemi di record legacy come interfacce di servizio.
In questo modo, la SOA rappresenta una fase importante nell'evoluzione dello sviluppo e dell'integrazione delle applicazioni negli ultimi decenni. Prima che la SOA emergesse alla fine degli anni '90, connettere un'applicazione a dati o funzioni ospitati in un altro sistema richiedeva un'integrazione point-to-point complessa, che gli sviluppatori dovevano ricreare, in parte o completamente, per ogni nuovo progetto di sviluppo. L'esposizione di tali funzioni tramite servizi SOA ha permesso allo sviluppatore di riutilizzare semplicemente la funzionalità esistente e connettersi tramite l'architettura SOA ESB (vedi sotto).
Sebbene SOA e la più recente architettura di microservizi condividano molte parole in comune (ovvero "servizio" e "architettura"), sono solo vagamente correlate e, di fatto, operano in ambiti diversi, come discusso più avanti in questo articolo.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
Un Enterprise Service Bus (ESB) è un modello di architettura che prevede l'utilizzo di un componente software centralizzato per gestire le integrazioni tra le applicazioni. Esegue trasformazioni dei modelli di dati, gestisce la connettività e la messaggistica, esegue l'instradamento, converte i protocolli di comunicazione e potenzialmente gestisce la composizione di più richieste.
L'ESB può rendere disponibili queste integrazioni e trasformazioni come interfaccia di servizio per il riutilizzo da parte di nuove applicazioni. Il modello ESB viene in genere implementato attraverso un tempo di esecuzione di integrazione e un set di strumenti progettati ad hoc per assicurare la migliore produttività possibile.
È possibile implementare una SOA senza architettura ESB, ma questo equivarrebbe a disporre di un insieme disarticolato di servizi. Ogni proprietario dell'applicazione sarebbe costretto a connettersi direttamente al servizio di cui ha bisogno ed eseguire le necessarie trasformazioni dei dati per adeguarsi a ciascuna delle interfacce di servizio.
Questa soluzione è alquanto laboriosa (anche se le interfacce sono riutilizzabili) e comporta ulteriori complicazioni nella successiva manutenzione, poiché ogni connessione è di tipo punto a punto. Infatti, gli ESB sono stati alla fine considerati un elemento talmente fondamentale di qualsiasi implementazione SOA che i due termini sono talvolta utilizzati come sinonimi, creando confusione.
Rispetto alle architetture che l'hanno preceduta, la SOA ha offerto vantaggi significativi all'impresa:
Fino al 2010 le implementazioni SOA sono state utilizzate a pieno regime presso aziende leader praticamente in ogni settore. Ad esempio:
Delaware Electric è passata alla SOA per integrare sistemi che in precedenza non comunicavano tra loro, con conseguente miglioramento dell'efficienza, il che ha aiutato l'organizzazione a rimanere solvente durante un periodo di congelamento quinquennale delle tariffe elettriche imposto dallo stato.
Cisco ha adottato la SOA per assicurarsi che il proprio processo di ordinazione dei prodotti fosse coerente per tutti i prodotti e in tutti i canali, e ha quindi reso disponibili i processi di ordinazione come servizi che le divisioni, le acquisizioni e i business partner di Cisco potevano incorporare nei propri siti web.
L'Independence Blue Cross (IBC) di Filadelfia ha implementato una SOA per garantire che le diverse parti che trattavano i dati dei pazienti, cioè agenti di assistenza ai clienti IBC, uffici dei medici, utenti del sito web IBC, lavorassero sulla stessa origine dati (una "singola fonte affidabile").
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:
La SOA è uno stile architettonico di integrazione e un concetto esteso a livello aziendale. Consente alle applicazioni esistenti di essere disponibili su interfacce tra esse poco collegate, ciascuna corrispondente a una funzione aziendale, il che consente alle applicazioni in una parte di un'azienda estesa di riutilizzare la funzionalità in altre applicazioni.
L'architettura di microservizi è uno stile architettonico e un concetto di applicazione. Consente di suddividere i componenti interni di una singola applicazione in elementi più piccoli che possono essere modificati, scalati e amministrati in modo indipendente. Non definisce il modo in cui le applicazioni comunicano tra loro, per questo torniamo all'ambito aziendale delle interfacce di servizio fornite dalla SOA.
I microservizi hanno cominciato a farsi conoscere e apprezzare con l'avvento della virtualizzazione, del cloud computing, delle pratiche di sviluppo Agile e della metodologia DevOps. La maggior parte dei vantaggi dei microservizi in questi contesti deriva dal disaccoppiamento 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 di 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.
Un servizio single-tenant completamente gestito per lo sviluppo e la distribuzione di applicazioni Java.
Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.
Lo sviluppo di applicazioni cloud significa programmare una volta, iterare rapidamente e distribuire ovunque.