Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti

Nel numero:

104 febbraio
, anno 2006

Service Oriented Architecture

Parte V: SOI

Stefano Rossini – Marco Piraccini
Stefano Rossini

Stefano Rossini è nato a Giussano (MI) il 29/10/1970 e ha conseguito il diploma universitario in Ingegneria Informatica presso il Politecnico di Torino. Ha maturato più di venti anni di esperienza in diversi progetti Enterprise mission-critical ricoprendo i ruoli di IT Program Manager, Project Manager & Software Architect presso importanti gruppi bancari, pubblica sanità, pubblica amministrazione e software house.

Attualmente ricopre il ruolo di Sofware Factory Manager, Lean Change Agent ed Enterprise Architect presso Capgemini.

Esperto in ambito di sanità pubblica come Project/Program Manager per la governance dei progetti IT strategici di Cartella Clinica Elettronica (CCE) e Fascicolo Sanitario Elettronico (FSE).

Esperto in ambito bancario dove ha ricoperto per una decina d'anni il ruolo di Project Manager e Leader Software Architect (BPM, IWBank e BPS) occupandosi della pianificazione e gestione del progetto, del coordinamento del gruppo di sviluppo software sia InHouse che Nearshore/Offshore. Esperto nella conduzione di progetti secondo metodologia di Project Management PMBok e metodologia agile Scrum.

Si occupa di Java dal 1999 arrivando da precedenti esperienze in C e C++ in ambito Telco (Alcatel & Siemens). Ha pubblicato più di un centinaio di articoli su argomenti di IT Governance, Project Management, architetture enterprise e problematiche di Integrazione e SOA. È coautore dei libri "Manuale pratico di Java" (2001) e "La programmazione della piattaforma J2EE" (2005) editi da Hops/Tecniche Nuove. Certificazioni IT Governance: COBIT V.4.1 Foundation Certificate; certificazioni IT Service Management: ITIL V.3 Foundation Examination; certificazioni Project Management: CSM - Scrum Master, CSPO - Scrum Product Owner, PMI: 35 contact hours.

Profilo linkedin: http://www.linkedin.com/pub/stefano-rossini/30/977/242

Stefano Rossini – Marco Piraccini
Marco Piraccini

Marco Piraccini è nato a Cesena il 09/10/1975. E‘ laureato in Ingegneria Informatica presso la facoltà di Bologna con una tesi sull‘assessment della maturità del processo di testing e
in Fisica Computazionale presso la facoltà di Udine con una tesi sull‘uso di GRID per le simulazioni Monte Carlo (nell‘ambito di un esperimento di astrofisica).
Attualmente lavora come Software Architect per una società di consulenza. Il suo Blog è disponibile al seguente indirizzo: http://darkav.blogspot.com/

MokaByte

Service Oriented Architecture

Parte V: SOI

Picture of Stefano Rossini – Marco Piraccini

Stefano Rossini – Marco Piraccini

  • Questo articolo parla di: Architetture dei sistemi, Programmazione & Linguaggi

In questo articolo introduciamo SOI, cioè come utilizzare le architetture a servizi per l‘integrazione. Descriviamo inoltre alcuni design pattern che possiamo utilizzare per produrre servizi SOI.

Introduzione

SOA è un paradigma architetturale che investe tutti gli aspetti associati alla definizione di un Information System: architetturali, metodologici, di processo, organizzativi, tecnologici e … culturali!

Negli scorsi articoli abbiamo parlato di SOA sia dal punto di vista architetturale (vedere [1]) sia metodologico (vedere [2]) .
Abbiamo introdotto inoltre il concetto di Maturity Model (vedere [3]) e spiegato l‘importanza di avere una Roadmap che definisca i passi per “traghettare” verso un‘architettura full-SOA (vedere [4]).

In questo articolo introduciamo SOI, cioè come utilizzare le architetture a servizi per l‘integrazione. Descriviamo inoltre alcuni design pattern che possiamo utilizzare per produrre servizi SOI.
Service-Oriented Integration (SOI)
I principi Service Oriented applicati alle problematiche d‘integrazione vengono indicati con il termine Service Oriented Integration (SOI).

Ponendosi come obiettivo la “rottura” dei Silos, cioè dei sistemi informativi costituiti
da applicazioni verticali e a sà© stanti, implicitamente SOA si occupa di Integrazione.

SOI definisce quindi i dettami SOA applicati ad un‘architettura avente come scopo l‘integrazione di applicazioni esistenti mediante servizi.

