by Max Dolgicer

November 2019

La fusione dei processi dell’impresa grazie a Soa (Parte Seconda)

Connettività Un altro aspetto importante dell’architettura Soa è il protocollo utilizzato per stabilire il collegamento tra il client e il servizio. Con altre tecnologie (Corba, Dcom, J2ee) questi protocolli sono specifici per ciascuna piattaforma e non possono interoperare. Per esempio, vedi rispettivamente, Internet Inter-Orb Protocol (Iiop), Microsoft Rpc (MS-Rpc) e Java Remote Method Protocol (Jrmp). Come illustrato nella figura 2, client e server sono strettamente uniti nello stesso tipo di middleware. Infatti, debbono essere sviluppati e diffusi nell’ambito del medesimo prodotto di middleware. Attualmente, i protocolli più diffusi sono Soap su Http, che sono entrambi accettati universalmente e non creano alcuna dipendenza dal middleware sia per il fornitore che per l’utente del servizio.

Nella pratica, naturalmente, le cose non sono così semplici. L’interoperabilità senza problemi richiede la compatibilità di molto di più che solamente questi due protocolli (per esempio, richiede la formattazione dei messaggi sulla base di un file Wsdl predeterminato), e qui si sono posti i problemi di collegamento di prodotti di venditori diversi. Tuttavia, sono stati compiuti notevoli progressi per la soluzione di questi problemi, in particolare grazie all’impegno del Web Services Interoperability Committee (Ws-I).

Tornando alla domanda iniziale di come Soa supporti la fusione dei processi, un altro componente del puzzle è rappresentato dai protocolli universali di accesso ai servizi. Questi forniscono la capacità di stabilire la connettività verso processi dell’impresa che girano virtualmente su qualsiasi tipo di piattaforma. Una volta ottenuta la connettività, potremo dedicarci poi alla composizione di un processo integrato che abbracci queste piattaforme.

Gestione dei processi (Orchestrazione)

Lo sviluppo dei processi dell’impresa è un’altra area nella quale possiamo distinguere un approccio basato su Soa, dalle tecnologie orientate agli oggetti. Per affrontare la questione, dobbiamo prima esaminare le diverse opzioni disponibili per definire e implementare, ai nostri fini, la logica dell’impresa. Questa può essere suddivisa generalmente in due categorie. La prima consiste della logica che richiede la codifica in un linguaggio di programmazione convenzionale come Java, C# ecc. Altri esempi sono i calcoli numerici, la manipolazione di testi, gli accessi al database e le interfacce utente.

Registrazione

Il componente finale di un’architettura orientata al servizio è un registro dei servizi, che consenta a questi ultimi di rendere pubbliche le rispettive interfacce e punti di accesso (per esempio gli Url), fornendo ai client le modalità di ricerca dei servizi che desiderino utilizzare.

L’approccio alla registazione utilizzato dai Web Services è molto diverso rispetto alle tecnologie precedenti. In teoria, un registro dei Web Services dovrebbe consentire a un client di scoprire dinamicamente (ovvero al run time e non al development time) le capacità di un servizio, per poter quindi costruire l’appropriata richiesta d’invocazione necessaria per far uso del servizio stesso.

Con Corba, Dcom e J2ee, tutto quello che avevamo era un nome di servizio che indicava un nome di base per identificare un indirizzo. In altre parole, il client poteva ottenere l’indirizzo fisico di rete di un oggetto desiderato, basandosi su alcune definizioni astratte come un nome di classe o l’identificativo di un interfaccia. In termini pratici, tuttavia, le capacità di ricerca dinamica dei Web Services non sono completamente applicabili nei progetti reali, almeno per il momento. Questo è dovuto a numerose ragioni che vanno oltre i limiti del presente articolo.

Attualmente, un registro dei servizi standardizzato è più importante al momento dello sviluppo, quando creiamo i processi integrati. La chiave per la fusione è l’integrazione di processi multipli, precedentemente isolati, che si estendano oltre i confini manageriali e organizzativi esistenti. Come risultato, avremo a che fare con un’organizzazione di sviluppo eterogenea, ovvero un team di sviluppo delle applicazioni che tipicamente non condivide un ambiente di sviluppo comune.

Questi team hanno bisogno di avere una modalità di scambio delle informazioni ben definita, circa i servizi che possono essere riutilizzati per costruire i processi integrati. Attualmente, questo è l?aspetto maggiormente applicabile del registro.

Sviluppo di applicazioni orientate al servizio (Soda)

