80
1 Copyright © Capgemini 2016 – Internal use only. All Rights Reserved Presentation Title | Date Revitalisering av föråldrade system– är det möjligt? NFi Systemförvaltning 2016 Stockholm 2016-12-07 Joakim Lindbom CTO, Certified Chief Architect

Revitalisering av legacy - är det möjligt - Joakim Lindbom

Embed Size (px)

Citation preview

Page 1: Revitalisering av legacy - är det möjligt - Joakim Lindbom

1Copyright © Capgemini 2016 – Internal use only. All Rights

Reserved

Presentation Title | Date

Revitalisering av föråldrade system– är det möjligt?

NFi Systemförvaltning 2016Stockholm 2016-12-07

Joakim LindbomCTO, Certified Chief Architect

Page 2: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Be innovative!

Page 3: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Joakim Svensson, Cap Gemini, Division South - - Page 3

Who am I?

Jobbat inom Capgemini sedan 1985, IT-lösningar sedan jag var 13 år

Middleware, integration, arkitektur, mobilitet, IoT, Open Source, DevOps

Arkitekt sedan 20 årCertified Chief Architect

CTO för Capgemini Sverige under 7 år

Global expert modernisering av legacy

Page 4: Revitalisering av legacy - är det möjligt - Joakim Lindbom

ModerniseringRevitalisering

Möjligt?Önskvärt?

Page 5: Revitalisering av legacy - är det möjligt - Joakim Lindbom

We’ll se more change the next 5 years than the previous 100 in the auto

industry. 

Ian Robertson, Chairman of Rolls Royce

Chief of Sales and Marketing, BMW

Page 6: Revitalisering av legacy - är det möjligt - Joakim Lindbom
Page 7: Revitalisering av legacy - är det möjligt - Joakim Lindbom
Page 8: Revitalisering av legacy - är det möjligt - Joakim Lindbom
Page 9: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Mobile first…API

Page 10: Revitalisering av legacy - är det möjligt - Joakim Lindbom
Page 11: Revitalisering av legacy - är det möjligt - Joakim Lindbom

och glöm inte

Page 12: Revitalisering av legacy - är det möjligt - Joakim Lindbom

På väg mot #ZeroDayForever

Page 13: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Men ändå...

20 årInvestering

Optimering & polering

Page 14: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Men ändå...

Page 15: Revitalisering av legacy - är det möjligt - Joakim Lindbom

IT Legacy is #1 obstacle for innovation

Major corporations depend on core systems that- Are 15-20 years old- 3-4 persons know- Some staff is retired, some will be it within 4-5 years- Technology support is slow- Are somewhat documented- Have few formal test cases, but the staff know how to

test

Application LandscapeReport 2016

Page 16: Revitalisering av legacy - är det möjligt - Joakim Lindbom

IT Legacy is #1 obstacle for innovation

Major corporations depend on core systems that- Are 25-45 years old- 1-2 persons know- All key staff is retired, or will be it within 2-3 years- Technology support is gone- Are undocumented- Have no/few formal test cases

Application LandscapeReport 2016

Page 17: Revitalisering av legacy - är det möjligt - Joakim Lindbom
Page 18: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Techdebt

Page 19: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Erfarenheter

6 projekt / 11 år

Page 20: Revitalisering av legacy - är det möjligt - Joakim Lindbom

1Den stora

omskrivningen

eller

Hur halverar man transaktionskostnaden?

Page 21: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Bankgirot2 olika stordatorer

Ta bort en stordator, skriv om front-end i .NET

Skriv om produkt för produkt

Page 22: Revitalisering av legacy - är det möjligt - Joakim Lindbom

150 personer, 2 årExtrem påverkan

Code-freeze – right!

Krav? Finns i sjön...Arkitektur – bara systemdesign

Bara delta-dokumentation5-10 gånger längre tid!

Page 23: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Förändringar överallt

Test – process, miljö, data2.11 1.6

Städa – även produkter

Page 24: Revitalisering av legacy - är det möjligt - Joakim Lindbom

2En-dags migreringen

eller

“Uppskjut inte till morgondagen…”

Page 25: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Global retailerBra system!

Sista kunden kvar på operativsystemetKompilatorer, etc. - många, många releaser back

Hierarkisk databas – grymt snabb

Utmaning:Förklara långsiktig effekt av teknisk skuld

Page 26: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Big Bang genomregelmotor-driven totalmigrering

40 man-års förberedelse – 1 dags migreringCode freeze – 1 vecka (eller dag)

Utbilda, uppdatera personal

Test, test, test!

Page 27: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Databas-emulatorDL1 över DB2

Komplexitetsanalys

Page 28: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Test

Total regressionstest – 45 gångerStor automationsgrad

Öva cut-over fullskaligt 3 gånger

Page 29: Revitalisering av legacy - är det möjligt - Joakim Lindbom

3Rädda en misslyckad

migrering

eller

Hur byter man skelett?

Page 30: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Bra system!

Automatmigrerat SQL Windows C#

Right, det var ju smart....Emulering

Som innan, fast sämre

Page 31: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Lösning: Byt arkitektur, behåll koden

Business Rules Identification/ExtractFlow IdentificationModel generationCode generation

BRE - Business Rules ExtractionMDA - Model Driven Architecture

Page 32: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Build Phase

Design Creation of skeletal structure for

target architecture Fitting mined code in to target

architecture

Baseline CreationCreation of

Testing Baseline

Existing Application

Documentation

Migration Stream

Use case model

formulation

Reusable code Mining

Generate UML Model

Create target solution

structures

Static Code Analysis

Dynamic application

analysis

Design Develop SystemTesting

Re-Engineering Stream

Regression &Performance

Testing

Functionally 1:1 Migrated Application

System-migrering

Page 33: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Project overview

Separation of migration and new requirements Accelerated application rewrite using tool based reverse engineering Incremental delivery with intermediate UATs Using agile methodologies Offshore ration ~80% Prepare phase: September -November 2015 Build Phase: December 2015 – Feb 2017 46 FTE at peak

Forward engineering

Page 34: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Byt arkitektur

BL

DAL

PL

frmX

AS-IS model

TO-BE model

frmX1:1

BL

DA X

DAX

SP SP

SP View

Code behind, from frmXConsolidate db calls(Prepare + Check/Do)

Angular/TSMVC

GetCustomerInfo()

C#

C#

frmY

DAY

SP SP

View

SP SP

SP View

DB

Page 35: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Static code analysis

Page 36: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Dynamic execution analysis

Page 37: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Business rule linked to code

Page 38: Revitalisering av legacy - är det möjligt - Joakim Lindbom

UI migrering

1 2

3

4

Group boxes, usually inside sections.

Typically transferred in order below. If no other order or structure is specified.

Page 39: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Utmaningar

Kompetens – MDA, kodgenerering

Test – så klart

Arkitektur – designPatterns – exampel - ner på detaljnivå

Page 40: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Utmaningar

”Systemet skall fungera som innan.””Men hur vet vi vad systemet gör?”

”Det vet vi inte.”

”Vilka regler används i vilka länder?””Vet inte”

Page 41: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Utmaningar

Hur vet vi då när vi är färdiga?

Skapa omfattande dokumentationRegel

Regel vs. MarknadRegel vs. Flöde

Page 42: Revitalisering av legacy - är det möjligt - Joakim Lindbom

4Revitalisera död produkt

Page 43: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Beslutad nedläggning, men det gick inte

Ersättningssystem minst 5 år sena

Dubblad förändringsvolym50% Personal: 50 75

50% ”Allt annat”

Page 44: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Initial analysVad är egentligen problemet?

Organisation, WoW AgileDokumentation

Personal, kompetens, onboardingVerktyg, automation

KällkodArkitektur

Short – mid – long term

Page 45: Revitalisering av legacy - är det möjligt - Joakim Lindbom

1. Introduktion av ny personaltog uppemot ett år

Ingen (bra) dokumentationMonolitisk design

Mycket gammal, nästan-död kodKnöliga rutiner

Page 46: Revitalisering av legacy - är det möjligt - Joakim Lindbom

1. Introduktion av ny personal

Dokumentation - WikiStäda, simplifiera

RefaktoreraPlayground

Page 47: Revitalisering av legacy - är det möjligt - Joakim Lindbom

1. Introduktion av ny personal

Feature branching & kvalitetssäkring

Senior/junior + onshore/offshore

Coaching, Q-gateDesign, kvalité, standarder

Page 48: Revitalisering av legacy - är det möjligt - Joakim Lindbom

2. Kodkvalité

Oklar kvalitéSpretiga lösningar, överlappande mönster

3 olika dependency injection-mönster

Page 49: Revitalisering av legacy - är det möjligt - Joakim Lindbom

2. Kodkvalité

CAST, SonarQube, ReSharperBaseline

Bra kvalité enligt verktygenMen...

Vad är skillnaden mellan CreateOrder, CreateOrder2, CreateOrder3, CreateOrder4 och

CreateOrder5?

Page 50: Revitalisering av legacy - är det möjligt - Joakim Lindbom

3. Organisation & arbetssätt

Agila team + testteamOnshore/Offshore

Tunga Kommunikationsvägar, verktygAgil model ≈ vattenfall...

Page 51: Revitalisering av legacy - är det möjligt - Joakim Lindbom

3. Organisation & arbetssätt

X-funk team

Översyn verktygMail Bitbucket Server, Slack/Mattermost

Införa agila practises SAFeMen beställaren måste också med!

Page 52: Revitalisering av legacy - är det möjligt - Joakim Lindbom

4. Beroenden

Gammal plattform3:e parts & open source-verktyg

Page 53: Revitalisering av legacy - är det möjligt - Joakim Lindbom

5. Arkitektur

SOA - men i praktiken monolitisk

MEGAservice vs. microservice

Ett av grunderna för problem med skalning

Page 54: Revitalisering av legacy - är det möjligt - Joakim Lindbom

5. Arkitektur

Stegvis refaktorering

Städa, flytta uppenbart felplacerad kodBeroendeanalys

Gap-analys mot framtida capabilitiesSkapa API-ytor

Page 55: Revitalisering av legacy - är det möjligt - Joakim Lindbom

5. Arkitektur

Stegvis refaktorering

Nya områden byggs direkt som microservices

Refaktorering svårt sluta flytta kod Nyskrivning som microservices

Allt för mycket ”skräp” kommer med

Page 56: Revitalisering av legacy - är det möjligt - Joakim Lindbom

5. Arkitektur

Skapa erfarenhet i teamen

Från åratal av ”steady-state” till omfattande förändringar

Page 57: Revitalisering av legacy - är det möjligt - Joakim Lindbom

6. DevOps

Inför DevOps practisesDeployment Continous Deploy

Auto test

Page 58: Revitalisering av legacy - är det möjligt - Joakim Lindbom

5Hoppa 50 år

eller

“Uppskjut verkligen inte till morgondagen…”

Page 59: Revitalisering av legacy - är det möjligt - Joakim Lindbom

MyndighetBra system!!!

Världens första 4GL – från 60-taletPlattformen död sedan 15-20 år

Ingen utveckling, utbildning, rekrytering

Page 60: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Automatisk översättningSpråk, databas

Men arkitekturen är ju samma - emulering

Code freeze? – Law freeze!Regeringsförhandling

3 parallella förstudier

Page 61: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Misstag 1

Kräv referens på någon som gjort exakt samma= En möjlig leverantör

1:1-migrering – läsbarhet = klart tveksam

Page 62: Revitalisering av legacy - är det möjligt - Joakim Lindbom
Page 63: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Språk?C#

Page 64: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Misstag 2Fastpris

Omfattning Tid

Kvalité

Ni kan bara få två – vad väljer ni bort?

Page 65: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Configuration Management

Source, target and migration CM are similar but not the same

CM C

oord

inati

on &

Sta

keho

lder

Man

agem

ent

Source CM

Migration CM

Target Env CM

Secure Transfer

Secure Transfer

Updated Migration Scripts

Source CM

Migration CM

Target CM

Page 66: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Riskbaserad test

A Realistic Risk-Based test strategy is key

Comments

Manual testing helps build confidence in migration but has small coverage

Record/replay UX + Integration testing can be cost effective but is also brittle

Automatic code testing can be hard to achieve in legacy system

New automated tests are needed to provide full coverage

SU UX testing

Record/replay UX

testing

New UX tests

Record / replay Interface testing

New interface tests

Automatic Code Testing Manual Inspections New Code

Testing

1. Data Combination Test (DCoT)2. Elementary Comparison Test (ECT)3. Process Cycle Test (PCT)4. Real-Life Test (RLT)5. Semantic Test (SEM)6. Syntactic Test (SYN)7. Error Guessing (EG)8. Exploratory Testing (ET)9. Data Cycle Test (DCyT)10. Use Case Test (UCT)11. Decision table Test (DTT)

Page 67: Revitalisering av legacy - är det möjligt - Joakim Lindbom

6Byt (nästan) allt i små steg

eller

Hur byter man motor på hundratals plan – i luften?

Page 68: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Hårdvara, operativsystem – end of lifeVax, OpenVMS Linux

Ingen Big Bang OpenVMS + LinuxPascal, gammal databas

30 års optimering

Byta plattform, databas, programmeringsspråk

Page 69: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Städa, städa50-60% bort!

Del av störe programMassiv BD parallellt

Page 70: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Business Logic

100% Automation Fullymanual

Semi-Automatic

Pascal

C++

DCL

Python

OpenVMS Routines

Common routines(POSIX/

LSB)

Frameworks & Integrations

New solutions

E.g.Xrouter

Replaced Xrouter

Functionality

CDD

.h.hpp

RDO SQLMOD

Pro*C(11.g)

SQLMOD(RDB)

SQL Access Layer

Reports

Cognos &

Qlikview

Binary compatibility

between Pascal and C++

programs throughout the

migration

Some OpenVMS calls need attention

RDB to 11.gDatabase RDB to Oracle

Platform Open VMS to Linux

DECforms to HTML5 web interfaceHTML to HTML5 web interface

User Experience

Page 71: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Auto-migrering!

Regelmotor!

”Morphing, concept based translation”inte

rad för rad

Page 72: Revitalisering av legacy - är det möjligt - Joakim Lindbom

1 Automatic translation with rules engine

Rules Engine

Translation

Defect Handling 4 Defects cause by error in/missing rule

4 Quality issue identifiedIdentified Deviation

ChangedSource Code

OpenVMS

Production sources

New or changed rule 5

Test & Verification

SW Quality

3

MigratedSource Code

2

Linux

Compile and deploy

Ready for Migration? 7

Next iteration 6

Create Test Baseline

Update Testware according to changed Rules Engine

Process for maturing Rules Engine

Page 73: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Läsbar kod?

Page 74: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Test - sekvensering

Functional area

testing scope

Migration & testing scope

Interdependencies across no clear lines

a

T1 T3

M1

T2

b c

d e

M2

f

g

T4

Dependency Analyser

SMEs

Functional testing related to scope

Regression testing across system

Page 75: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Test & verifiering

Page 76: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Största förändringen någonsin

Ändra allt – testa alltUtan dokumentation

Utan testfallUtan automation

Utan miljöer/test-data management

Page 77: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Summering

Det går att revitalisera/moderniseraVar medveten om vad du får och inte fårMycket mer än t.ex. byta programmeringsspråkKan användas som hävstång – men var försiktig - ”Passa på” på rätt områdenVar ödmjuk – de flesta organisationer gör bara detta en gångΣ”bara” ≠ ”bara”

Page 78: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Contact

JoakimLindbomCTO | Certified Chief Architect

[email protected]

08-5368 39340708-166404

twitter: JoakimLindbom

http://www.slideshare.net/JoakimLindbomhttp://www.linkedin.com/in/joakimlindbom

VLOG Architecture Corner:https://www.youtube.com/playlist?list=PLrb_rbUWzApENbqc085Vk7Qj-amEOmvDN

Page 79: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Image sources, marked as OK to use commercially

https://upload.wikimedia.org/wikipedia/commons/8/8b/Buck_Mountain_Grand_Teton_NP1.jpghttps://upload.wikimedia.org/wikipedia/commons/d/de/Eisklettern_kl_engstligenfall.jpghttps://c1.staticflickr.com/1/1/1118807_a751d65ba5_z.jpg?zz=1https://upload.wikimedia.org/wikipedia/commons/4/4f/Eternal_clock.jpghttps://c1.staticflickr.com/9/8062/8189938256_2a683d2334_z.jpghttps://upload.wikimedia.org/wikipedia/commons/8/85/Git_branches_example.pnghttps://upload.wikimedia.org/wikipedia/commons/9/99/Highway_at_night_slow_shutter_speed_photography_02.jpghttps://c2.staticflickr.com/6/5058/5490790304_dc3d7c2b91_z.jpghttp://www.dailymail.co.uk/tvshowbiz/article-1176568/Andrew-Sachs-thanks-Jonathan-Ross-Russell-Brand-boosting-career.html https://upload.wikimedia.org/wikipedia/commons/8/8b/CERN_Server.jpg http://www.manufacturing-operations-management.com/manufacturing/2014/10/smart-manufacturing-needs-a-real-time-integrated-enterprise.html http://www.3ders.org/images/Dizingof-math-arts-3d-printing-2.png https://upload.wikimedia.org/wikipedia/commons/8/8a/Long_tail.svg

Page 80: Revitalisering av legacy - är det möjligt - Joakim Lindbom

Image sources, marked as OK to use commercially

https://upload.wikimedia.org/wikipedia/commons/6/61/Irish_jaunting_car,_ca_1890-1900.jpghttps://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Lego_dimensions.svg/2000px-Lego_dimensions.svg.png https://upload.wikimedia.org/wikipedia/commons/1/1f/Feel_the_music.jpg https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/BestBeforeDate.png/640px-BestBeforeDate.png https://images-na.ssl-images-amazon.com/images/I/51dTFVDHRbL.jpg