In questo modo le funzionalità  non sono più confinate (locked) esclusivamente all‘interno del proprio silo, bensì sono riusabili anche dalle altre applicazioni all‘interno di una architettura a servizi. Questo permette da un lato di salvaguardare gli investimenti pregressi, dall‘altro di potere consolidare e riorganizzare la propria architettura.

In sostanza l‘obiettivo di SOI è definire i principi architetturali e tecnologici per potere esporre ed integrare applicazioni esistenti come servizi.

Creando dei servizi secondo i dettami architetturali di SOA ed esponendo le loro funzionalità  su un BUS (cioè ad un software infrastrutturale in grado di esporre e fare comunicare servizi) è possibile integrare il sistema una sola volta: infatti il servizio conosce come connettersi al BUS, che a sua volta è connesso agli altri servizi (integrate once, connect many).
In questo modo si evita un approccio punto-punto che spesso sfocia nella cosiddetta “Spaghetti Integration” (o Accident Architecture).

Come da figura 1, le funzionalità  sono esposte a servizi collegati ad un bus condiviso di comunicazione, quindi non mediante N collegamenti punto-punto.

Dal punto di vista architetturale (come si vedrà  meglio nei prossimi articoli), il Service Bus è il layer che deve mettere a disposizione uno strato di comunicazione (backbone) tra i servizi.

Le applicazioni Legacy, una volta opportunamente “wrappate” con un‘interfaccia a servizi (service contract) sono in grado di erogare e utilizzare i servizi condivisi mediante il Service Bus.

Per raggiungere il corretto livello di riuso, è ovviamente critica la granularità  data ai servizi e la struttura organizzativa a supporto (tematica classica di riuso, indipendente da SOA, ma valida per qualunque scenario).

Un Integration service ha quindi lo scopo di:

  • Fornire un‘interfaccia a servizi di applicazioni già  esistenti, esponendo come un servizio un qualcosa che servizio non è.
  • Utilizzare al suo interno API specifiche della tipologia della risorsa EIS.
  • Nascondere al consumer la tipologia e la topologia dell‘EIS.
  • Aggregare piu‘ funzionalità  esistenti al fine di esporre un servizio con la giusta granularità .
  • Effettuare il mapping tra il data model della risorsa EIS e il business model disaccoppiando il service consumer dalla specificità  della risorsa.

Un Integration Service ha quindi lo scopo di fornire un‘interfaccia a servizi di applicazioni esistenti portando a fattore comune funzionalità  trasversali alle applicazioni.

Gli Integration Services possono permettere l‘accesso e l‘utilizzo di informazioni (“information assets”) da parte di qualunque altro servizio, applicazione o utente finale.

Possiamo utlteriormente distinguere gli Integration Service sulla base della tipologia di funzionalità  che espongono (accesso ai dati piuttosto che funzionalità  di business) definendo:

  • Functional Integration Service per i servizi che esportano le funzionalità  di business esistenti (in ottica EAI)
  • Data Integration Service o Information Service per i servizi che rendono disponibili i dati enterprise del Sistem Informativo (in ottica EII).

Questo è utile in fase di design, in quanto possono essere seguite le regole di design che abbiamo definito quando si parlava di SOAD (servizi entity-centric vs task-centic), anche se in questo caso non è possibile applicare una metodologia Top-Down.

Gli Integration Services hanno l‘obiettivo principe di integrare e differiscono in più aspetti dai Business Services, anche se in taluni casi vengono visti come sinonimi o quantomeno ricadono entrambi sotto un generico termine di “servizio”.

La differenza è che, mentre gli Integration Services si collocano nel layer 2 dello stack SOA (permettono l‘accesso alle risorse enterprise del layer 1), i business service sono al layer soprastante perché forniscono l‘astrazione del servizio a livello di business.

Al contrario dei Business Service dove si deve seguire una metodologia di design Top-Down, nel caso di integrazione con funzionalità  già  sviluppate si segue un approccio Meet-In-The-Middle (vedere [2]).

Tale approccio prevede di partire dall‘analisi di ciò che è già  presente per ottenere dei servizi SOA.

  • Si parte da una funzionalità  d‘interesse di un‘applicazione esistente
  • Si crea un servizio con il compito di interfacciare la funzionalità  d‘interesse con le opportune API
  • Si definisce nel service contract il business model da esportare

