2012 06-15-jazoon12-sub138-eranea-large-apps-migration
-
Upload
didier-durand -
Category
Technology
-
view
9.072 -
download
0
description
Transcript of 2012 06-15-jazoon12-sub138-eranea-large-apps-migration
AUTOMATED MIGRATION TO JAVAKey success factors for large business applications
Didier Durand & Pierre-Jean Distcheideranea (Lausanne, CH)submission #138
2
agenda
> background
> starting point
> target
> benefits
> technology
> choose & change target
> process automation
> iso-functionality
> progressive migration
> testing
> code structure
> samples & demonstration
key success factors
context
CONTEXT
4
> eranea (Lausanne, CH), specialized in automated migration of large business application to java / linux / x86 clouds
> presentation based on various finished or running projects
– media
– banking
– administration
– insurance
– retail
– independent software vendors
> current lead project: migration of core banking system (10M lines of Cobol) for private bank in Geneva
background
5
> a large mission-critical homemade application
> encapsulating all business knowledge and know-how with high-reliability proven by decades of operations
> representing large investments (10s to 100s of men-year in development)
> on the way to technological obsolescence
> running on a very expensive proprietary system when compared to standards of 2012
starting point
6
target: x86 (1)
x86 > 2/3 of total market !
x86 as powerfulas anybody
x86 architecture used by Amazon, Google, Facebook, Twitter
7
target: linux (2)
1. linux is growing fast
2. proprietary OS disappear
3. linux references: London Stock Exchange, NYSE, Euronext, etc.
4. for the “3S” : Speed, Stability, Security
worldwide server market(roll-outs, subscriptions, shipments)
lotsof
office automationservers
8
benefits (1): massive savings
1. software too costly → competitive environment required for base + 3rd parties
2. switch to OSS :
approx -90 % on software costs (70%)
leverage for h/w switch
3. total savings
x86 h/w + OSS s/w → 90%10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
100% = approx. 5 millions CHF/an
Cpu
Peripherals(disks, tapes, etc.)
3rd party software
IBM software(z/OS, Cics, DB2, etc..)
9
> web technologies → html/ajax UI
> core components → java, linux + associated tools for monitoring, etc.
> IDE (Eclipse) + all java tooling (unit test, code analysis, code coverage, etc.)
> SOA → 1 web service (SOAP) per legacy transaction
> SOA → BPM
> java becomes native and new source code → old technologies are abandoned
benefits (2): modernization
10
> new architecture• horizontal growth → no big bang• function isolation: transactions <> batch → higher stability• high-availability and disaster recovery much less costly• small increment → fast decisions
> standards components:• recruiting easier• various alternatives / many suppliers
benefits (3): modernization
11
technology (1)
“Cobol” support
SQL support
CICS Emulation
Display support
Tracing / logging
InternalObject
implementation
JavaProgram
(incl SQL)
XMLScreen
DBMS
LexicalAnalysis
Syntax Analysis
Semantics Analysis
Cobolcopy
Cobolpgm
BMSdesc
Code Generation
NeaTranscoder
NeaRuntime
Online
SOA
Batch
technology (2)
Internet
sourcesrepository
DB ERIT
Integrate
client
1. automated synchrowith
traceability & reporting
2. copy (partial)of legacy assets
3. replicationof
processes & systems
CIengine
sourcesrepository
Integrate
eranea
CIengine
legacy application+
database
DB ERIT
VPN / VPC
AS(JBoss)
KEY SUCCESS FACTORS
14
originalappl.
fullmutation
level 1
level 2
level 3
level 4
Cobol → Javaothers : identical
Cobol → JavaCICS → Java ASothers : identical
Java AS on Linux
DBon Linux
different stepsof
single project<>
different projects
derivedappl.
ISVsolution
choose & change target
15
> transcoding must be 100% automatic• 1% tweaking on 10M lines → 100'000 lines !
> repeatable whenever needed• no additional HR costs
> very fast• 1 million lines → 4 minutes
> incremental / recurrent improvement• new ideas implementable at each run• full specs not needed initially
> quality remain constants
automation
16
> definition: legacy & new system do the exact same thing:• all algorithms, functions, etc. produce 100% identical
results• data stored to database is identical “at the bit level”• UI does the exact same thing: field positions, function
keys / shortcuts, screen chaining
> consequence: • legacy and new system can run in parallel sharing the
same database• users are split between the 2 systems• they collaborate via the sharing of data• they can migrate individually
iso-functionality
(very) progressive migration
2-3months
DRDA
time
activity
Cobolon Cics
Javaon AS
100%
6-9months
• 100% of data on DB2• Cobol remains reference
Javabecomesreference
data
mig
ration
to
new
DB
mainframeswitched
off
CICS DB2
progressivemigration
no big bang = key success factor !
instantaneousway back
to old system
0%
tomcat
testing: legacy <> new system
Tomcat
CICS DB2
XMLscreendata
3270
XMLscreendata
HTML
COBOL
XMLscreendata
transcoder orrun-time or Cobol
bug fixes
(1)
(2)
(3)
(4)when (1) & (3) different
19
> original code structure must be preserved:• 1 Cobol program → 1 Java class• line by line transcoding• Cobol reading order is kept
> code restructuring (reverse analysis + MDA) is avoided:• original programmers don't recognize their code• java gurus don't like the generated code
> at least, original programmers are happy:• they recognize their code• their adaptation is minimized• they don't fear for their job → they adhere to project
code structure
TECHNOLOGY, SAMPLES
21
eranea software components
> eranea software components
> neaTranscoder: conversion tool
> neaRuntime: runtime framework
> neaWebServices: SOAP interface for legacy software
> neaWebTerminal: web client
> integrate: continuous integration, reporting, inventory & test management
22
neaTranscoder
> 100% automatic conversion of Cobol programs to Java classes for all Cobol features (copybooks, stored procs, sql, vsam files, batch, cics, etc.)
> initial semantics fully preserved: “down to bit level”
> generated Java code must be maintainable by humans
> generated Java remains procedural → on purpose to keep Cobol developers on board
> initial Cobol code becomes comments in Java → facilitate the transition of developers
> dead code detection and removal
sample transcoded Cobol in Java (1)
sample transcoded Cobol in Java (2)
transcoder plugin for Eclipse
26
neaRuntime (1)
> java runtime framework used by transcoded programs (batch, tp, ws, etc.)
> handles internal (16bits – UTF16) vs external representation (8bits – EBCDIC or ASCII)
> supports extended precision of Cobol: up to 31 digits
> 2-phase commit for SQL
> supports fixed or floating point operations with identical rounding when compared to mainframe
> support of all transactional Cobol / Cics functions (pseudo- of fully-conversational screen maps, volatile or persitent queues, async messaging, etc.)
> batch → separate “clean” JVM for each job step
• logical filenames
• internal <> external multi-threaded sorts
• fixed- or variable-length sequential files
27
neaRuntime (2)
> multiple containers possible:
• tomcat for simple transactional applications
• (clustered) JBoss for transactional high-end applications
• plain JVM for batch programs
• database manager (DB2, etc.) for stored procedures
• Eclipse for development / debugging
• JUnit for automated tests
> compatible with Java 1.6 or 1.7 on Sun JRE, OpenJDK and IBM J9
> easy scaling on multi-core x86 → multi-threading for transactional and batch
> optimized object management / caching for reduced (blocking) GC
28
neaWebTerminal> optimized Ajax web client to render legacy (3270, etc.) screens
> display is fully identical to original look & feel:
• all functions keys (PF1 → PF24) are emulated via Ajax
• all fields at same place
• navigation (Tab, etc.) fully identical
> supports composite 3270 multi-windows screens as well as data-only maps
> supports capture and replay of test scenarios
> authentication via LDAP
> support for portlet integration
neaTerminal : screenshot (1)
neaTerminal : screenshot (2)
31
integrate> inventory of legacy Cobol programs and generated Java classes
• advanced query capabilities
> continuous integration dashboard
• Cobol imports from source
• transcoding process
• build, package & deploy procedures
> non-regression tests management & monitoring:
• Cobol execution capture
• Java replay & comparison
• Database synchronization
• code coverage analysis: program & paragraph levels
> monitoring of application servers