Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.

825 Aufrufe

Veröffentlicht am

Das Team Kreditplattform der IKB entwickelt seit etwa 2 Jahren mit ADF. Wegen der aktuellen Bindung an die SOA Suite verharrten wir seitdem auf der Version 11.1.1.5 mit diversen Bugs. Seit dem Erscheinen der Version 12c wurde die Migration der Anwendung vorbereitet und zum Zeitpunkt des Vortrags gerade abgeschlossen.

Dieser Praxisbericht beleuchtet das Vorgehen und Fallstricke der Migration

- Vorbereitung der Server
- Vorbereitung Entwicklungsumgebung
- Migrationspfad
- Aufgetretene Probleme und deren Lösung
- Bugs & Patches
- Migration MDS
- Automatische und manuelle Tests

Veröffentlicht in: Software
1 Kommentar
0 Gefällt mir
Statistik
Notizen
  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
825
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
40
Aktionen
Geteilt
0
Downloads
6
Kommentare
1
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.

  1. 1. Das dreckige Dutzend – ADF Migration nach 12c in der IKB Torsten Kleiber, DOAG, 19.11.2014
  2. 2. IKB – Bank des Mittelstands IKB im Überblick Leistungsspektrum Regionale Präsenz 1) Zzgl. 18.000 Kunden im Leasing-Geschäft 2) Die per 30. Juni 2014 ausgewiesenen Kennziffern stehen unter dem Vorbehalt der Anerkennung der Zwischengewinne im 1. Quartal 2014/15 durch die Bankenaufsicht 2  Seit 90 Jahren Finanzierungspartner des Mittelstands  2.500 Kunden in Deutschland und Europa1)  Aktionäre: Lone Star 91,5 %, Streubesitz 8,5 %  ca. 1.500 Mitarbeiter  Bilanzsumme: 24,6 Mrd. €2)  Common Equity Tier 1 ratio: 10,86 %2) (Basel 3) Mailand London Paris Madrid München Stuttgart Frankfurt Düsseldorf (HQ) Berlin Hamburg Fördermittel Konsortial-finanzierung Leasing Equity Capital Markets Advisory M&A Corporate Finance Risikomanagement Debt Advisory Derivate Sales & Trading Kredit Bilaterale Finanzierung Capital Markets Debt Capital Markets
  3. 3. Über mich Torsten Kleiber Software Architekt, Entwickler Kreditplattform 15 Jahre IKB, 18 Jahre Oracle Erfahrung von Designer / Forms / Reports PL/SQL zu Architektur Fusion Middleware SOA Mediator ADF Development Tools Development Lifecycle Release Management 3
  4. 4. Agenda 4 Ausgangs-lage Ziele Server Entwickler- Software Migration Release Bugs Betrieb ??? Fazit Ausblick Q&A
  5. 5. Ausgangslage Start ADF vor 3 Jahren mit Lernprojekt bis kurz vor Release kein Deployment Server vorhanden Zeit, Ressourcen knapp SOA Suite 11.1.1.5 für Oracle Mediator vorhanden  Deployment ADF auf SOA Suite  JDeveloper / ADF 11.1.1.5 seitdem weitere Anwendungen Diverse Bugs gefunden und umgangen Support abgelaufen 5
  6. 6. Ziele Ablösung Eigenentwicklung für das Kreditgeschäft - > 500 Forms, > 60 Menüs, > 40 Bibliotheken, > 350 Reports - 50% in englisch - Integration der vorhandenen ADF Anwendungen Trennung LifeCycle ADF von SOA Suite - Komplexität - Patching - Ressourcen zertifizierte Version (prüfungsrelevant) Infrastructure as Code Bugbehebung Neue Funktionalitäten 6
  7. 7. Server – Ausgangslage und Lösung Ausgangslage: - LifeCycle-Tausch Hardware absehbar - Hardwareanforderungen 12c nicht absehbar - Zusätzliche Hardware vor LifeCycle-Tausch  zusätzliche Kosten - Installation bisher - manuell und aufwändig - Dokumentation nur für Erstinstallation vorhanden Lösung: Automatisierung - schneller Hardwaretausch - reproduzierbare Konfiguration - Start auf bestehender Hardware 7
  8. 8. Server – Proof of Concept  „Infrastructure as Code“? Womit? kostenlose Tools? Subjektive Erstauswahl: Puppet Proof of Concept Puppet - mangelnde Unterstützung für SUSE Linux Enterprise Server - veraltete Version - Forge-Module laufen auf SLES oft nicht - Sicherheit IKB Netzwerk - Keine Internetverbindung auf Server - Zertifikatsprüfung scheitert  Proof of Concept abgebrochen 8
  9. 9. Server – Konfiguration / Binaries Installation und Konfiguration per ANT Konfigurationsdatei pro Umgebung 9 <?xml version="1.0" encoding="UTF8" ?> <project name="properties.conf.Entwicklung"> <property name="version.string" value="12.1.3.0.0"/> <property name="dba.user" value="sys"/> <property name="host.name" value="weblogic.ikb.de"/> <property name="host.user" value="osweblogic"/> <property name="host.install.dir" value="/install"/> <property name="host.admin.dir" value="/admin"/> <property name="wl.user" value="weblogic"/> <property name="rcu.host" value="rcu.ikb.de"/> <property name="rcu.port" value="1521"/> <property name="rcu.service" value=rcu"/> Bereitstellung der Software Binaries <target name="provide.binaries"> <scp password="${host.password}" todir="${host.user}@${host.name}:${host.install.dir}"> <fileset refid="install.fileset"/> </scp> </target>
  10. 10. Server – Skript-Parametrisierung Parametrisierte Skripte 10 Ersetzung der Parameter in den Skripten #!/bin/bash . HOST_ADMIN_DIR/ADF_VERSIONDIR_ENVIRONMENT.env pushd /install mkdir -p $ORACLE_HOME pushd $ORACLE_BASE tar zxvf /install/jdk-7u51-linux-x64.tar.gz popd java -jar fmw_VERSIONSTRING_wls.jar -silent -responseFile /install/fmw_VERSIONSTRING_wls.rsp java -jar fmw_VERSIONSTRING_infrastructure.jar -silent –responseFile /install/fmw_VERSIONSTRING_infrastructure.rsp ... <target name="replaces.install"> <move todir="target/install" includeemptydirs="false" description="Datei umbenennen"> <fileset dir="target/install"/> <mapper type="regexp" from="^(.*)(VERSIONSTRING)(.*)" to="1${version.string}3"/> </move> <replaceregexp match="(VERSIONSTRING)" replace="${version.string}" flags="g" byline="true" description="Parameter ersetzen"> <fileset dir="target/install"/> </replaceregexp> ... </target>
  11. 11. Server – Skript-Ausführung Bereitstellung und Ausführung 11 <target name="install" depends="clean,provide.admin,provide.install"> <sql classpath="${sql.classpath}" driver="oracle.jdbc.OracleDriver" url="${rcu.jdbc.url} userid="${dba.user}" password="${dba.password}" description="RCU Tablespaces anlegen" src="target/install/rcu_tablespaces.sql"/> <sshexec trust="true" host="${host.name}" username="${host.user}" password="${host.password}" description="Installation ausführen" command="${host.install.dir}/install.sh"/> </target> WLST-Skripte initialisieren Zustand vor Konfiguration startEdit() try: cmo.destroyJDBCSystemResource(getMBean('/JDBCSystemResources/' + dsNameAdf)) except WLSTException: print dsNameAdf + " does not exist!" activate() startEdit() cmo.createJDBCSystemResource(dsNameAdf) …
  12. 12. Server - Ergebnis 12 Ausgewählte gelöste Probleme - RCU Tablespace-Ablage  Tablespaces vor RCU anlegen -RCU Passworte  Eingabeumleitung aus Datei rcu silent -f < /install/pw.txt - Laufzeitprobleme wg. Zufallszahlen  rng-tools installieren und konfigurieren Ergebnis - Server-Installation und -Konfiguration (WebLogic mit ADF) in unter 30 Minuten - Server-Installation JDeveloper ebenfalls automatisiert
  13. 13. Entwicklersoftware - Ausgangslage ADF PM empfiehlt Standardisierung des Entwickler PC - JDeveloper Version - Patches - Anzahl und Version der Extensions Installation von Software durch den Anwender bei IKB nicht erlaubt Paketierung für Silent Installation 13
  14. 14. Entwicklersoftware – JDeveloper Silent Installation Via Oracle Universal Installer Installer herunterladen Response File erzeugen - Manuelle Installation starten - Im „Installation Summary“ Bildschirm „Save Response File“ auswählen - Installation abbrechen Silent Installation 14 [ENGINE] Response File Version=1.0.0.0.0 [GENERIC] INSTALL_TYPE=Typical ORACLE_HOME=C:OracleJDev121300 jdev_suite_121300_win64.exe -silent -waitforcompletion -responseFile [Pfad]response.rsp response.rsp install.cmd
  15. 15. Entwicklersoftware - JDeveloper Silent Patching Via OPatch OPatch in JDeveloper Installation enthalten Patch herunterladen und entpacken Silent Patching 15 set oracle_home=C:OracleJDev121300 pushd [path][patch nummer] %oracle_home%OPatchopatch apply silent popd patch.cmd
  16. 16. Entwicklersoftware - JDeveloper Silent Installation Extensions Via ojwebupdate  nicht dokumentiert: „ojwebupdate /?“ Download Extensions - Check for Updates in manueller Installation - URL‘s aus [JDEV_USER_DIR ]systemXXXo.ideupdatecenters.xml öffen - Passende Version herunterladen (Abhängigkeiten prüfen!) abhängige Extensions in richtiger Reihenfolge installieren Bei Nicht-Admin-Kennungen letzte Extension 2x als Admin installieren (= Restart) 16 set oracle_home=C:OracleJDev121300 %oracle_home%jdeveloperjdevbinojwebupdate – zips=[Path]junit.zip %oracle_home%jdeveloperjdevbinojwebupdate – zips=[Path]junit-j2ee.zip extensions.cmd
  17. 17. Entwicklersoftware - JDeveloper Konfiguration Anpassung Installation - ide.conf (z.B. Memoryoptionen: -Xms, -Xmx) - jdev.conf (z.B. HeapMonitor : -DMainWindow.MemoryMonitorOn=true) Konfiguration Benutzereinstellungen - silent Konfiguration nicht vorgesehen - Einstellungs-Verzeichnis wird bei erstem Start erzeugt - Ort übersteuerbar per Umgebungsvariable JDEV_USER_DIR - Proof of Concept: Extension für Einstellungen der IKB - Auf viele Dateien verteilt - Erzeugung teilweise erst beim Setzen (z.B. Namenskonventionen ADF BC) -  Einstellung der Entwicklung -  manuelle Konfiguration nach erstem Start lt. Wiki - Konfiguration des WebLogic-Server über WLST-Skript - Alternative?: selbes Verzeichnis über JDEV_USER_DIR 17
  18. 18. Entwicklersoftware – weitere Software Tortoise SVN 1.7 Client - JDeveloper SVN Plugin teilweise mangelhaft - Version X.X muss zur JDeveloper SVN Version passen - Upgrade SVN Repository erst, wenn alle Applikationen migriert sind! 18
  19. 19. Migration - Migrationspfad Ermittlung Migrationspfad - 12.1.2/12.1.3 19 - nur von 11.1.1.7 supported - 11.1.1.7: von 11.1.1.5 supported  Migrationspfad: 11.1.1.5  11.1.1.7  12.1.2/12.1.3
  20. 20. Migration – Prinzipieller Ablauf Migration nach 11.1.1.7 - Manuelles Öffnen aller Anwendungen - Bestätigung aller Migrationsassistant-Abfragen - Anpassungen - Test der Anwendung Migration nach 12.1.2/12.1.3 - Manuelles Öffnen aller Anwendungen - Bestätigung aller Migrationsassistant-Abfragen - Anpassungen - Test der Anwendung 20 for /r [path] %%i in (*.jws) do ( [Oracle Home]jdeveloperjdevbinojmigrate %%i ) ojmigrate: nicht dokumentiert: „ojmigrate /?“
  21. 21. Migration – Anwendung „Marktdaten“ - Kleine Anwendung für kleinen Nutzerkreis - DVT-Komponenten führten wg. Bug zum Serverabsturz unter 11.1.1.5/7 - Hoher Einsatzdruck aufgrund Prüfungsfeststellung - März 2014 auf 12.1.2 - seitdem produktiv - August 2014 auf 12.1.3 21
  22. 22. Migration – Migration andere Anwendungen  Iterative Test-Migrationen seit November 2013 Ablauf pro JDeveloper-Version erweitert um - Anpassungen Variablen für ANT Build - Anpassung Classpath für ANT Build über JDevLibsForAnt - Umstellung Build auf ojserver - Bei 12c „TODO 12c“ Kommentare abarbeiten - Build - automatischer Test mit Set von Unit- und GUI-Tests - Backport Änderungen nach 11g Trunk direkt oder als „TODO 12c“ Kommentar - Commit Zwischenstand JDeveloper IDE 12.1.2 sehr stark fehlerbehaftet 12.1.3 im Juli 2014 erschienen Kleine Anpassungen der Installationsskripte für Server und Entwicklungssoftware Migrationsbeginn September 2014 Intensiver manueller Test 22
  23. 23. Release Release am 12.09.2014 Umstellung von Deployment / Überwachung / Administration auf neue Server Merge Migrations-Branch in den Trunk Deployment aller Anwendungen manuelle Migration des MDS Repositories über den Enterprise Manager Umstellung aller Zugriffe/Links - Neue logische Aliase im DNS verweisen auf - Reale Links der Anwendung per F5 Load Balancer Forwarding Stoppen der Anwendungen auf den 11.1.1.5/12.1.2 Servern Umstellung Jobs für Continous Integration  Verteilung TortoiseSVN 1.7 auf Entwickler PC‘s 23
  24. 24. Auswahl an Bug‘s / Notes / SR‘s 12.1.3 - 18489410: svn: “Switch working copy” Befehl wie in TortoiseSVN - 18163751: svn: Zugriff per HTTP Proxy mit Authorization - JSP Precompile funktioniert nicht für jspx/jsff in ADF Libraries - 19525523: JSP Precompile funktioniert nicht im IntegratedWebLogicServer - 18704469: Task Tags werden in XML- or Text-Dateien nicht mehr markiert - 19434883: Reihenfolge von Code Editor Save Actions wird nicht gespeichert - 19347286: Order by kann in Expert Mode VO’s nicht geändert werden - 19353293: Code Insight : Statt Return Type wird Methoden-Signatur angezeigt - 776277.1: DVT: X11-Server oder JVM-Parameter für java.awt.* wird benötigt - 19823554: Custom Filter funktionieren nicht, wenn Suchergebnis > Fetch Size - 19529827: IE 8/9: Fokusverlust bei 2. Klick in selbe Tabellenspalte - 19724439: Search-LOV mit großen Feldern wird nicht dynamisch vergrößert - 19771991: Filter auf Date/ArrayList Spalten - ClassCastException - 19855915: Filter auf Number Spalten - Fehler bei Eingabe Nachkommastellen - NotConnectedEcxeptions in (nested?) AM’s in (isolated?) TF’s Bitte SR öffnen und eskalieren! Oder haben Sie Lösungen für diese Probleme? 24 Workaround Patch wird nicht gefixt
  25. 25. Betrieb – Fire Fighting 25
  26. 26. ??? - Das dreckige Dutzend? Bugs vor Einsatz als vertretbar eingestuft kein Last-Test wg. fehlender Infrastruktur  NotConnectedException’s führen zu Destabilisierung unter Produktionslast nach einer Woche Betrieb Fallback durchgeführt für diese Anwendung Vorläufig Weiterentwicklung unter 11.1.1.5 Anwendung nicht verworfen, Backport der Änderungen wo möglich 26
  27. 27. Ausblick Weitere Analyse der zurückgerollten 12c-Anwendung - WebLogic Logs - Lasttests - Debugging Entscheidung über neue Migration abhängig von - Ergebnissen der Analyse - Rollout Internet Explorer 11 (supportet erst ab 11.1.1.6 / 11.1.2.3 / 12.1.2) 27
  28. 28. Fazit  Projektziel wurde nicht erreicht  Scheitern hatte negative Außenwirkung Scheitern als Chance für Erweiterung Entwicklungsprozess - Mehr automatisierte Tests - Last-Test - Fehler-Monitoring - … Ist ADF 12.1.3 wirklich produktionsreif? 28
  29. 29. Fragen & Antworten 29

×