A supporto di questo procedimento possono essere utilizzati alcuni Pattern che ci permettono di impostare correttamente il design dei servizi SOI.

Il Pattern Service Wrapper

L‘intento del pattern Service Wrapper è di fornire un meccanismo per permettere a sistemi/applicazioni/funzioni che non sono service-oriented (es: funzioni Legacy, applicazione packaged come CRM, ERP, stored procedure PL-SQL, …) di poter essere utilizzati da un‘architettura SOA.
Lo scopo è quindi di definire un servizio a partire da software già  presente.

Tutto questo lo si ottiene realizzando un servizio che al suo interno invoca la componente sofware Legacy.

Il Service Wrapper è anche conosciuto come Service Adapter (vedere [8]).

Il Pattern Service Proxy

L‘intento del pattern Service Proxy è di disaccoppiare l‘accesso ai servizi di business dai client, nascondendo e centralizzando le operazioni di localizzazione e utilizzo del servizio di business.

Il Service Proxy permette di avere i seguenti vantaggi:

  • fornire un‘interfaccia uniforme ai client
  • ridurre l‘accoppiamento tra service consumer e service provider
  • nascondere, centralizzare e gestire le problematiche di reperimento (lookup / discovery) e utilizzo dei servizi
  • nascondere le particolarità  tecnologiche della specifica comunicazione con l‘EIS
  • centralizzare le modifiche derivanti da variazione dei servizi di business in una sola classe
  • ridurre il numero di interazioni remote fra componenti in comunicazione, con conseguen-te miglioramento di performance
  • garantire la possibilità  di trasformare eccezioni tecnologiche (es: java.rmi.RemoteException, javax.xml.rpc.ServiceException, …) in eccezioni applicative

Tutto questo lo si ottiene realizzando una classe Java che ha il compito di interfacciare il servizio garantendo un‘astrazione dei servizi al client.

Il Service Proxy è una specializzazione del pattern Proxy del [5] in un contesto a servizi ed è l‘analogo del pattern Business Delegate (vedere [19]) applicato ai componenti Enterprise.

Il Pattern Service Locator

La localizzazione dei servizi e la relativa creazione sono operazioni complesse che tipicamente richiedono accessi a risorse di rete.
Il pattern Service Locator gestisce le operazioni dei Servizi occupandosi di:

  • “nascondere” la complessità  delle operazioni di ricerca (discovery) dei servizi
  • fornire una modalità  uniforme di lookup e creazione dei servizi
  • isolare le eventuali operazioni di lookup “vendor dependent”
  • nascondere eventuali problematiche di networking
  • gestire eventuali necessità  di caching degli handle
  • concentrare la gestione delle problematiche di localizzazione in un singolo punto

Il pattern garantisce una modalità  uniforme e semplificata di localizzazione di risorse.

Se la modalità  di recupero del servizio cambia (es: da punto-punto si decide di inserire l‘utilizzo di un Service Registry) è il solo Service Locator che deve essere modificato.

Il Pattern Service Facade

I componenti di business espongono i loro servizi mediante le relative interfacce.
Un business tier formato da più business objects (BO) comporta alcuni rischi:

  • forte accoppiamento (tight coupling) tra client e i BO
  • accesso complesso e non uniforme alle risorse di business
  • problemi di performance sulla rete a causa delle complesse e numerose interazioni client-BO

L‘intento del pattern Service Facade è di minimizzare questi problemi, componendo l‘accesso ai BO in un servizio con la giusta granularità  (coerentemente con i principi SOA).
Il pattern prevede di:

  • esporre un‘interfaccia del servizio con la giusta granularità  “a grana grossa”(coarse-grained).
  • fornire un unico punto di accesso in modalità  service-oriented
  • invocare e gestire i Service Wrapper e/o i componenti software legacy che concorrono alla logica del servizio
  • centralizzare l‘accesso a servizi infrastrutturali (come il security management ed il transac-tion management) sul business tier

Questo si ottiene anteponendo ai service wrapper e/o componenti che concorrono all‘implementazione del servizio un servizio di facciata della giusta granularità  di business.

Il pattern individua nel Service Facade il controllore e aggregatore degli elementi che concorrono al servizio.

Il Pattern Virtual Provider

Questo pattern è utile soprattutto nelle situazioni in cui si sta migrando il proprio sistema informativo verso un‘architettura SOA ma non tutti i componenti software sono esposti a servizi (ad esempio nel caso in cui si è ancora ai primi passi della roadmap).
In questi casi può essere richiesto di sviluppare servizi in modalità  “tattica” o servizi per scopo di applicazione pilota o per esigenze pure d‘integrazione.

