4. background
> 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
4
5. starting point
> 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
5
6. target: x86 (1)
x86 as powerful
as anybody
x86 > 2/3 of total market !
x86 architecture used by Amazon, Google, Facebook, Twitter
6
7. target: linux (2)
worldwide server market 1. linux is growing
(roll-outs, subscriptions, shipments)
fast
2. proprietary OS
disappear
lots
of
3. linux references:
office automation London Stock
servers
Exchange, NYSE,
Euronext, etc.
4. for the “3S” :
Speed, Stability,
Security
7
8. benefits (1): massive savings
100% = approx. 5 millions CHF/an
100%
1. software too costly →
3rd party competitive environment
90%
software required for base + 3rd parties
80%
70%
2. switch to OSS :
60%
50%
IBM software approx -90 % on software
(z/OS, Cics, DB2, etc..)
costs (70%)
40%
30%
leverage for h/w switch
20% Peripherals
(disks, tapes, etc.)
10% 3. total savings
Cpu
x86 h/w + OSS s/w → 90%
8
9. benefits (2): modernization
> 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
9
10. benefits (3): modernization
> 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
10
11. technology (1)
Cobol NeaTranscoder
pgm
Cobol Lexical Syntax Semantics Code
copy Analysis Analysis Analysis Generation
BMS
desc
NeaRuntime
Java XML
Program Screen Online
(incl SQL)
“Cobol” support
SQL support
SOA
Internal
DBMS Object Display support
implementation
CICS Emulation
Tracing / logging
Batch
11
12. technology (2)
legacy application
+
database
1. automated synchro
with
traceability & reporting
CI CI
engine engine
Internet
AS sources DB sources DB
(JBoss) repository ERIT 2. copy (partial) repository ERIT
of legacy assets
Integrate Integrate
3. replication
of
client processes & systems eranea
VPN / VPC
14. choose & change target
full
mutation
ISV derived
appl. DB
solution level 4
on Linux
Java AS
level 3
on Linux
Cobol → Java
level 2 CICS → Java AS
others : identical
different steps
original Cobol → Java of
level 1
appl. others : identical single project
<>
different projects
14
15. automation
> 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
15
16. iso-functionality
> 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
16
17. (very) progressive migration
Java
becomes
tomcat
activity reference
• 100% of data on DB2
• Cobol remains reference
100%
migration to
Java
DRDA
new DB
instantaneous progressive on AS
data
way back
migration
to old system
Cobol
on Cics
CICS DB2
0% time
6-9 2-3
months months
mainframe
switched
off
no big bang = key success factor !
18. testing: legacy <> new system
3270
CICS DB2 COBOL
(1)
XML transcoder or
screen run-time or Cobol
data bug fixes
(2)
(4)
XML
screen when (1) & (3) different
data XML
screen (3)
data
Tomcat
HTML
19. code structure
> 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 19
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 22
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 26
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
27
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 28