Migration Migration in eine Service orientierte Architektur Harry M. Sneed harry.sneed@anecon.com 13.09.2007 1 ANECON Software Design und Beratung G.m.b.H. Alser Str. 4/Hof 1 A-1090 Wien Tel.: +43 1 409 58 90 www.anecon.com office@anecon.com
Migration in SOA 1 The Waves of Change 13 Entwicklung von Web Services 2 Komponente einer Anwendungsumgebung 14 Wiedergewinnung von Web Services 3 Evolution der Systemarchitektur 15 Fünf Schritte zur Wiedergewinnung 4 Evolution der Datenbanktechnologie 16 Erkennung potentieller Web Services 5 Evolution der Benutzerschnittstelle 17 Bewertung der Wiederverwendbarkeit 6 Evolution der Programmierung 18 Extrahierung der Code-Bausteine 7 Evolution der Programmiersprachen 19 Kapselung der Code-Bausteine 8 Einführung von Web Services 20 Beispiel einer WS Schnittstelle 9 Web Service Beschaffung 21 Beispiel eines COBOL Code-Bausteins 10 Kauf von Web Services 22 Generierte WSDL Request 11 Miete von Web Services 23 Generierte WSDL Response 12 Ausleihen von Web Services 2 Migration in SOA 24 BPEL4WS
The Waves of Change Web Technology Object Technology Client / Server CASE/4GL Batch/Online The IT User 3 Migration in SOA
Komponente einer Anwendungsumgebung Architektur Benutzerschnittstellen Programmiertechnologie Programmier sprachen Datenhaltung 4 Migration in SOA
Evolution der Systemarchitektur 1970 2005 Browser TP-Monitor Server Server Server Hierarchische Standalone Architektur Batch Sequential Architektur Online Transaktion Architektur Client / Server Architektur Web Architektur einzelne Verarbeitungsschritte mehrere Verarbeitungsschritte einzelne Schicht Thin Client zwei Schichten Fat Client mehrfache Schichten Thin Client 5 Migration in SOA
Evolution der Datenbanktechnologie 1970 2005 VSAM ISAM IMS UDS CODASYL IDMS DB2 Oracle DB2 Oracle Flache Dateien Hierarchische Datenbanken Vernetzte Datenbanken Relationale Datenbanken Objekt-Relationale Datenbanken Feste physische Sätze Variable logische Sätze unterschiedliche Satzformate Primäre und sekundäre Suchbegriffe Verschachtelte Zugriffslogik Feste Satzlänge Variable Segmente Unterschiedliche Segmentformate Pointer Verkettung Physische und logische Zugriffe Hierarchische Zugriffslogik Variable Satzlänge Unterschiedliche Satztypen Überlagerte Satzstrukturen Pointer Verkettung Primäre und sekundäre Suchbegriffe Alternative Zugriffspfade Navigation durch die Datenbank Tabellen statt Sätze Variable Feldlängen Feste Anzahl Attribute Primäre & Fremde Suchbegriffe Verschachtelte Zugriffslogik Unabhängigkeit der Daten von der Anwendung Objekte Tabellen Unterschiedliche Datenformate Indizierung und Pointer Verkettung Alternative Zugriffspfade Sätze und Objekte XML Dokumente 6 Migration in SOA
Evolution der Benutzerschnittstelle 1970 2005 Lochkarten Lochstreifen Stapeleingabe Listenausgabe Belegleser Formblätter Terminal Monitor Online-Systeme TP-Monitore IMS-DC CICS UTM TIP GUI Fat-Client Client/Server Systeme Web Browser Thin Client Web-basierte Systeme 7 Migration in SOA
Evolution der Programmierung 1970 2005 Normierte Programmierung Strukturierte Programmierung Daten-orientierte Programmierung Objektorientierte Programmierung Komponenten Programmierung Datengetriebene Programmlogik Input, Processing, Output JSP & Warnier Steuerflussgetriebene Programmlogik Sequenz, Auswahl, Wiederholung Prozedurale Logik Hierarchische Programme Datenbankgetriebene Programmlogik 4GL Sprachen Verschmelzung der Präsentation mit der Verarbeitung und der Zugriffslogik Flache Programme Kapselung on Daten und Funktionen Vererbung Polymorphie Vernetzte Programme Kapselung der Klassen und Prozeduren Abstrakte Schnittstellen Trennung der Daten von den Operationen Zustandslose Komponente 8 Migration in SOA
Evolution der Programmiersprachen 1970 2005 Assembler Sprachen Prozeduralen Sprachen 4GL Sprachen OO Sprachen Mark-Up Sprachen IBM Siemens Nixdorf Fortran COBOL PL/I Delta ADS-Online APS Ideal Natural C++ OO-Cobol Java C# HTML XML PHP JSP WSDL BPEL 9 Migration in SOA
Einführung von Web Services Software Services (Server) Business Processes (Clients) xxx xxxxxxxxx xxx xxxxxxxxx WSDL Wrappers Soap Client (JAXP) xxxxxxx xxxxxxx Packed Functions XML Soap Messages XML EAI Processes xxx xxxxxxxxx xxx xxxxxxxxx xxxxxxx xxxxxxx Relational Databases XML XML B2B Processes xxx xxxxxxxxx xxx xxxxxxxxx xxxxxxx xxxxxxx Legacy Applications XML XML Browsers xxx xxxxxxxxx xxxxxxx UDDI Registries xxx xxxxxxxxx xxxxxxx Packaged Applications XML XML Wireless Jeder Geschäftsprozess kann auf jede Softwarekomponente, Anwendung oder Datenbank via die zentrale Registry Service zugreifen. Die Software Ressourcen eines Unternehmens sind Gemeingut geworden. 10 Migration in SOA
Web Service Beschaffung Kaufen der Web Services vom Softwareanbieter. Miete der Web Services vom Service Anbieter. Ausleihen der Web Services von der Open Source Gemeinschaft. Entwickeln der Web Services mit eigenen oder fremden Ressourcen. Wiedergewinnen der Web Services aus den bestehenden Systemen. 11 Migration in SOA
Der Kauf von Web Services Vorteile sie sind sofort verfügbar sie sind bereits ausgetestet sie sind robust und zuverlässig sie sind durch den Anbieter unterstützt. Nachteile sie sind teuer sie sind funktional eingeschränkt. sie sind unflexibel sie sind monolitisch sie schaffen eine langfristige Abhängigkeit. 12 Migration in SOA
Die Miete von Web Services Vorteile die Gleichen wie bei gekauften Services sie müssen nicht immer wieder neu installiert werden. der Kunde hat immer die neueste Version. der Kunde bezahlt nur für die Funktionen die er verwendet. Nachteile sie sind immer noch relativ teuer. die Funktionalität kann sich ändern. sie sind unflexibel sie sind monolithisch Sie verursachen performance Engpässe 13 Migration in SOA
Das Ausleihen der Web Services Vorteile sie sind billig zu beschaffen sie sind relativ leicht verfügbar sie sind immer die neueste Version sie sind flexibel Sie sind qualitativ besser sie können den eigenen Anforderungen angepasst werden. Nachteile sie stammen aus unbelangbaren Quellen sie werden nicht verpflichtend unterstützt. sie sind nicht garantiert. sie haben fragwürdige Besitzverhältnisse. sie sind teuer zu erhalten. sie setzen spezialisiertes Personal voraus. 14 Migration in SOA
Die Entwicklung von Web Services Vorteile sie sind völlig maßgeschneidert sie können jederzeit angepasst werden sie sind immer aktuell sie sind leicht zu warten und weiterzuentwickeln. Nachteile Sie sind sehr teuer. Sie sind nicht sofort verfügbar. Sie brauchen Jahre um reif zu werden. Sie schaffen Abhängigkeiten zum Personal Sie binden wertvolle Personalressourcen. 15 Migration in SOA
Die Wiedergewinnung von Web Services Vorteile sie sind den Anwenderbedürfnissen zugeschnitten. sie sind feingranular und beliebig einsetzbar sie sind gut getested und zuverlässig sie sind schnell verfügbar sie sind billig zu beschaffen sie sind im Besitz des Anwenders Nachteile Sie sind mit einer alten Technologie implementiert. Sie sind schwer zu pflegen und fortzuschreiben. Sie können Performance Probleme verursachen. Sie setzen Spezialisten der Legacy Technologie voraus Sie binden teuere Personalressourcen 16 Migration in SOA
Fünf Schritte zur Wiedergewinnung von Web Services 1. Sie müssen in dem alten System erkannt werden. 2. Sie müssen bezüglich Ihrer Wiederverwendbarkeit bewertet werden. 3. Sie müssen aus dem alten System herausgeschnitten werden. 4. Sie müssen als Web Service gekapselt werden. 5. Sie müssen in der neuen Umgebung getestet werden. 17 Migration in SOA
Erkennung wiederverwendbarer Software Bausteine im alten Code Prozess Argumente Slicing Technique Programm y = f (x) Result = Processing Rule (Arguments); Processing_Rule = Allocation (Path_Expression); Path_Expression = [<Conditions>]n; Prozedur Pfad Ausdruck Bedingung Bedingung (Business Rule Identification) Assign Or Compute n Ergebnis 18 Migration in SOA
Bewertung der Wiederverwendbarkeit Wiederverwendbarkeitsmetrik SYSTEM PROGRAMM MODUL Prozeduren EINGANG Wenig Abhängigkeiten Keine IOs AUSGANG Wiederverwendbarkeit einzelner Bausteine ist eine Funktion deren Abhängigkeit zu den anderen Bausteine um sie herum. 19 Migration in SOA
Extrahierung der Code-Bausteine Legacy Code Datenbereich der betroffenen Source Bausteine Parameter Code Anweisingen auf dem Ergebnispfad bzw. Input Daten Relocatable Self-controlled Daten Externe Funktionen Müssen eingebaut werden das Feature Internal Daten Output Ergebnis Daten Daten des relocatable Codes 20 Migration in SOA
Kapselung der extrahierten Code-Bausteine Service Request Generiere von Inputs WSDL Schnittstellen Generiere von Outputs Generierte Wrapper Klassen Input Parameter Output Parameter Procedural Code (Section, Procedure or Function 21 Migration in SOA
Beispiel einer WSDL Schnittstellendefinition <complextype name="lebenslagewsdata"> <sequence> <element name="id" type="int" nillable="true"/> <element name="languageid" type="int" nillable="true"/> <element name="mandantenid" type="int" nillable="true"/> <element name="beschreibung" type="string" nillable="true"/> <element name="hasnachfolger" type="boolean" nillable="true"/> <element name="publiziertenachfolger" type="tns:lebenslagewsinfo nillable="true" minoccurs="0" maxoccurs="unbounded"/> <element name="titel" type="string" nillable="true"/> <element name="untertitel" type="string" nillable="true"/> <element name="veids" type="int" nillable="true" minoccurs="0" maxoccurs="unbounded"/> <element name="version" type="int" nillable="true"/> <element name="vorgaengerid" type="int" nillable="true"/> <element name="vorgaengermandantenid" type="int" nillable="true"/> <element name="vorgaengertitel" type="string" nillable="true"/> </sequence> </complextype> 22 Migration in SOA
Beispiel eines COBOL Code-Bausteins WRAP *LINKAGE SECTION. WRAP 01 xm059-params. 02 P1. 03 P1-TT PIC 99. 03 P1-MM PIC 99. SNEED 03 P1-CE PIC 99. 03 P1-JJ PIC 99. 02 P2. 03 LANG-CODE PIC 9. 02 P3. 03 DIRECTION PIC X. 02 P4. 03 DAY-NAME PIC X(10). ***************** COBWRAP XML parameters *********************** XMLINS 01 XML-PARAMS. 05 XML-FUNCODE PIC XX. 05 XML-RETCODE PIC 99. 05 XML-FILNAME PIC X(8). ***************************************************************** WRAP *PROCEDURE DIVISION USING P1 P2 P3 P4. WRAP PROCEDURE DIVISION. WRAP xm059-wrapped-entry. WRAP MOVE 'RD' TO XML-FUNCODE WRAP MOVE ZEROES TO XML-RETCODE WRAP MOVE 'xm059i' TO XML-FILNAME WRAP MOVE 256 TO X-REC-LNG WRAP CALL 'XM059I ' USING XML-FUNCODE, XML-RETCODE, XML-FILNAME, WRAP xm059-params, X-REC-LNG. 23 Migration in SOA
Generierte WSDL Schnittstellendefinition (Request) 24 Migration in SOA <?xml version = "1.0"> <!--This schema was generated from prog:inputs\xm059i.cpy by the Sneed Tool GENSCHEMA on date:040112 --> <schema name = "xm059i" xmlns= "XSDCOB"> <XSDCOB:complexType type = "#file" name = "xm059i" content = "eltonly" model = "closed"> <XSDCOB:complexType type = "#params" name = "XM059-PARAMS" content = "eltonly" model = "closed" level = "02" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "unbounded"> <XSDCOB:complexType type = "#group" name = "P1" content = "eltonly" model = "closed" level = "02" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "0001"> <XSDCOB:element type = "#dec" name = "DAY" content = "TextOnly" model = "closed" level = "03" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "0001" pos = "0001" lng = "0002" pic = "99" usage = "DISPLAY"/> <XSDCOB:element type = "#dec" name = "MONTH" content = "TextOnly" model = "closed" level = "03" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "0001" pos = "0003" lng = "0002" pic = "99" usage = "DISPLAY"/> <XSDCOB:element type = "#dec" name = "YEAR" content = "TextOnly" model = "closed" level = "03" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "0001" pos = "0005" lng = "0004" pic = "9999" usage = "DISPLAY"/> </XSDCOB:complexType>
Generierte WSDL Schnittstellendefinition (Response) <?xml version = "1.0"> <!--This schema was generated from prog:inputs\xm059o.cpy --> <schema name = "xm059o" xmlns= "XSDCOB"> <XSDCOB:complexType type = "#file" name = "xm059o" content = "eltonly" model = "closed"> <XSDCOB:complexType type = "#params" name = "DayofWeekResponse" content = "eltonly" model = "closed" level = "02" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "unbounded"> <XSDCOB:complexType type = "#group" name = "P4" content = "eltonly" model = "closed" level = "02" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "0001"> <XSDCOB:element type = "#char" name = "DAYOFWEEK" content = "TextOnly" model = "closed" level = "03" occurs = "ONEORMORE" minoccurs = "0001" maxoccurs = "0001" pos = "0011" lng = "0010" pic = "X(10)" usage = "DISPLAY"/> </XSDCOB:complexType> </XSDCOB:complexType> </XSDCOB:complexType> </schema> 25 Migration in SOA
BPEL4WS Business Process Execution Language for Web Services Mailbox Mail BPEL BUSINESS PROCESS Business Goals Response Response Response Response Response Request Request Request Request Request Web Service Web Service Web Service Web Service Web Service Common Component Common Component Common Component Common Component Master Data 26 Migration in SOA DB DB DB DB
BPEL4WS Request für Wochentag 27 Migration in SOA <process name = "Calender" xmlns:calender = "http://anecon.com/sneed/sample/" > <partnerlinks> <PartnerLink name = "CalenderUser" partnerlinktype = "calender:user" myrole = "Provider" partnerrole = "User" /> </partnerlinks> <variables> <!-- inputs to Calender Functions --> <variable name = "Day" messagetype = "calender:dayofweekrequest"/> <variable name = "Month" messagetype = "calender:dayofweekrequest"/> <variable name = "Year" messagetype = "calender:dayofweekrequest"/> <variable name = "Language" messagetype = "calender:dayofweekrequest"/> <variable name = "Alignment" messagetype = "calender:dayofweekrequest"/> <!-- outputs from Calender Functions --> <variable name = "ResponseCode" messagetype = "calender:dayofweekresponse"/> <variable name = "DayofWeek" messagetype = "calender:dayofweekresponse"/> </variables> <assign> <copy> <from variable = "Current_Day" part = "Date" /> <to variable = "Day" part = "DayofWeekRequest" /> </copy> <copy> <from variable = "Current_Month" part = "Date" /> <to variable = "Month" part = "DayofWeekRequest" /> </copy> <copy> <from variable = "Current_Year" part = "Date" /> <to variable = "Year" part = "DayofWeekRequest" /> </copy> </assign> <!-- call Calender Service to provide Day --> <invoke partnerlink = "CalenderUser" porttype = "CalenderStatusPT" operation = "GetDayofWeek" inputvariable = "DayofWeekRequest" output Variable = "DayofWeekResponse" /> <assign> <copy> <from variable = "DayofWeek" part = "DayofWeekResponse" /> <to variable = "WeekDay" part = "LetterHeader" /> </copy> </assign> </process>
Web Service Request und Response für Wochentag Input Message from User Business Process <?xml version = "1.0" encoding = "ISO-8859-1"?> <!DOCTYPE "xm059i" SYSTEM "xm059i.xsd"> <xm059i> <DayofWeekRequest> <DAY>12</DAY> <MONTH>10</MONTH> <YEAR>1977</YEAR> <LANGUAGE>3</LANGUAGE> <ALIGNMENT>1</ALIGNMENT> </DayofWeekRequest> </xm059i> Output Message to User Business Process <?xml version = "1.0" encoding = "ISO-8859-1"?> <!--DOCTYPE XM059O SYSTEM "XM059O.xsd"--> <XM059O> <DayofWeekResponse> <RETURN-CODE>00</RETURN-CODE> <DAYOFWEEK>MERCOLEDI</DAYOFWEEK> </DayofWeekResponse> </XM059O> 28 Migration in SOA
Web Service Testing Web Services Port Port Port Pre Conditions Post Conditions Assertion Skript WDSL Request Response WDSL Assertion Skript Daten Generator WSDL Requests Test Treiber WSDL Responses Ergebnist Validator WSDL Schema 29 Migration in SOA Schnittstellen Definitionen Abweichungen Validations bericht
Voraussetzungen für die Migration zu Web Services Techniken sind erforderlich um potentielle Web Services im Legacy Code erkennen zu können. Metriken sind erforderlich um die Wiederverwendbarkeit der Kandidaten zu bewerten. Werkzeuge sind erforderlich um den Web Service Code zu isolieren und aus dem restlichen Code herauszuschneiden. Werkzeuge sind erforderlich um die Web Services in einer WSDL Schale einzukapseln. Methoden und Werkzeuge sind erforderlich um die wiedergewonnenen Web Services zu testen und ihre Ergebnissen zu validieren. 30 Migration in SOA
Software ist unsere Leidenschaft ANECON Software Design und Beratung G.m.b.H. Alser Straße 4 / Hof 1 A-1090 Wien www.anecon.com office@anecon.com Tel.: +43 1 409 58 90-0 Fax: -998