L‘intento del pattern Virtual Provider (vedere (vedere [8]) è di combinare i pattern service facade, service proxy e service wrapper al fine di fornire un servizio il piu‘ completo possibile anche se l‘ecosistema IT non è ancora consolidato.

Il Virtual provider deve:

  • esporre un‘interfaccia del servizio con la giusta granularità  “a grana grossa” (coarse-grained)
  • invocare e gestire i Service Wrapper
  • centralizzare il security management
  • centralizzare logiche di routing, aggregazione, orchestrazione, …
  • centralizzare transaction management
  • centralizzare le trasformazione dei dati business model/data model

Qualsiasi modifica di policy e/o di configurazione del servizio deve impattare il Virtual Service Provider ma non gli elementi che concorrono al servizio ne tantomeno il client.

Il pattern Virtual Service Provider è anche conosciuto come Integration Service Pattern.
Utilizzando tale pattern l‘architettura si sposta da un modello a componenti verso un modello a servizi.
Una volta migrata l‘architettura verso un modello SOA, è possibile “agganciare” il servizio d‘integrazione direttamente all‘ESB.

Conclusione

In questo articolo abbiamo introdotto SOI e i principali design pattern correlati. In sostanza si tratta di applicare i dettami architetturali SOA all‘integrazione di funzionalità  esistenti.
La differenza tra servizi SOA e servizi SOI è che, mentre nel primo caso i servizi sono business-driven, nel secondo sono integration-driven. Questo porta ad un approccio diverso nel disegno dei servizi (Meet-In-The-Middle piuttosto che Top-Down) che può essere aiutato dall‘utilizzo del pattern descritti.

1M. Piraccini, S. Rossini”SOA: Introduzione” – MokaByte 100 – Ottobre 2005https://www.mokabyte.it/2005/10/soa-1.htm2M. Piraccini, S. Rossini”SOA: Metodologia” – MokaByte 101 – Novembre 2005https://www.mokabyte.it/2005/11/soa-2.htm3M. Piraccini, S. Rossini”SOA (III): Il Maturity Model” – MokaByte 102 – Dicembre 2005https://www.mokabyte.it/2005/12/soa-3.htm4M. Piraccini, S. Rossini”SOA (IV) Roadmap” – MokaByte N.103 – Gennaio 2006https://www.mokabyte.it/2006/01/soa-4.htm5Gamma, Helm, Johnson, Vlissides “Design Patterns-Elements of Reusable Object-Oriented Software”6G. Hohpe, B. Woolf”Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions” Addison-Wesley, 20047Gregor Hohpe”Enterprise Integration Pattern web site”http://www.eaipatterns.com/index.html8A. Arsanjani”Toward a pattern language for Service-Oriented Architecture and Integration, Part 1: Build a service eco-system”http://www-128.ibm.com/developerworks/webservices/library/ws-soa-soi/9Alur, Crupi, Malks Core”J2EE Patterns: Best Practices and Design Strategies”10Floyd Marinescu “EJB Design Patterns: Advanced Patterns, Processes and Idioms” 11Ed Roman, Scott Ambler, Tyler Jewell”Mastering Enterprise JavaBeans”12Sun Java Center J2EE Patternshttp://developer.java.sun.com/developer/restricted/patterns/J2EEPatternsAtAGlance.html13Sun blueprints-Design Patterns Cataloghttp://java.sun.com/blueprints/patterns/j2ee_patterns/catalog.html14Stefano Rossini”Integration Patterns (I)” Mokabyte 100 Ottobre 2005https://www.mokabyte.it/2005/10/integrationpatterns-1.htm15Stefano Rossini”Integration Patterns (II)” Mokabyte 101 Novembre 2005https://www.mokabyte.it/2005/11/integrationpatterns-2.htm16Stefano Rossini”Integration Patterns (III)” Mokabyte N.102 -Dicembre 2005https://www.mokabyte.it/2005/12/integrationpatterns-3.htm17Stefano Rossini”Data Access Object” Mokabyte 62 Aprile 2002https://www.mokabyte.it/2002/04/pattern-dao.htm18Stefano Rossini”SessionFacade” Mokabyte 64 Giugno 2002″https://www.mokabyte.it/2002/06/pattern-facade.htm19Stefano Rossini”Business Delegate”, Mokabyte 65 Luglio 2002https://www.mokabyte.it/2002/07/pattern-bd.htm20Stefano Rossini “Service Locator” Mokabyte 67 Ottobre 2002https://www.mokabyte.it/2002/10/pattern_sl.htm21Stefano Rossini”Value Object” Mokabyte 69 Dicembre 2002https://www.mokabyte.it/2002/12/pattern_vo.htm22Stefano Rossini”Front Controller” Mokabyte 70 Gennaio 2003https://www.mokabyte.it/2003/01/pattern_fc.htm

Stefano Rossini – Marco Piraccini
Stefano Rossini

Stefano Rossini è nato a Giussano (MI) il 29/10/1970 e ha conseguito il diploma universitario in Ingegneria Informatica presso il Politecnico di Torino. Ha maturato più di venti anni di esperienza in diversi progetti Enterprise mission-critical ricoprendo i ruoli di IT Program Manager, Project Manager & Software Architect presso importanti gruppi bancari, pubblica sanità, pubblica amministrazione e software house.

Attualmente ricopre il ruolo di Sofware Factory Manager, Lean Change Agent ed Enterprise Architect presso Capgemini.

Esperto in ambito di sanità pubblica come Project/Program Manager per la governance dei progetti IT strategici di Cartella Clinica Elettronica (CCE) e Fascicolo Sanitario Elettronico (FSE).

Esperto in ambito bancario dove ha ricoperto per una decina d'anni il ruolo di Project Manager e Leader Software Architect (BPM, IWBank e BPS) occupandosi della pianificazione e gestione del progetto, del coordinamento del gruppo di sviluppo software sia InHouse che Nearshore/Offshore. Esperto nella conduzione di progetti secondo metodologia di Project Management PMBok e metodologia agile Scrum.

Si occupa di Java dal 1999 arrivando da precedenti esperienze in C e C++ in ambito Telco (Alcatel & Siemens). Ha pubblicato più di un centinaio di articoli su argomenti di IT Governance, Project Management, architetture enterprise e problematiche di Integrazione e SOA. È coautore dei libri "Manuale pratico di Java" (2001) e "La programmazione della piattaforma J2EE" (2005) editi da Hops/Tecniche Nuove. Certificazioni IT Governance: COBIT V.4.1 Foundation Certificate; certificazioni IT Service Management: ITIL V.3 Foundation Examination; certificazioni Project Management: CSM - Scrum Master, CSPO - Scrum Product Owner, PMI: 35 contact hours.

Profilo linkedin: http://www.linkedin.com/pub/stefano-rossini/30/977/242

Stefano Rossini – Marco Piraccini
Marco Piraccini

Marco Piraccini è nato a Cesena il 09/10/1975. E‘ laureato in Ingegneria Informatica presso la facoltà di Bologna con una tesi sull‘assessment della maturità del processo di testing e
in Fisica Computazionale presso la facoltà di Udine con una tesi sull‘uso di GRID per le simulazioni Monte Carlo (nell‘ambito di un esperimento di astrofisica).
Attualmente lavora come Software Architect per una società di consulenza. Il suo Blog è disponibile al seguente indirizzo: http://darkav.blogspot.com/

Facebook
Twitter
LinkedIn
Picture of Stefano Rossini – Marco Piraccini

Stefano Rossini – Marco Piraccini

Tutti gli articoli
Nello stesso numero
Loading...

Realizzare un plugin custom di Image I/O

Parte I

JasperReports: una libreria Open Source per la reportistica

Parte I

Applicazioni Desktop

Ancora su JTable

Dal RAD al Project Management: MDA non è mai stata così

Parte I: DSDM, la nuova frontiera del RAD

La progettazione di applicazioni web con UML

I parte: la Web Application Extension

Nella stessa serie
Loading...

SOA: dalla teoria alla pratica

X parte: Esempio pratico (2)

SOA: Dalla teoria alla pratica

IX parte: Esempio (I)

SOA: dalla teoria alla pratica

VIII parte: Strategie di adozione

Service Oriented Architecture

VII parte: Enterprise Service Bus (II)

Service Oriented Architecture

VI parte: Dalla teoria alla pratica - Enterprise S

Service Oriented Architecture

Parte IV: la Roadmap

Service Oriented Architecture

Parte III: Maturity Model

Service Oriented Architecture

Parte II: metodologia

Service Oriented Architecture: dalla teoria alla pratica

I parte: Introduzione

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte