Come costruire un’architettura orientata ai servizi (SOA)
©. com | Bakhtiar Zein
In questo articolo ci concentriamo sul tema dell’architettura orientata ai servizi (SOA). Iniziamo con un tuffo profondo in 1) SOA: una descrizione e andando poi a discutere 2) costruire un’architettura orientata ai servizi.
ARCHITETTURA ORIENTATA AI SERVIZI: UNA DESCRIZIONE
Che cos’è SOA?
SOA o architettura orientata ai servizi è un metodo attraverso il quale diversi tipi di servizi possono interagire tra loro in modo indipendente. Un servizio è una parte autonoma della funzionalità e diversi servizi possono essere combinati per fornire l’uso e la funzionalità di un’applicazione software su larga scala. Ciò che fa SOA è che rende più semplice per le parti software su PC collegati a una rete interagire e cooperare. Il modello di progettazione di SOA è tale che i componenti delle applicazioni in esso possono offrire servizi ad altri tali componenti per lo più su una rete. Ogni sistema informatico può eseguire qualsiasi numero di servizi, ognuno dei quali è costruito per scambiare informazioni con qualsiasi altro servizio diverso in una rete senza l’aiuto umano.
Nella terminologia aziendale, SOA è un insieme di servizi IT allineati alle imprese che insieme affrontano gli obiettivi e i processi dell’azienda. La progettazione strutturale di SOA fa in modo che ci sia un allineamento con le esigenze del business così come la soluzione tecnologica dello stesso.
I principali elementi di SOA
Ecco i principali elementi di SOA:
- Driver SOA – Driver SOA o driver aziendali aziendali includono cose come la concorrenza, la strategia, le forze normative e le forze di mercato. Tutte queste cose si uniscono per guidare l’architettura aziendale e dare una forma alla gestione delle prestazioni a livello aziendale
- Abilitatori SOA-I cinque principali abilitatori SOA sono il modello di business aziendale, l’ottimizzazione delle prestazioni aziendali, la razionalizzazione del portafoglio, la definizione della semantica aziendale e gli indicatori chiave delle prestazioni. Avere un modello di business è importante per il corretto allineamento dei servizi con gli obiettivi e gli obiettivi del business. Il modello di informazioni semantiche fornisce le informazioni comuni e generali relative al business per una determinata impresa. I principali indicatori di performance o KPI rendono possibile la valutazione dell’impatto delle SOA e facilitano la misurazione dei processi aziendali. D’altra parte, la razionalizzazione del portafoglio rende possibile il consolidamento e la semplificazione di applicazioni, dati e infrastrutture.
- Implementazione SOA-Per quanto riguarda l’implementazione, i servizi e i processi aziendali sono gli aspetti principali. I processi aziendali sono per lo più associati agli obiettivi aziendali e agli obiettivi delle operazioni, mentre, d’altra parte, i servizi aziendali devono essere ben allineati e sono fondamentali per un’implementazione SOA flessibile e di successo. Alcuni degli altri aspetti relativi all’implementazione di SOA sono i repository di contenuti aziendali, i servizi di messaggistica semantica e integrazione. Le informazioni rappresentano le risorse di dati dell’azienda e questi dati vengono passati sotto forma di documenti che forniscono una sorta di messaggi semantici tra servizi e processi.
- Supporto SOA-Tutte le funzioni e gli elementi delle applicazioni e dei sistemi esistenti sono resi disponibili e utilizzabili ai servizi con il supporto di alcuni servizi di integrazione che decollano dalle funzioni esistenti tramite nuove interfacce di servizio.
I principi fondamentali di SOA
Di seguito è riportato l’elenco dei principi fondamentali di SOA:
- Architettura del servizio: il layout fisico o la progettazione di singoli servizi che superano tutte le risorse utilizzate da un servizio.
- Architettura di composizione dei servizi – Tutti i servizi sviluppati utilizzando metodi di progettazione orientati ai servizi sono incentrati sulla composizione e questa è la loro caratteristica principale. Questa architettura, quindi, è la composizione di singole architetture di vari servizi.
- Service inventory architecture – Questa architettura è formata dal service inventory blueprint in cui l’inventario del servizio è costituito da servizi che automatizzano le procedure delle aziende.
- Architettura aziendale orientata ai servizi-Questo tipo costituisce architetture di composizione, servizio e inventario.
L’evoluzione del concetto SOA
- Design monolitico – Questo progetto era legato alla codifica procedurale relativamente non strutturata
- Design orientato agli oggetti e alla struttura – Questo è il design che coinvolge unità di programma basate su funzionalità.
- Progettazione client-server (design a due livelli) – Questo è il concetto di progettazione distribuita ed è legato al raggruppamento di funzionalità in due livelli.
- Distributed object design (progettazione multilivello) – Questa progettazione comporta interazioni oggetto in un ambiente eterogeneo e progettazione di oggetti distribuiti.
- Component object model architecture-Questo è un progetto in cui vi è un’aggregazione di elementi in parti basate sulla logica con tipi fortemente così come un’interfaccia ben definita.
- Service oriented architecture – Si tratta di un progetto che coinvolge interazioni e comunicazioni tra servizi a grana grossa con interfacce standard per un interoperations flessibili.
SOA e JAVA
Molti sviluppatori pensano che SOA, così come i servizi web, siano sinonimi l’uno con l’altro, ma questo non è vero. Essi possono anche credere che non è solo possibile costruire SOA senza l’utilizzo di servizi web, ma in realtà, SOA è un principio di progettazione, ma i servizi web sono una sorta di una tecnologia di implementazione. Ciò significa che SOA può essere effettivamente costruito senza fare uso di tecnologie di implementazione di un certo tipo. Ma Java è un altro tipo di tecnologia tradizionale che può essere utilizzata per sviluppare o costruire un’architettura orientata ai servizi.
L’obiettivo principale di SOA è quello di sviluppare un accoppiamento libero tra i moduli, e un’applicazione può essere costruita in cui i moduli non sono accoppiati tra loro troppo strettamente. Questo tipo di struttura può essere costruito o formato con l’aiuto di JAVA.
Quali sono le caratteristiche di SOA?
- Connessione allentata-I servizi in SOA sono collegati tra loro liberamente per formare una connessione. Ciò dà un presupposto al minimo di interdipendenza tra ogni servizio. L’idea principale è di ridurre l’interdipendenza al livello in cui la compatibilità è ancora mantenuta.
- L’interfaccia standardizzata dei servizi-Un requisito fondamentale di SOA è la necessità di standardizzare le interfacce e i dettagli. I dettagli devono includere quali dati sono necessari, come un servizio può essere utilizzato e come le regole devono essere applicate.
- Riusabilità – In SOA, la riusabilità dei servizi è possibile lungo la catena di processo anche da altre parti e anche per altri tipi di scopi.
- Trovabilità di un servizio-Un’altra caratteristica è che un servizio deve essere facilmente trovato per poterlo utilizzare. Per tutti i consumatori, i repository di servizio sono resi disponibili e tali repository consistono nell’interfaccia e nel metodo di implementazione del servizio.
- Autonomia del servizio-Ogni servizio deve essere in grado di funzionare e funzionare in modo indipendente. Questo termine indica quei servizi che sono autosufficienti e sono in grado di gestire le risorse, la logica e l’ambiente da soli.
- Capacità per l’orchestrazione dei servizi: si tratta di un processo in cui un singolo servizio viene combinato con altri servizi di questo tipo per ottenere processi o unità aziendali più grandi. Questa è un’ulteriore caratteristica o requisito per SOA.
- Apolidia dei servizi-Le prestazioni dei servizi si basano sul concetto che viene reso un servizio definito. Ciò tiene conto della conservazione dei dati, ma solo se il requisito è specificato o richiesto in particolare.
Vantaggi e benefici di SOA
- Migliori ritorni sull’investimento – Uno dei più grandi vantaggi di SOA è che offre un ritorno superbo sull’investimento. Poiché il processo comporta la creazione di livelli robusti, ciascuno di questi livelli di servizio offrono un migliore ritorno sull’investimento che è stato fatto per creare il software.
- Mobilità del codice: questo è un altro importante vantaggio di SOA ed è possibile perché esiste una trasparenza della posizione nell’architettura orientata ai servizi. Alla maggior parte dei clienti non interessa dove si trovano i servizi perché esiste un’associazione dinamica e la ricerca di servizi. Ciò significa che le aziende che utilizzano SOA possono spostare i servizi su macchine diverse o spostarlo a fornitori di servizi esterni.
- La riusabilità – Un altro vantaggio di SOA è che i vari codici e servizi possono essere utilizzati più e più volte. C’è la comodità di runtime riutilizzo del servizio, ed è facile come trovare un servizio nella directory e vincolante ad esso. Gli sviluppatori non devono preoccuparsi di piattaforme e altre incompatibilità.
- Supporto per vari tipi di client: qualsiasi azienda può utilizzare più tipi di client e più client per accedere a un servizio in SOA. Questo perché in tale struttura o concetto, i livelli sono stati suddivisi in servizio e i livelli client e vari tipi di client sono più semplici da implementare.
- Un livello più elevato di disponibilità-Diversi server hanno diversi casi di servizi che li utilizzano a causa del fatto che SOA supporta la trasparenza della posizione. Ciò significa che la disponibilità complessiva è molto alta. Ad esempio, se una macchina o una parte di una rete smette di funzionare o ha qualche problema, le richieste possono essere reindirizzate ad altri servizi senza che il client lo sappia o ne sia disturbato.
- Meno difetti-Questo è uno dei principali vantaggi di SOA. La probabilità di difetti è molto più bassa e il test complessivo è molto migliore grazie alle interfacce di servizi pubblicate che possono essere testate facilmente. Più test si traduce in un maggiore livello di precisione e meno difetti.
Sfide SOA
- Mancanza di spazio di test – Una delle maggiori sfide in SOA è la mancanza di spazio di test. In un’architettura tipica, non esistono strumenti o metodi ben formati o sofisticati per testare un servizio senza testa come un servizio di messaggi o database. L’obiettivo principale di SOA è quello di offrire agilità alle aziende e alle imprese. Ma a causa della mancanza di fiducia orizzontale, è necessario investire in un quadro di test che renderebbe la sfida più facile.
- Gestisci i metadati dei servizi – Questa è una sfida comune e molto ovvia di SOA. Gestire i metadati dei servizi non è solo difficile, ma spesso molto complicato. Uno spazio architettonico basato su servizi coinvolge i servizi che interagiscono tra loro scambiando messaggi. In tale scenario, un singolo servizio può a volte avere milioni di messaggi generati. La gestione di questi molti servizi può diventare molto difficile soprattutto quando i servizi sono forniti da diverse aziende e dipartimenti all’interno di una società. Questo crea molti problemi di fiducia.
- Fornire i giusti livelli di sicurezza – Un’altra sfida di SOA sta fornendo i livelli appropriati di sicurezza. La sicurezza gestita dall’applicazione non è il metodo o il modello corretto per la protezione dei servizi perché i modelli di sicurezza progettati nelle applicazioni non possono essere sufficienti quando l’applicazione si mostra agli altri.
- Interoperabilità-Questo diventa un aspetto cruciale delle implementazioni SOA. Spesso, nel tentativo di ridurre o diminuire l’interdipendenza dei servizi, la compatibilità tra di essi può diminuire, ma la dipendenza deve essere ridotta a un livello tale che la compatibilità può ancora essere mantenuta.
- Vendor hype – C’è un significativo venditore hype relativi a SOA, e questo crea un certo livello di aspettative indebite. Mentre ci sono molti vantaggi di SOA, può avere diversi svantaggi pure. Ad esempio, SOA non garantisce una riduzione dei costi IT e non promette nemmeno un miglioramento dell’agilità dei sistemi. Quindi, sarebbe meglio se ci fosse una chiara distinzione tra hype e realtà.
COSTRUIRE UN’ARCHITETTURA ORIENTATA AI SERVIZI
SOA Framework
Per capire come è costruito SOA, devi prima capire qual è il suo framework.
SOA è visto come 5 diversi livelli orizzontali che sono:
- Livello interfaccia utente: sono le app che accedono alle interfacce di servizio o app.
- Business process layer-Questo è un livello che è un servizio che rappresenta i casi d’uso aziendali per quanto riguarda le applicazioni.
- Servizi-Molti servizi sono messi insieme per creare un’intera impresa.
- Componenti di servizio-Questi sono quei componenti o parti che vengono utilizzati per costruire servizi come interfacce tecnologiche e librerie tecniche, ecc.
- Sistemi operativi-Questo è il livello che contiene modelli tecnici, modelli di dati e repository di dati, ecc.
Di seguito sono riportati gli strati verticali del framework SOA applicati e supportati da quelli orizzontali:
- Livello di integrazione – Questo livello è costituito da supporto del protocollo o integrazione della piattaforma, integrazione dei dati, integrazione di applicazioni e servizi, ecc.
- Qualità del servizio-I fattori che comprendono la qualità del servizio includono disponibilità, sicurezza, prestazioni e altri.
- Informativo-Questo strato svolge principalmente il compito di fornire informazioni relative al business.
- Governance-Questo livello o livello di strategia IT è governato da livelli orizzontali al fine di raggiungere la capacità, così come il modello operativo, secondo necessità.
SOA Implementation Framework (SOAIF)
L’implementazione SOA richiede e richiede software infrastrutturale di runtime e strumenti. Questo può essere definito collettivamente come framework di implementazione dell’architettura orientata ai servizi o SOAIF. Questo concetto mira a un quadro completo che offre tutti i tipi di tecnologia che un business può richiedere non solo costruire, ma anche eseguire SOA. Un SOAIF è costituito da e include funzionalità sia in fase di esecuzione che in fase di progettazione. Esso include anche funzionalità del software che un’azienda può essere necessario eseguire una SOA e anche costruire, tra cui service-oriented:
- Modellazione
- Integrazione
- Strumenti
- Gestione
- Sicurezza
- Processi
Approcci alla SOA
Ci sono tre tipi principali o metodi o approcci che sono stati emergenti per informazioni sul club, disparati e sistemi in un business. Poiché diversi fornitori di servizi e aziende corrono verso la fornitura di soluzioni a clienti e consumatori, questi approcci aiutano a soddisfare i requisiti per servizi a grana grossa, vagamente bastonati e asincroni.
1. L’Enterprise Service Bus
Il primo approccio che aiuta a costruire e implementare un SOA ottimale è l’enterprise service bus o ESB. Questo approccio aiuta a coordinare e organizzare i diversi elementi che si trovano sotto forma di servizi distribuiti su una rete. Questo approccio considera i sistemi come servizi discreti e distribuiti che si connettono tra loro attraverso un’infrastruttura orientata ai messaggi che è asincrona. Questo tipo di infrastruttura orientata ai messaggi consente di avere connessioni liberamente accoppiate tra servizi o moduli indipendenti.
2. Gestione dei processi aziendali
Molte aziende, da molti anni, hanno cercato di risolvere i problemi dei processi aziendali mediante l’implementazione dell’approccio di gestione dei processi aziendali. Questo approccio prende in considerazione le risorse e i sistemi IT come attività o attività che partecipano a procedure aziendali ben sincronizzate e ben orchestrate. Gli strumenti BPM vengono utilizzati principalmente al momento della modellazione e della progettazione delle procedure piuttosto che utilizzarli per costruire processi che possono raggiungere gli obiettivi di integrazione. Questa è la sfida principale di BPM. Con le soluzioni BPM da sole sono sufficienti per soddisfare i requisiti SOA perché non consistono nell’ambiente di runtime necessario per i moduli liberamente accoppiati.
3. Service Oriented Integration
Il terzo e ultimo approccio alla corretta implementazione di SOA è l’approccio di integrazione orientato ai servizi. Questo particolare approccio fa uso delle regole o dei principi guida architettonici per costruire un ambiente o un ecosistema di servizi che le aziende possono combinare dinamicamente e creare processi di livello superiore in grado di soddisfare requisiti in continua evoluzione e in continua evoluzione. Questo approccio supera i moduli strettamente accoppiati e fragili creando una distinzione tra consumatore e produttore di un servizio. Impone quindi l’aspetto dell’accoppiamento allentato necessario per implementare correttamente SOA per soddisfare i requisiti aziendali. Anche questo approccio di per sé non è sufficiente a garantire interazioni di lunga durata tra i servizi.
Le migliori pratiche per la costruzione di un SOA
Durante la costruzione di un SOA, è necessario seguire alcune delle migliori e più vantaggi pratiche. Queste pratiche sono date come segue:
- Le tecnologie di implementazione sono molto pubblicizzate e bisogna ricordare di non saltare a loro a causa della loro popolarità. Si deve considerare attentamente se i servizi web hanno più senso per le loro esigenze e necessità. È importante ricordare che la creazione di applicazioni orientate ai servizi utilizzando tecnologie come RMI può essere più adatta al caso di un’azienda piuttosto che ai servizi Web.
- Bisogna ricordarsi di non creare o costruire moduli molto strettamente collegati o accoppiati in quanto ciò porta a un set up o un’infrastruttura fragili.
- È importante mantenere l’interoperabilità e per questi, è necessario seguire le best practice WS-I.
- Se non vedi alcun senso nell’utilizzo dei servizi web, ci sono anche molte altre opzioni alternative che possono essere scelte.