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
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
1. Das dreckige Dutzend –
ADF Migration nach 12c in der IKB
Torsten Kleiber, DOAG, 19.11.2014
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. Ü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. Agenda
4
Ausgangs-lage
Ziele
Server
Entwickler-
Software
Migration
Release
Bugs
Betrieb
???
Fazit
Ausblick
Q&A
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. 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. 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. 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
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. 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
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. 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. 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. 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
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. 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. 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. 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. 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
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. 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. 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