OSGi goes Mainframe - Modulwelten
Transcrição
OSGi goes Mainframe - Modulwelten
OSGi goes Mainframe - Modulwelten managen Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.1 www.oio.de [email protected] Ausgangssituation • Bestehende Großrechner-Anwendung – – – – Mehr als 20 Jahre Produktionserfahrung Mehr als 20 Kundeninstallationen Sehr kosteneffizienter Betrieb (near zero administration) ASP möglich • Zugriff über Terminal-Clients – Bis zu 4-stellige Benutzerzahlen pro Installation – Effektive praxiserprobte Benutzerführung • Große Menge Business-Logik, die nicht mal schnell in Java reproduziert werden kann – >100 Personenjahre Entwicklungsaufwand – >10^6 lines of code © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 2 Das ist doch einfach!?! Rich-Client Remote-Zugriff Großrechner © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 3 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • • Migration Integration Update Qualitätsmanagement OSGi goes Mainframe - Modulwelten managen 4 Logischer Modulaufbau des Produktes Invoice Master data ... ... ... Legacy - Programme © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Migrationsvision nach Java (1) Invoice Master data ... ... ... Legacy - Programme © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Migrationsvision nach Java(2) Invoice Master data ... ... ... Legacy - Programme © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Migrationsvision nach Java(3) Invoice Master data ... ... ... Legacy - Programme © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Migrationsvision nach Java(4) Invoice Master data ... ... ... Legacy - Programme © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • • Migration Integration Update Qualitätsmanagement OSGi goes Mainframe - Modulwelten managen 10 Modularisierung... “A module is a self-contained component of a system, which has a well-defined interface to the other components; something is modular if it includes or uses modules which can be interchanged as units without disassembly of the module. Design, manufacture, repair, etc. of the modules may be complex, but this is not relevant; once the module exists, it can easily be connected to or disconnected from the system.“ © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Legacy Module (LGM) • Vergleichbar mit Dokumentenbasierten Webservices – Also keine direkte Abbildung Serviceschnittstelle (mit mehrere Methoden) auf Legacy Programm möglich – Eine Schnittstelle im „Java“ Sinn würde immer auf mehrere Legacy Programme zeigen – Hinter LGMs verstecken sich Legacy Programme – LGMs werden speziell für die Java Anwendung bereitgestellt und werden von keinem anderem verwendet LGM1 Legacy1 © 2010 Orientation in Objects GmbH Legacy2 OSGi goes Mainframe - Modulwelten managen 12 OSGi - Open Services Gateway initiative (I) • Kein JavaEE Standard – Definiert von OSGi Alliance • Mitglieder z. B. IBM, Nokia und Oracle • http://www.osgi.org • Komponentenmodell – Anwendung wird in „bundles“ unterteilt – Bundles können einzeln verwaltet werden • install/start/stop/uninstall/update © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen OSGi - Open Services Gateway initiative (II) • Sichtbarkeitsregeln für Bundles – Definition von Im- und Exports • Eintrag in META-INF/MANIFEST • Abhängigkeitsverwaltung zwischen Bundles – Auflösung von Abhängigkeiten zur Laufzeit – Versionsinformationen vorhanden • „SOA in a JVM“ – Service Registry verwaltet Dienste © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen OSGi Service Platform • Ausführungsplatform für OSGi Bundles – – – – Lightweight Container Containerdienste Lifecyle für Bundles Standalone oder Embedded einsetzbar • OSS Implementierungen – Equinox (http://www.eclipse.org/equinox/) – Apache Felix (http://felix.apache.org/) – Knopflerfish (http://knopflerfish.org/) © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • • Migration Integration Update Qualitätsmanagement OSGi goes Mainframe - Modulwelten managen 16 Update-Strategie • Legacy (Ist) – Update einzelner Großrechner-Programme – Update von abhängigen Programmen – Pflege der Abhängigkeiten durch Entwickler • Java (Soll) – – – – Modul-weise Updates Inkrementelle Client Updates wegen Netzwerk-Last Synchrone Updates Großrechner & Rich Client Hotfix-Fähigkeit © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 17 Updatestrategie des Legacy-Produktes Änderung Änderung LGM01 LGM01 Änderung LGM02 Bugfix Änderung LGM03 Kunderelease © 2010 Orientation in Objects GmbH Entwicklung im „Trunk“ Kundenfix ergeben sich aus Änderungen in den Abhängigkeiten OSGi goes Mainframe - Modulwelten managen 18 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • • Migration Integration Update Qualitätsmanagement OSGi goes Mainframe - Modulwelten managen 19 Probleme bei der Implementierung des Konzeptes • Versionen von Großrechner-Services und Client-Artefakten zuordnen • Reproduzierbarkeit von Builds © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 20 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • Service Granularität Dependency Management Silokonzept OSGi goes Mainframe - Modulwelten managen 21 Java Anbindung Schritt 1: monolithische Mittelschicht RCP 01 RCP 02 RCP 03 monolithische Mittelschicht LGM01 Legacy01 © 2010 Orientation in Objects GmbH Legacy02 LGM02 Legacy03 Legacy04 LGM03 Legacy05 Legacy06 OSGi goes Mainframe - Modulwelten managen 22 Schritt 2: modulare Mittelschicht RCP 01 RCP 02 RCP 03 Mittelschicht Modul 01 Mittelschicht Modul 02 Mittelschicht Modul 03 LGM01 Legacy01 © 2010 Orientation in Objects GmbH Legacy02 LGM02 Legacy03 Legacy04 LGM03 Legacy05 Legacy06 OSGi goes Mainframe - Modulwelten managen 23 Schnittstelle zwischen Legacy und Java definieren Java Legacy Schnittstellendefinition - Infrastruktur - Operationen - Datenstrukturen (DOM) - Metadaten © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 24 Service-Schnittstellen • Statt einzelne LGMs anzusprechen jetzt Services ansprechen • Services werden gemeinsam (Lieferant und Kunde) definiert – Service-Anbindung durch Lieferant – Service-Implementierung durch Kunde • Abhängigkeiten werden beim Kunden verwaltet (keine implizite Abhängigkeiten durch „Frontend“ mehr) © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 25 Schritt 3: Mittelschicht RCP 01 RCP 02 RCP 03 Mittelschicht Modul 01 Mittelschicht Modul 02 Mittelschicht Modul 03 Service01 Service02 Service03 LGM01 Legacy01 © 2010 Orientation in Objects GmbH Legacy02 LGM02 Legacy03 Legacy04 OSGi goes Mainframe - Modulwelten managen 26 Rückwärtskompatibilität in Services • Methoden (Funktionen) in Services sind Veröffentlicht und werden weder – in der Signatur – noch in der Funktionalität geändert • Es dürfen jederzeit neue Methoden (Funktionen) hinzugefügt werden • Notwendige Änderungen in der Signatur oder Funktionsweise einer Methode (Funktion) werden durch hinzufügen neuer Methoden realisiert. – Die „alten“ Methoden werden in der Schnittstelle als „deprecated“ gekennzeichnet und werden evtl. bei dem nächsten Release entfernt. – Das Legacy Team muss das „deprecaten“ von Methoden (Funktionen) kommunizieren. © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 27 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • Service Granularität Dependency Management Silokonzept OSGi goes Mainframe - Modulwelten managen 28 Java Mittelschicht Legacy-Anbindung • Führt zu Abhängigkeitsgraph „außerhalb“ des Legacy Systems • Je nach Ausführung werden unter Umständen mehr oder weniger Abhängigkeiten gebildet: – Eine monolithische Mittelschicht bindet alle verwendete Legacy Module zusammen – Eine modulare Mittelschicht bindet unter Umständen nicht alle Legacy Module zusammen • Best case: Gruppierung der LGMs durch Backend führt zu wenigen Abhängigkeiten • Worst case: monolithische Mittelschicht... © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 29 Abhängigkeit zwischen Legacy Programmen A B C D E F G H I • Einzelne Legacy Programme sind abhängig voneinander • Eine Programm Aktualisierung bedingt weitere Aktualisierungen • Pflege aller vorhandenen Abhängigkeiten in Tabelle nötig • Größenordnung hängt von Anzahl der Programmen ab A benötigt: D B benötigt: E C benötigt: D benötigt: E benötigt: F usw. © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Abhängigkeit zwischen Legacy und Java Programmen A B C D E F G H I A B C D E F G H I © 2010 Orientation in Objects GmbH • Legacy funktioniert • Gleiches gilt für die Java Seite! OSGi goes Mainframe - Modulwelten managen Minimaler Update-Set bei Abhängigkeit zwischen Legacy Programmen A B C D E F G H I A B C D E F G H I © 2010 Orientation in Objects GmbH • Legacy und Java Programme sind ebenfalls voneinander abhängig • Legacy Änderung bedingt nun Java Änderungen (eventuell zyklisch!) OSGi goes Mainframe - Modulwelten managen Minimaler Update-Set bei Abhängigkeit zwischen Legacy und Java Programmen A B C D E F G H Abhängigkeitspflege wird komplexer und fehleranfälliger • Fehlen von Services führt zu vielen kleinen Programmen • Kleinste Fehler bei Pflege der Abhängigkeiten potenzieren sich I A B C D E F G H I © 2010 Orientation in Objects GmbH • OSGi goes Mainframe - Modulwelten managen Java Dependency Management • • Legacy Bausteine werden möglichst gleich groß in Java Plugins zugeordnet und umgesetzt Neue Dependencies werden über Java zu Rückkopplung ins Legacy führen © 2010 Orientation in Objects GmbH • Vorteile: – theoretisch die Fortsetzung der bisherigen Arbeitsweise in Java • Nachteile: – Java Startup und Buildzeiten sehr langsam – Entwicklungskosten steigen mit der Zahl der Plugins – Hoher QM Aufwand und hohe Fehleranfälligkeit – Hohes Risiko das MittelschichtsDependencies zu doch größeren Updates führen – entsprechende Versionsverwaltung existiert nicht OSGi goes Mainframe - Modulwelten managen World without Java HEAD Legacy01 V3 Legacy03 V2 Bugfix an Legacy03 nötig --> V2 Legacy03 --> kein Deployment von V3 Legacy01 nötig Legacy04 Legacy02 Legacy05 © 2010 Orientation in Objects GmbH Legacy06 OSGi goes Mainframe - Modulwelten managen 35 Vermittlung der Dependency durch Java vs. Legacy Java vs. Legacy 1.0 1.0 Legacy01 Legacy03 Legacy04 Legacy02 Legacy05 © 2010 Orientation in Objects GmbH Legacy06 OSGi goes Mainframe - Modulwelten managen 36 Direkte Mittelschicht-Dependencies zwischen Java und LGM Programm Legacy01 Legacy03 LGM02 Dep LGM01 Dep Legacy04 Legacy02 LGM03 Dep LGM03 Dep Legacy05 Legacy06 LGM03 Dep © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 37 Was eigentlich alle zu allen bindet... Legacy01 Legacy03 LGM02 Dep LGM01 Dep Legacy04 Legacy02 LGM03 Dep LGM03 Dep Legacy05 Legacy06 LGM03 Dep © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 38 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • Service Granularität Dependency Management Silokonzept OSGi goes Mainframe - Modulwelten managen 39 Silo Definition RCP 01 RCP 02 RCP 03 Mittelschicht Modul 01 Mittelschicht Modul 02 Mittelschicht Modul 03 Service01 Service02 Service03 LGM01 Legacy01 © 2010 Orientation in Objects GmbH Legacy02 LGM02 Legacy03 Legacy04 OSGi goes Mainframe - Modulwelten managen 40 Wiederverwendbare gemeinsame Services RCP 01 RCP 02 RCP 03 Utility Modul 01 Mittelschicht Modul 01 Mittelschicht Modul 02 Mittelschicht Modul 03 Utility Service01 Service01 Service02 Service03 LGM01 Legacy01 © 2010 Orientation in Objects GmbH Legacy02 LGM02 Legacy03 Legacy04 OSGi goes Mainframe - Modulwelten managen 41 Dependency zu wiederverwendbarem Service RCP 01 RCP 02 RCP 03 Utility Modul 01 Mittelschicht Modul 01 Mittelschicht Modul 02 Mittelschicht Modul 03 Utility Service01 Service01 Service02 Service03 LGM01 Legacy01 © 2010 Orientation in Objects GmbH Legacy02 LGM02 Legacy03 Legacy04 OSGi goes Mainframe - Modulwelten managen 42 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • Laufzeitarchitektur Buildmanagement Releasemanagement OSGi goes Mainframe - Modulwelten managen 43 Client WIN 32/64 Actions Eclipse RCP OSGi Applicationframework Deployment Databinding Customview Standardview Remote Proxy JSE 6 © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen Middletier Remote Proxy SOAP Proxy Transferobjekt Assembler OSGi Logging Business Logic - POJOs Security Service Implementierung Transactions Spring Container Stateless Services Fassade Hibernate JTOpen JDBC JSE 6 / JEE 5 © 2010 Orientation in Objects GmbH Legacy Host OSGi goes Mainframe - Modulwelten managen Used OSGi - Layers • • Komplettes Life Cycle Management Classloader separation INSTALLED STARTING start RESOLVED ACTIVE stop UNINSTALLED STOPPING 46 als Rich Client PlattformGmbH ©Eclipse 2010 Orientation in Objects OSGi goes Mainframe - Modulwelten managen 46 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • Laufzeitarchitektur Buildmanagement Releasemanagement OSGi goes Mainframe - Modulwelten managen 47 Componentbuildservice ComponentMetaData 1 Component Build Service 3 Component Repository 2 Source code Repository © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 48 Ansätze im Java/OSGi-Umfeld • Buildwerkzeuge – PDE Build – Ant mit Sigil/Bundlor/BND – Maven • Artefakt-Management – OSGi Bundle Repository (OBR) – p2 – Ivy • IDE – Integration mit Build- und Artefakt-Management – Start und Test der Anwendung ohne Build/Deploy Zyklus © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 49 Gliederung • Problemstellung • Lösungsansätze • Praktische Umsetzung © 2010 Orientation in Objects GmbH • • • Laufzeitarchitektur Buildmanagement Releasemanagement OSGi goes Mainframe - Modulwelten managen 50 Herausforderungen • Deployment – p2 – Webstart • Metatadaten Management – Pflege der MANIFEST.MF durch Entwickler – Generierung der MANIFEST.MF • Verknüpfung von Java Silos und Legacy Services © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen 51 QM Infrastruktur Automatisierte Tests Component Repository Component Build Service CI Server Source Code Repository automatisierte Codeanalysen Issuetracker Stagingsystem © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen QM-Infrastruktur • Hoher Integrationsgrad birgt Qualitätsrisiko – daher automatisierte Integrationstest als Regression • Verbesserung der Codequalität durch gezielte Massnahmen nach Messungen – Integration von Codemetriken in den Buildprozess • Zusammenfassung in Continuous Integration Server • bei größeren Customizings birgt Datenbasis des Kunden ebenfalls Qualitätsrisiko – Einsatz eines Staging Systems • Dokumentation der Auswirkungen von Entwicklungsaktivitäten – Kopplung von Issuetracker und Sourcecode Repository – Analyse und automatisierte Überwachung © 2010 Orientation in Objects GmbH OSGi goes Mainframe - Modulwelten managen ? ? ? ? ? Fragen ? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] 54 Vielen Dank für ihre Aufmerksamkeit ! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected]