Minicollege Service Oriented Architecture
Overzicht Deel 1: Terugblik op eerste minicollege Terugblik op eerste college Wrap-up Wat is blijven hangen en wat sprak aan? SOA vanuit een technisch perspectief SOA vanuit een organisatorisch perspectief Procesbesturing in een SOA De SOA infrastructuur Applicaties in een SOA Praktijkvoorbeelden
Drie ‘typen’ architectuur Enterprise- architectuur Software- architectuur Service- georiënteerde architectuur Conceptuele basis Organisatiebrede scope Gericht op strategie en communicatie Individuele systeemscope Gericht op ontwerp, realisatie en specificatie
Enterprisearchitectuur Wat is het? Enterprisearchitectuur geeft inzicht in en een geïntegreerd overzicht van Bedrijfsprocessen (Informatievoorzienings)functionaliteiten Informatiesystemen/applicaties Technische infrastructuur in samenhang! Omvat ook de relaties met de omgeving Naast modellen omvat een enterprisearchitectuur ook de principes en uitgangspunten die het ontwerpen en de ontwikkeling door de tijd sturen Definieert het gemeenschappelijk ICT-platform, zoals middleware etc. Rechtvaardigt langetermijninvesteringen in ICT (bijvoorbeeld voor het gemeenschappelijk ICT-platform) Bewerkstelligt de gewenste flexibiliteit en integratie Is het belangrijkste, inhoudelijke communicatiemiddel in de ICT
Views and viewpoints View View Architecture View Stakeholder Viewpoint
Architectuurraamwerk Twynstra Gudde 4 deelarchitecturen Business architectuur Bedrijfsprocessen, producten en diensten Informatie architectuur Fuctionaliteiten, generieke voorzieningen en gegevens Applicatie architectuur Applicaties en interfaces Technische architectuur Hardware, netwerk en locaties Onderlinge samenhang Aplicaties ondersteunen bedrijfsprocessen Bedrijfsprocessen worden ondersteund door informatievoorziening Informatievoorziening wordt gerealiseerd door applicaties Applicaties maken gebruik van technische infrastructuur
Softwarearchitectuur Wat is het? Structuur, opbouw en samenhang binnen één (of enkele) individuele systemen Gericht op het realiseren van ‘goede’ software Kwalitatief goed product, vanuit perspectief van gebruiker én ontwikkelaar Kwalitatief goed proces van ontwerp en ontwikkeling Kernconcepten vanuit de software engineering Separation of concerns Modulariteit Anticiperen op veranderingen (flexibiliteit)
Gedistribueerde drie- en meerlaagse softwarearchitectuur Presentatie Presentatie Processervices Businesslogica Samengestelde services Basisservices Data Data
Terugblik Wat is blijven hangen en wat sprak aan? Wat waren de belangrijkste zaken / onderwerpen / punten die uit het eerste college zijn blijven hangen? Zijn er nog vragen naar aanleiding van het eerste college? Wat zijn de aandachtspunten voor het vervolg?
Overzicht Deel 2: SOA vanuit technisch perspectief Terugblik op eerste college SOA vanuit een technisch perspectief Relatie met software architectuur Web services SOA vanuit een organisatorisch perspectief Procesbesturing in een SOA De SOA infrastructuur Applicaties in een SOA Praktijkvoorbeelden
SOA Concepten Vanuit technisch perspectief Services In technische zin een doorontwikkeling van object- en componenttechnologie Brede adoptie van (internet)standaarden voor webservices Basisconcept van (bijna) alle ontwikkelplatforms Heterogeniteit / Interoperabiliteit Heterogeniteit is een gegeven in complexe omgevingen Verschillende (ontwikkel)platforms, –talen en infrastructuur Platformonafhankelijkheid Losjes koppelen van systemen Beperking van de afhankelijkheden tussen systemen Flexibiliteit: minimalisering van de impact bij wijzigingen
Services request Dienstaanvraag (request) respons Dienstresultaat De van buitenaf zichtbare beschrijving van dienst request Dienstbeschrijving (interface) Dienstaanvraag (request) Dienstinhoud (implementatie) respons Dienstresultaat (respons) De interne realisatie van de dienst middels werkende software
Web services XML bericht Ingepakt als SOAP bericht Verzonden via internet (HTTP)
XML Voorbeeld <boeken> <boek> <auteur>Don Box</auteur> <titel>Essential XML</titel> <prijs>34,95</prijs> </boek> <auteur>Linus Torvalds</auteur> <titel>Gewoon voor de Fun</titel> </boeken> <ClientSuwi> <SofiNr>123456789</SofiNr> <BankGironr>01982712</BankGironr> <TelefoonnrClient> <Telefoonnr> <Netnr>020</Netnr> <Abonneenr>4890000</Abonneenr> </Telefoonnr> </TelefoonnrClient> </ClientSuwi>
HTML en XML HTML XML HyperText Markup Language Vaste tag-structuur Opmaak in Cascading Stylesheet (CSL) XML eXtensible Markup Language voor gegevens-uitwisseling, -opslag en –presentatie Inhoud: XML Structuur: XML Schema Opmaak: XSL (eXtensible Stylesheet Language)
XML Schema voorbeeld <ClientSuwi> <SofiNr>123456789</SofiNr> <BankGironr>01982712</BankGironr> <TelefoonnrClient> <Telefoonnr> <Netnr>020</Netnr> <Abonneenr>4890000</Abonneenr> </Telefoonnr> </TelefoonnrClient> </ClientSuwi> <schema …> <complexType name="ClientSuwi"> <sequence> <element name="SofiNr" type="sml:SofiNr“ minOccurs="0" maxOccurs="1"/> … </sequence> </complexType> </schema> <!-- Definitie van sofi nummer --> <simpleType name="SofiNr"> <restriction base="string"> <length value="9"/> <pattern value="[0-9]{9}"/> </restriction> </simpleType>
Een SOAP bericht van aan Header Beste / Body Envelop
SOAP, WSDL en UDDI SOAP WSDL UDDI Simple Object Access Protocol Aanroep van een service door een XML-bericht te sturen Volledig op basis van standaard internet technologie (HTTP) Bij uitstek geschikt voor communicatie tussen heel verschillende systemen (vaak buiten de eigen onderneming) WSDL Web Service Definition Language Interface definitie (technische gebruiksaanwijzing) UDDI Universal Description, Discovery and Integration Gouden gids voor web services
Web services protocollen UDDI Ondersteunend protocol WSDL SOAP Applicatie protocol XML HTTP TCP Transport protocol IP
Voorbeeld SuwiNet Inkijk – Vraag POST /UwvInkijk/execute.ASP HTTP/1.1 Content-Type: text/xml Host: www.suwi.nl Content-Length: 352 SOAPAction: http://www.suwi.nl/action/StamgegevensUwv-v0230 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ StamgegevensUwv-v0230-Envelope.xsd"> <SOAP-ENV:Header> <SOAP-ENV:Body> <!-- SuwiML body --> <smlb:SuwiMLBody xmlns:smlb="http://www.suwi.nl/SuwiML/Body"> <Request> <SofiNr>123456789</SofiNr> </Request> </smlb:SuwiMLBody> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Voorbeeld SuwiNet Inkijk – Antwoord HTTP/1.1 200 OK Content-Length: 384 Content-Type: text/xml; charset=“UTF-8“ <SOAP-ENV:Envelope ... <SOAP-ENV:Body> <!-- SuwiML body --> <smlb:SuwiMLBody xmlns:smlb="http://www.suwi.nl/SuwiML/Body"> <Response> <ClientSuwi> <SofiNr>123456789</SofiNr> <BankGironr>01982712</BankGironr> <TelefoonnrClient> <Ziektekostenverzekering> <!-- ETC --> </ClientSuwi> </Response> </smlb:SuwiMLBody> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Enterprise Servicebus Enterprise Servicebus Presentatie Presentatie Internet Logica Logica Enterprise Servicebus Enterprise Servicebus Data Data HTTP bericht SOAP bericht (XML) XML Bericht WSDL bestand
Losjes koppelen Sterke koppeling Losse koppeling Koppelingen tussen systemen Direct, 1:1 Via intermediair Communicatiestijl Synchroon Asynchroon Datamodel Gedeeld, geharmoniseerd Eenvoudige gemeenschappelijke datatypes Typesystem Sterk Zwak Interactiepatronen Navigatie door ingewikkelde structuren Eenvoudige, ‘self contained’ berichten Procesbesturing Centrale regie Decentrale regie Binding Statisch Dynamisch Platformafhankelijkheid Afhankelijk Onafhankelijk Transacties 2-phase commit Compensatie Deployment Gelijktijdig Gespreid Versiebeheer Expliciete upgrades Impliciete upgrades
Overzicht Deel 3: SOA vanuit organisatorisch perspectief Terugblik op eerste college SOA vanuit een technisch perspectief SOA vanuit een organisatorisch perspectief Software services en organisatiediensten Domeinen Lagenstructuur en procesondersteuning Procesbesturing in een SOA De SOA infrastructuur Applicaties in een SOA Praktijkvoorbeelden
SOA Concepten Vanuit organisatorisch perspectief Software- en organisatiediensten Softwarediensten (services) corresponderen met organisatiediensten Services zijn voor gebruikers betekenisvolle diensten Domeinen Verantwoordelijkheidsgebied binnen een organisatie Verleent diensten aan andere domeinen Betrekt diensten van andere domeinen Is zelf verantwoordelijk voor de wijze waarop die diensten worden geleverd Diensten en processen Services / Diensten zijn de verantwoordelijkheid van een domein Processen overstijgen dit niveau
Business-ICT paradigma Diensten (services) = IT organiseren o.b.v. business- activiteiten Uitgaan van verschillende eigenaren van systemen en gegevens Ontwikkeling organisatie (aanpassing aan veranderingen omgeving en technologie) Belangen / politiek dus slim organiseren Accepteren heterogeniteit van systemen en technologie Losse koppelingen
Belofte van SOA IT oerwoud => Business controle IT Transparantie Afstemming van IT op de business IT rigiditeit => IT soepeler meebewegen met business (IT flexibiliteit) business innovatie makkelijk efficiency verbetering realiseren Maakt het mogelijk een veranderstrategie te kiezen die past bij veranderambitie (incrementeel versus bigbang) Output orientatie (stimuleert denken over nut en efficiency) Efficientie door hergebruik geen duplicatie van functionaliteit in verschillende applicaties services van buiten organisatie gebruiken
Basisdiensten Elementaire diensten ontsluiten databases en bestaande systemen Backends Database Bestaand systeem
Afnemers gebruiken diensten (presentatie) Basisdiensten Backends Database Bestaand systeem
Domeinen zijn eigenaar van diensten Eigenaarschap is in de organisatie belegd Afnemers (presentatie) Basisdiensten Backends Database Bestaand systeem Domein Domein
Samengestelde diensten Afnemer (presentatie) Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Procesdiensten Ondersteuning van bedrijfsprocessen Afnemers (presentatie) Procesdiensten Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Enterprise servicebus Afnemers (presentatie) Procesdiensten Servicebus Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Orkestratie engine Afnemers (presentatie) Procesdiensten Orchestration Servicebus Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Portaal Portaal Afnemers (presentatie) Procesdiensten Orchestration engine Servicebus Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Samengestelde diensten Portaal J2EE Portlets .NET Web parts Presentatie J2EE JSP / Java Beans) .NET ASP / ActiveX) HTML, XML, XSL Orkestratie engine BPEL Procesdiensten Samengestelde diensten J2EE (EJB etc.) .NET (C# etc.) Basisdiensten Servicebus XML, SOAP WSDL, UDDI Backends ODBC, JDBC
Overzicht Deel 4: Procesbesturing in een SOA Terugblik op eerste college SOA vanuit een technisch perspectief SOA vanuit een organisatorisch perspectief Procesbesturing in een SOA Orkestratie Event-driven (choreografie) De SOA infrastructuur Applicaties in een SOA Praktijkvoorbeelden
Orkestratie in een service georiënteerde architetuur aanvraag antwoord domein Uitgangspunt is SOA; het denken in services/diensten met een vooraf vastgestelde input en output beschrijving en op te leveren producten Een service wordt aangeroepen door een aanvraag en uiteindelijk wordt een antwoord/output geleverd. Op de eerste plaats gaan we vanuit de BA elke service/dienst beleggen bij een domein. Vervolgens gaan we vanuit de BPM de regie en de uitvoering van elkaar scheiden. Als een service in deeltaken/services gedecomponeerd moet worden dan scheiden we de regie/orchestratie van de uitvoering. Voor het regieproces maakt het niet uit of iets intern of extern wordt uitbesteed. Het maakt niet uit of de onderaannemer zelf ook weer onderaannemers heeft. Deze nesting kan heel diep gaan. orkestratie uitvoering
Voorbeeld Vergunningverlening bij een overheidsorganisatie Context Welzijn en Cultuur Bezwaar en Beroep Juridische zaken Cultuur Welzijn Financiën DIS Tekstverzorging Postkamer Controll Facilitaire zaken Besluiten Interne controle Audit Accounting Mandaten Gedeputeerde Staten Provinciale Staten
Orkestratie van proces subsidieverlening bezwaarschrift beschikking antwoord aanvraag bezwaar bezwaar bezwaar bezwaar financiën besluit besluit besluit besluit Juridische zaken Interne controle domein orchestratie uitvoering verzending archivering
Overzicht Deel 5: De SOA infrastructuur Terugblik op eerste college SOA vanuit een technisch perspectief SOA vanuit een organisatorisch perspectief Procesbesturing in een SOA De SOA infrastructuur Enterprise Servicebus (ESB) Portaal Orkestratie engine Applicaties in een SOA Praktijkvoorbeelden
Middleware / Enterprise Servicebus Middleware = Generieke software die de koppelingen tussen applicaties ondersteunt – “software glue” (Enterprise) Servicebus = specifieke vorm van middleware in een service georiënteerde architectuur Overbrugt technische verschillen tussen applicaties Biedt mogelijkheid tot standaardisatie Biedt aanvullende diensten voor beveiliging, monitoring, controles, transformaties etc. A1 A1 A2 A3 A4 beveiliging autorisatie logging / monitoring technische conversie bericht transformatie controles A2 A3 Middleware / Servicebus A4
Functie van middleware / Enterprise Servicebus Reductie van complexiteit van koppelingen door centraal ontkoppelpunt van applicaties centraal beheer van koppelingen mogelijk technische standaardisering middels ‘stekkers’ stimuleert generieke services en berichten, en maakt daardoor hergebruik mogelijk Eénmalig generiek in de middleware ipv in elke applicatie opnieuw technische conversies beveiliging en autorisatie monitoring en logging controles, gegevensmapping, transformaties
Web services en een servicebus Twee manieren van routering Rechtstreeks Service register wordt geraadpleegd voor locatie van de service Service wordt rechtstreeks aangeroepen Via ESB Service wordt niet rechtstreeks aangeroepen ESB routeert vraag en antwoord Bericht- en technische conversie is mogelijk
Portaal Functionaliteit op hoofdlijnen De functionaliteit van een portaal Ontsluiting van informatie (á la intranet) Platform voor samenwerking en kennisdeling Ondersteuning van werkprocessen (vaak gewoon toegang tot applicaties) Toekomstbeeld De digitale werkplek Gebruikers krijgen afhankelijk van hun rol toegang tot alle relevante informatie én functionaliteit die nodig is voor hun werk Kenmerken Web-gebaseerd Beveiliging / authenticatie éénmalige rolgebaseerde autorisatie Gepersonaliseerd Werkproces georiënteerd
Portaal Ondersteuning van werkprocessen In een service georiënteerde architectuur met orkestratie Het uitvoeren van een taak = aanroepen van een service Dit kan een ‘nieuwe’ service zijn (bijvoorbeeld een basisdienst, maar ook procesdienst) een stap in een lopend proces zijn (bijv. op een takenlijst) User interface bij een service is een scherm of (liever nog) een portlet of web part Andere manieren Integreren van een complete web-applicatie in het portaal Bestaande schermen ‘ophangen’ in nieuwe navigatiestructuur Op basis van stylesheets uniformeren van de vormgeving Combineren van user-interface componenten van applicaties die beschikbaar zijn als portlet of web part Single sign-on voor web-applicaties en user-interface componenten
Orkestratie engine Orkestratie engine BPEL is veelgebruikte standaard Ondersteunt zowel ontwerpen als executeren van processen Een proces = een service BPEL is veelgebruikte standaard Business Process Execution Language Gebaseerd op XML BPMN voor ‘echt’ modelleren Business Process Modeling Notation Grafische notatie Vertaalbaar naar BPEL
BPEL voorbeeld 1 <process name="ticketOrder"> 2 <partners> 3 <partner name="customer" 4 serviceLinkType="agentLink" 5 myRole="agentService"/> 6 <partner name="airline" 7 serviceLinkType="buyerLink" 8 myRole="ticketRequester" 9 partnerRole="ticketService"/> 10 </partners> 11 <containers> 12 <container name="itinerary" messageType="itineraryMessage"/> 13 <container name="tickets" messageType="ticketsMessage"/> 14 </containers> 15 <flow> 16 <links> 17 <link name="order-to-airline"/> 18 <link name="airline-to-agent"/> 19 </links> 20 <receive partner="customer" 21 portType="itineraryPT" 22 operation="sendItinerary" 23 container="itinerary" 24 <source linkName"order-to-airline"/> 25 </receive> 26 <invoke partner="airline" 27 portType="ticketOrderPT" 28 operation="requestTickets" 29 inputContainer="itinerary" 30 <target linkName"order-to-airline"/> 31 <source linkName"airline-to-agent"/> 32 </invoke> 33 <receive partner="airline" 34 portType="itineraryPT" 35 operation="sendTickets" 36 container="tickets" 37 <target linkName"airline-to-agent"/> 38 </receive> 39 </flow> 40 </process> BPEL voorbeeld
Overzicht Deel 6: Applicaties in een SOA Terugblik op eerste college SOA vanuit een technisch perspectief SOA vanuit een organisatorisch perspectief Procesbesturing in een SOA De SOA infrastructuur Applicaties in een SOA Applicaties als eenheid van ontwikkeling en beheer Applicatiegrenzen vervagen Praktijkvoorbeelden
‘Complete’ applicaties in een service georienteerde architectuur Afnemers (presentatie) Applicatie A Applicatie B Procesdiensten Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Applicatiegrenzen vervagen Afnemers (presentatie) Applicatie C bijv. administratieve processen Applicatie D bijv. klantprocessen Procesdiensten Applicatie A Applicatie B Samengestelde diensten Basisdiensten Backends Database Bestaand systeem Domein Domein
Overzicht Deel 7: Praktijkvoorbeelden Terugblik op eerste college SOA vanuit een technisch perspectief SOA vanuit een organisatorisch perspectief Procesbesturing in een SOA De SOA infrastructuur Applicaties in een SOA Praktijkvoorbeelden Waterschap: SOA architectuur op basis van NORA Gemeente: Procesbesturing en gegevenslogistiek Werk en inkomen keten: Geïntegreerde dienstverlening
5: Doorzetten naar backoffice E-Dienstverlening 53 1: Vraag 4: Aanmaken zaak 2: Antwoord 3: Aanvraag 5: Doorzetten naar backoffice 6: Status / Resultaat 53
Voorbeeld van SOA principes verwerkt in een informatie architectuur
Bas Kruiswijk bkr@tg.nl www.twynstragudde.nl Alle intellectuele eigendomsrechten met betrekking tot deze presentatie berusten bij Twynstra Gudde. Niets uit deze presentatie mag worden verveelvoudigd of openbaar gemaakt zonder schriftelijke toestemming van Twynstra Gudde.