Fino a questo punto abbiamo discusso degli avanzamenti negli standard e tecnologie che indicano che oggi è venuto finalmente il tempo della Soa. Ancora, per comporre con successo i servizi all’interno di processi di business integrati, anche lo sviluppo dei servizi deve aderire ai principi di progettazione Soa. Questa è una lista di alcuni dei principi fondamentali:

? Semplicità ? un servizio dovrebbe fornire funzionalità chiare e ben definite? Completezza? Un servizio dovrebbe fornire una funzione completa di business, senza coinvolgere il client in chiamate complesse e interdipendenti tra servizi multipli diversi;? Riservatezza ? un servizio non dovrebbe conservare informazioni circa un client dalle volte precedenti che sia stato invocato dal medesimo client;? Granularità ? non progettate servizi ?troppo piccoli?, in altre parole, non trasformate gli oggetti in servizi. Allo stesso tempo, non createli troppo grandi, cioè evitate i servizi monolitici;? Separazione delle relazioni ? un servizio di business dovrebbe essere separato dai servizi di infrastruttura e dovrebbe usare questi ultimi per effettuare attività standard come autenticazione, log, stampa ecc.;? Policy/contratto ? un servizio dovrebbe avere una policy/contratto definita che stabilisca regole come sicurezza, Service Level Agreement (Sla), procedure di escalation ecc.;? Attenzione al valore per l’impresa? Un servizio dovrebbe eseguire una funzione definita al livello dell’impresa e non dai vincoli al livello It.

Oltre a seguire le linee guida per la progettazione del servizio, dobbiamo anche considerare il modo in cui i servizi vengono combinati nelle fusione dei processi. Per poter risolvere questo problema con successo, abbiamo bisogno di un nuovo paradigma di sviluppo. É a questo proposito che entra nello scenario la metodologia Soda.

Soda è il paradigma di sviluppo per realizzare applicazioni nel contesto di un’architettura orientata al servizio. Mira alla composizione di un flusso di processi tale da orchestrare i servizi in un processo di business integrato. Questo approccio è diverso dallo sviluppo orientato agli oggetti, dove l’attenzione è posta alla progettazione dei componenti e alla codifica. Al contrario, Soda utilizza un approccio allo sviluppo incentrato sui processi: gli sviluppatori costruiscono modelli il più possibile somiglianti a quelli richiesti dall’impresa.

Poiché la composizione dei processi fusi insieme è ottenuta nella maggior parte dei casi mediante l’uso di strumenti grafici, piuttosto che mediante codifica, le soluzioni possono essere create in maniera significativamente più rapida e risultano molto più semplici da modificare. Perciò, la metodologia Soda ci aiuta a raggiungere gli obiettivi che ci eravamo posti all’inizio? Avviarsi verso l’impresa in real time, fornendo nuova agilità e adattabilità al business.

Conclusione

In breve, il problema fondamentale per attivare la fusione dei processi dell’impresa è l’avvio verso un’architettura orientata al servizio, supportata dallo sviluppo di applicazioni anch’esse orientate al servizio. La fusione dei processi agisce trasversalmente nell’impresa e per svilupparla abbiamo bisogno di elementi strutturali in forma di servizi che abbiano il giusto livello di granularità. Debbono essere accessibili tramite protocolli accettati universalmente, che ci forniscano una connettività indipendente dalle piattaforme.

Essendo in grado di adattare un processo così integrato alle necessità mutevoli dell’impresa, realizzano uno stretto collegamento tra i servizi, caratteristica importante delle interfacce dei Web Services. Infine, abbiamo bisogno di uno sviluppo incentrato sui processi che sia mirato alla composizione di servizi in processi fusi tra loro e allineati strettamente con le necessità dell’impresa. Il diagramma di Figura 4 mette insieme tutte le tessere del puzzle.

In chiusura, una parola di cautela: mentre Soa rappresenta sicuramente una buona base per implementare la fusione dei processi dell’impresa, non dobbiamo dimenticare che comporta anche nuove sfide. Per esempio, i fornitori di servizi e gli utenti possono bloccarsi in maniera indipendente, mentre errori di recovery in una rete di servizi indipendenti possono richiedere uno sforzo di ripristino molto complesso.

Anche la gestione delle modifiche diviene più complessa? Che cosa succede quando viene modificato un servizio utilizzato da un processo derivante dalla fusione di più servizi? Quindi, la sicurezza e la gestione di processi che comprendano l’intera impresa superando i confini organizzativi interni, debbono essere affrontate con un nuovo approccio, che estenda in maniera significativa la prospettiva con la quale la maggior parte delle organizzazioni affrontano questi problemi.