SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
AUTOMATED
MIGRATION TO JAVA
Key success factors for large business applications




Didier Durand & Pierre-Jean Distcheid
eranea (Lausanne, CH)
submission #138
agenda
> background
> starting point
> target                    context
> benefits
> technology

> choose & change target
> process automation
> iso-functionality         key success factors
> progressive migration
> testing
> code structure

> samples & demonstration                         2
CONTEXT
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
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
target: x86 (1)




                                                             x86 as powerful
                                                               as anybody

    x86 > 2/3 of total market !



      x86 architecture used by Amazon, Google, Facebook, Twitter
                                                                          6
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
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
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
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
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
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
KEY SUCCESS FACTORS
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
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
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
(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 !
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
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
TECHNOLOGY, SAMPLES
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


                                                                   21
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
sample transcoded Cobol in Java (1)
sample transcoded Cobol in Java (2)
transcoder plugin for Eclipse
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
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
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
neaTerminal : screenshot (1)
neaTerminal : screenshot (2)
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                               31
Merci !


eranea                     http://www.eranea.com

Didier Durand
didier.durand@eranea.com


Pierre-Jean Ditscheid
pjditscheid@eranea.com

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databases
ArangoDB Database
 
Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...
Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...
Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...
Majid Hajibaba
 

Was ist angesagt? (20)

Aws
AwsAws
Aws
 
Introduction to column oriented databases
Introduction to column oriented databasesIntroduction to column oriented databases
Introduction to column oriented databases
 
Google cloud platform introduction
Google cloud platform introductionGoogle cloud platform introduction
Google cloud platform introduction
 
Security & Compliance in AWS
Security & Compliance in AWSSecurity & Compliance in AWS
Security & Compliance in AWS
 
Hybrid- and Multi-Cloud by design - IBM Cloud and your journey to Cloud
Hybrid- and Multi-Cloud by design - IBM Cloud and your journey to CloudHybrid- and Multi-Cloud by design - IBM Cloud and your journey to Cloud
Hybrid- and Multi-Cloud by design - IBM Cloud and your journey to Cloud
 
Introduction to virtualization
Introduction to virtualizationIntroduction to virtualization
Introduction to virtualization
 
Introduction to AWS Lambda and Serverless Applications
Introduction to AWS Lambda and Serverless ApplicationsIntroduction to AWS Lambda and Serverless Applications
Introduction to AWS Lambda and Serverless Applications
 
Google cloud
Google cloudGoogle cloud
Google cloud
 
Deep Dive on AWS Lambda
Deep Dive on AWS LambdaDeep Dive on AWS Lambda
Deep Dive on AWS Lambda
 
Az 104 session 8 azure monitoring
Az 104 session 8 azure monitoringAz 104 session 8 azure monitoring
Az 104 session 8 azure monitoring
 
Server virtualization
Server virtualizationServer virtualization
Server virtualization
 
Cloud comparison - AWS vs Azure vs Google
Cloud comparison - AWS vs Azure vs GoogleCloud comparison - AWS vs Azure vs Google
Cloud comparison - AWS vs Azure vs Google
 
Serverless Computing in Azure
Serverless Computing in AzureServerless Computing in Azure
Serverless Computing in Azure
 
Function as a Service
Function as a ServiceFunction as a Service
Function as a Service
 
Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...
Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...
Cloud Computing Principles and Paradigms: 3 enriching the integration as a se...
 
Monitoring real-life Azure applications: When to use what and why
Monitoring real-life Azure applications: When to use what and whyMonitoring real-life Azure applications: When to use what and why
Monitoring real-life Azure applications: When to use what and why
 
Azure WAF
Azure WAFAzure WAF
Azure WAF
 
ServerlessConf 2018 Keynote - Debunking Serverless Myths
ServerlessConf 2018 Keynote - Debunking Serverless MythsServerlessConf 2018 Keynote - Debunking Serverless Myths
ServerlessConf 2018 Keynote - Debunking Serverless Myths
 
How Mature is Your Infrastructure?
How Mature is Your Infrastructure?How Mature is Your Infrastructure?
How Mature is Your Infrastructure?
 
Introduction to CloudStack
Introduction to CloudStack Introduction to CloudStack
Introduction to CloudStack
 

Andere mochten auch

Andere mochten auch (7)

Eranea : global presentation of solution
Eranea : global presentation of solutionEranea : global presentation of solution
Eranea : global presentation of solution
 
Transforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovationTransforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovation
 
Eranea brochure : introduction to solution for mainframe migration / transfor...
Eranea brochure : introduction to solution for mainframe migration / transfor...Eranea brochure : introduction to solution for mainframe migration / transfor...
Eranea brochure : introduction to solution for mainframe migration / transfor...
 
2014 01-23-eranea-apalia-private-cloud
2014 01-23-eranea-apalia-private-cloud2014 01-23-eranea-apalia-private-cloud
2014 01-23-eranea-apalia-private-cloud
 
Migrating legacy applications (Cobol, PL/I) to Java on z/OS
Migrating legacy applications (Cobol, PL/I) to Java on z/OSMigrating legacy applications (Cobol, PL/I) to Java on z/OS
Migrating legacy applications (Cobol, PL/I) to Java on z/OS
 
Transforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovationTransforming mission-critical applications on mainframes for innovation
Transforming mission-critical applications on mainframes for innovation
 
Eranea's solution and technology for mainframe migration / transformation : d...
Eranea's solution and technology for mainframe migration / transformation : d...Eranea's solution and technology for mainframe migration / transformation : d...
Eranea's solution and technology for mainframe migration / transformation : d...
 

Ähnlich wie 2012 06-15-jazoon12-sub138-eranea-large-apps-migration

Xen summit 2010 extending xen into embedded
Xen summit 2010 extending xen into embeddedXen summit 2010 extending xen into embedded
Xen summit 2010 extending xen into embedded
The Linux Foundation
 
WS-* Specifications Update 2007
WS-* Specifications Update 2007WS-* Specifications Update 2007
WS-* Specifications Update 2007
Jorgen Thelin
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
Yoojoo Jang
 
Operating the Hyperscale Cloud
Operating the Hyperscale CloudOperating the Hyperscale Cloud
Operating the Hyperscale Cloud
Open Stack
 
下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final
csdnmobile
 
dotnet_remoting
dotnet_remotingdotnet_remoting
dotnet_remoting
OPENLANE
 
Singularity Rethinking The Software Stack
Singularity    Rethinking The  Software  StackSingularity    Rethinking The  Software  Stack
Singularity Rethinking The Software Stack
alanocu
 
Choosing Your Windows Azure Platform Strategy
Choosing Your Windows Azure Platform StrategyChoosing Your Windows Azure Platform Strategy
Choosing Your Windows Azure Platform Strategy
drmarcustillett
 

Ähnlich wie 2012 06-15-jazoon12-sub138-eranea-large-apps-migration (20)

Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
 
Xen summit 2010 extending xen into embedded
Xen summit 2010 extending xen into embeddedXen summit 2010 extending xen into embedded
Xen summit 2010 extending xen into embedded
 
Windows Azure For Architects
Windows Azure For ArchitectsWindows Azure For Architects
Windows Azure For Architects
 
eXtremeDB FE
eXtremeDB FEeXtremeDB FE
eXtremeDB FE
 
21st Century SOA
21st Century SOA21st Century SOA
21st Century SOA
 
Linux on System z Update: Current & Future Linux on System z Technology
Linux on System z Update: Current & Future Linux on System z TechnologyLinux on System z Update: Current & Future Linux on System z Technology
Linux on System z Update: Current & Future Linux on System z Technology
 
Pandora FMS - Technical presentation
Pandora FMS - Technical presentationPandora FMS - Technical presentation
Pandora FMS - Technical presentation
 
WS-* Specifications Update 2007
WS-* Specifications Update 2007WS-* Specifications Update 2007
WS-* Specifications Update 2007
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
 
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
The sFlow Standard: Scalable, Unified Monitoring of Networks, Systems and App...
 
Operating the Hyperscale Cloud
Operating the Hyperscale CloudOperating the Hyperscale Cloud
Operating the Hyperscale Cloud
 
下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final
 
21st Century SOA
21st Century SOA21st Century SOA
21st Century SOA
 
What's New in RHEL 6 for Linux on System z?
What's New in RHEL 6 for Linux on System z?What's New in RHEL 6 for Linux on System z?
What's New in RHEL 6 for Linux on System z?
 
Complex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBaseComplex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBase
 
dotnet_remoting
dotnet_remotingdotnet_remoting
dotnet_remoting
 
Singularity Rethinking The Software Stack
Singularity    Rethinking The  Software  StackSingularity    Rethinking The  Software  Stack
Singularity Rethinking The Software Stack
 
Deep Dive into WinRT
Deep Dive into WinRTDeep Dive into WinRT
Deep Dive into WinRT
 
Choosing Your Windows Azure Platform Strategy
Choosing Your Windows Azure Platform StrategyChoosing Your Windows Azure Platform Strategy
Choosing Your Windows Azure Platform Strategy
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

2012 06-15-jazoon12-sub138-eranea-large-apps-migration

  • 1. AUTOMATED MIGRATION TO JAVA Key success factors for large business applications Didier Durand & Pierre-Jean Distcheid eranea (Lausanne, CH) submission #138
  • 2. agenda > background > starting point > target context > benefits > technology > choose & change target > process automation > iso-functionality key success factors > progressive migration > testing > code structure > samples & demonstration 2
  • 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
  • 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 21
  • 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
  • 23. sample transcoded Cobol in Java (1)
  • 24. sample transcoded Cobol in Java (2)
  • 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
  • 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 31
  • 32. Merci ! eranea http://www.eranea.com Didier Durand didier.durand@eranea.com Pierre-Jean Ditscheid pjditscheid@eranea.com