SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
(Schon wieder) Legacy - und nun?
(Schon wieder) Legacy - und nun?
(Schon wieder) Legacy - und nun?
Quelle: Google Trends
(Schon wieder) Legacy - und nun?
Quelle: Google Trends
(Schon wieder) Legacy - und nun?
Haben wir(mittlerweile)
im Griff!
(Schon wieder) Legacy - und nun?
Unser Stack!
Quelle: Google Trends
(Schon wieder) Legacy - und nun?
Und der Code?
(Schon wieder) Legacy - und nun?
304 //Component initialization
305 private void jbInit() {
... btnCustReviewPrev.setText("<< " + res.getString("..."));
btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0));
btnCustReviewPrev.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// ... business code
}
});
btnCustReviewNext.setText(res.getString("...") + " >>");
...
1053 setTabOrder();
1054 }
This is so 199x!
(Schon wieder) Legacy - und nun?
304 //Component initialization
305 private void jbInit() {
... btnCustReviewPrev.setText("<< " + res.getString("..."));
btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0));
btnCustReviewPrev.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// ... business code
}
});
btnCustReviewNext.setText(res.getString("...") + " >>");
...
1053 setTabOrder();
1054 }
This is so 199x!
(Schon wieder) Legacy - und nun?
Kann uns(nicht mehr)
passieren!
(Schon wieder) Legacy - und nun?
Also alles gut!
(Schon wieder) Legacy - und nun?
Nicht ganz!
(Schon wieder) Legacy - und nun?
Wir müssen damit leben, dass
kommen und gehen.
(Und manchmal schneller „Old-School“ sind als man glaubt)
(Und oftmals schneller gehen als man glaubt)
Technologien, Frameworks und IT-Konzepte
(Schon wieder) Legacy - und nun?
Wir müssen auch damit leben, dass
die Umsetzung von wartbarer Software ermöglichen
moderne Technologien, Frameworks und IT-Konzepte
mit Altlasten a.k.a. Legacy kämpfen.
und wir, die Entwicklung, regelmäßig in „kurzer Zeit“
(Die wir oft selbst zu verantworten haben)
(Schon wieder) Legacy - und nun?
Pro Tipp:
Da hinten ist ein dreiköpfiger Affe!
(Schon wieder) Legacy - und nun?
Pro Tipp:
Eine Herausforderung!
(Schon wieder) Legacy - und nun?
Managing Legacy
(Schon wieder) Legacy - und nun?
Was ist Legacy?
(Schon wieder) Legacy - und nun?
Quelle: www.boundless.com
(Schon wieder) Legacy - und nun?
Quelle: assets.thoughtworks.com
(Schon wieder) Legacy - und nun?
The bottom line:
As soon as we start we are legacy.
(Schon wieder) Legacy - und nun?
Currently toxic
Client-Frameworks
Web-Frameworks
(System Interaktion)
(System Architektur)
(Schon wieder) Legacy - und nun?
Safe for now
Core Enterprise Stack
Core Enterprise Integration
Datenzugriff
Datenhaltung
(Schon wieder) Legacy - und nun?
Managing Legacy
=
Managing Technology Lifecycle
(Schon wieder) Legacy - und nun?
Und der Code?
(Schon wieder) Legacy - und nun?
304 //Component initialization
305 private void jbInit() {
... btnCustReviewPrev.setText("<< " + res.getString("..."));
btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0));
btnCustReviewPrev.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// ... business code
}
});
btnCustReviewNext.setText(res.getString("...") + " >>");
...
1053 setTabOrder();
1054 }
This is not just 199x!
(Schon wieder) Legacy - und nun?
// As seen in JSF / Primefaces
public void changeListener(TabChangeEvent e) {
// do something...
RequestContext
.getCurrentInstance()
.execute("PF('speicherdialog')
.show()");
}
This is not just 199x!
(Schon wieder) Legacy - und nun?
// As seen in Wicket
Button b = new Button("Calculate");
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
BigDecimal amount = ...;
BigDecimal itemPrice = ...;
BigDecimal price = amount.multiply(itemPrice);
}
});
This is not just 199x!
(Schon wieder) Legacy - und nun?
// As seen in (former) EJB / non-OR Applications – not a „remote“ API
@Entity
public class CustomerEntity { ... }
public class Customer { ... }
public class CustomerService {
@Inject private CustomerRepository repo;
public Customer find(...) {
CustomerEntity cus = repo.find(...);
Customer ret = new Customer();
ret.setFirstName(cus.getFirstName());
...
return ret;
}
}
This is not just 199x!
(Schon wieder) Legacy - und nun?
// As seen in JPA Repositories
public List<Order> findNewOrders() {
return em.createQuery("select order from Order order " +
"join fetch order.customer c " +
"join fetch c.adresses a " +
"where ... “
.resultList();
}
This is not just 199x!
(Schon wieder) Legacy - und nun?
Managing Legacy
=
Managing Technical Debt
(Schon wieder) Legacy - und nun?
Managing
Technology Lifecycle
and
Technical Debt
Managing Legacy
•  Technologiebewertung
•  in Bezug auf Aktualität und Veränderung
•  Anwendungsbewertung
•  in Bezug auf Relevanz und Changes
•  in Bezug auf „Assets“
•  Architektur- und Code-Bewertung
•  in Bezug auf Abhängigkeiten und Qualität
•  in Bezug auf Adaptionsgeschwindigkeit
•  in Bezug auf „Assets“
(Schon wieder) Legacy - und nun?
Managing Legacy - Assets
•  Daten und Datenzugriff
•  Business-Logik und Business-Regeln
•  UI - Core Widgets
•  UI - Formular-Layout
•  UI - Validation und Validation-Regeln
•  UI-nahe Logik
•  UI - Allgemeiner Screenflow
(Schon wieder) Legacy - und nun?
(Schon wieder) Legacy - und nun?
Managing Legacy - Bewertung...
Business Value
InnovationRateRiskRisk
(Schon wieder) Legacy - und nun?
Managing Legacy - Bewertung...
Business Value
ChangesRiskRisk
(Schon wieder) Legacy - und nun?
Managing Legacy - Bewertung...
Business Value
SizeRiskRisk
(Schon wieder) Legacy - und nun?
And last but not least
(Schon wieder) Legacy - und nun?
?
(Schon wieder) Legacy - und nun?
(Schon wieder) Legacy - und nun?
Accept the challenge
(Schon wieder) Legacy - und nun?
Fight for it!(Using Assets and KPIs)
(Schon wieder) Legacy - und nun?
Simplify
(Schon wieder) Legacy - und nun?
Monitor
(Schon wieder) Legacy - und nun?
(Schon wieder) Legacy - und nun?
FRAGEN
? ? ?
(Schon wieder) Legacy - und nun?
KONTAKT
Jens Schumann
Geschäftsführer, CTO
jens.schumann@openknowledge.de
+49 441 4082 - 102
OFFENKUNDIGGUT
(Schon wieder) Legacy - und nun?
(Schon wieder) Legacy - und nun?
Bildnachweis
Folie 1,4,12,13,16, 21, 22, 23, 38, 44, 45 - http://pixabay.com
Folie 9 - Wikipedia (https://commons.wikimedia.org/wiki/File:AIM_in_clean_room.jpg)
Folie 38 - http://workcompass.com
Folie 18 - https://www.boundless.com/management/textbooks/boundless-management-textbook/organizational-culture-and-
innovation-4/technology-and-innovation-37/the-technology-life-cycle-202-3486/
Icon designed by “Elegant Themes”, from www.flaticon.com

Weitere ähnliche Inhalte

Ähnlich wie (Schon wieder) Legacy – und nun?

Mögen die Tests mit dir sein
Mögen die Tests mit dir seinMögen die Tests mit dir sein
Mögen die Tests mit dir seincodepitbull
 
Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]Markus Harrer
 
2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIYDaniel Fisher
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayMario-Leander Reimer
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesQAware GmbH
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...GFU Cyrus AG
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsGregor Biswanger
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEEBenjamin Schmid
 
Hands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und StolperfallenHands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und Stolperfalleninovex GmbH
 
MySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtMySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtKaj Arnö
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsSebastian Sanitz
 
SharePoint Testing mit Visual Studio 2012
SharePoint Testing mit Visual Studio 2012SharePoint Testing mit Visual Studio 2012
SharePoint Testing mit Visual Studio 2012daniellindemann
 
Web Data Management Final Presentation
Web Data Management Final PresentationWeb Data Management Final Presentation
Web Data Management Final PresentationMarcel Neidinger
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungenmolily
 
DWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementDWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementMarc Müller
 

Ähnlich wie (Schon wieder) Legacy – und nun? (20)

Mögen die Tests mit dir sein
Mögen die Tests mit dir seinMögen die Tests mit dir sein
Mögen die Tests mit dir sein
 
Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]
 
2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und Kubernetes
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
 
20101117 activiti
20101117 activiti20101117 activiti
20101117 activiti
 
Learnings aus einem Magento-Enterprise-Projekt
Learnings aus einem Magento-Enterprise-ProjektLearnings aus einem Magento-Enterprise-Projekt
Learnings aus einem Magento-Enterprise-Projekt
 
Hands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und StolperfallenHands-on Hystrix - Best Practices und Stolperfallen
Hands-on Hystrix - Best Practices und Stolperfallen
 
MySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtMySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni Frankfurt
 
Dokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte AkzeptanztestsDokumentation durch automatisierte Akzeptanztests
Dokumentation durch automatisierte Akzeptanztests
 
SharePoint Testing mit Visual Studio 2012
SharePoint Testing mit Visual Studio 2012SharePoint Testing mit Visual Studio 2012
SharePoint Testing mit Visual Studio 2012
 
Web Data Management Final Presentation
Web Data Management Final PresentationWeb Data Management Final Presentation
Web Data Management Final Presentation
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
 
Real Life TDD
Real Life TDDReal Life TDD
Real Life TDD
 
DWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementDWX 2016 -Build and Release Management
DWX 2016 -Build and Release Management
 

Mehr von OPEN KNOWLEDGE GmbH

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIOPEN KNOWLEDGE GmbH
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudOPEN KNOWLEDGE GmbH
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationOPEN KNOWLEDGE GmbH
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. OPEN KNOWLEDGE GmbH
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoOPEN KNOWLEDGE GmbH
 
Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenOPEN KNOWLEDGE GmbH
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsOPEN KNOWLEDGE GmbH
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeOPEN KNOWLEDGE GmbH
 
Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten SystemenOPEN KNOWLEDGE GmbH
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingOPEN KNOWLEDGE GmbH
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusOPEN KNOWLEDGE GmbH
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!OPEN KNOWLEDGE GmbH
 

Mehr von OPEN KNOWLEDGE GmbH (20)

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
 
Nie wieder Log-Files!
Nie wieder Log-Files!Nie wieder Log-Files!
Nie wieder Log-Files!
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud.
 
API Expand Contract
API Expand ContractAPI Expand Contract
API Expand Contract
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
 
Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten Architekturen
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.js
 
KI und Architektur
KI und ArchitekturKI und Architektur
KI und Architektur
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale Netze
 
Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten Systemen
 
Business-Mehrwert durch KI
Business-Mehrwert durch KIBusiness-Mehrwert durch KI
Business-Mehrwert durch KI
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!
 

(Schon wieder) Legacy – und nun?

  • 1. (Schon wieder) Legacy - und nun? (Schon wieder) Legacy - und nun?
  • 2. (Schon wieder) Legacy - und nun? Quelle: Google Trends
  • 3. (Schon wieder) Legacy - und nun? Quelle: Google Trends
  • 4. (Schon wieder) Legacy - und nun? Haben wir(mittlerweile) im Griff!
  • 5. (Schon wieder) Legacy - und nun? Unser Stack! Quelle: Google Trends
  • 6. (Schon wieder) Legacy - und nun? Und der Code?
  • 7. (Schon wieder) Legacy - und nun? 304 //Component initialization 305 private void jbInit() { ... btnCustReviewPrev.setText("<< " + res.getString("...")); btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0)); btnCustReviewPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ... business code } }); btnCustReviewNext.setText(res.getString("...") + " >>"); ... 1053 setTabOrder(); 1054 } This is so 199x!
  • 8. (Schon wieder) Legacy - und nun? 304 //Component initialization 305 private void jbInit() { ... btnCustReviewPrev.setText("<< " + res.getString("...")); btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0)); btnCustReviewPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ... business code } }); btnCustReviewNext.setText(res.getString("...") + " >>"); ... 1053 setTabOrder(); 1054 } This is so 199x!
  • 9. (Schon wieder) Legacy - und nun? Kann uns(nicht mehr) passieren!
  • 10. (Schon wieder) Legacy - und nun? Also alles gut!
  • 11. (Schon wieder) Legacy - und nun? Nicht ganz!
  • 12. (Schon wieder) Legacy - und nun? Wir müssen damit leben, dass kommen und gehen. (Und manchmal schneller „Old-School“ sind als man glaubt) (Und oftmals schneller gehen als man glaubt) Technologien, Frameworks und IT-Konzepte
  • 13. (Schon wieder) Legacy - und nun? Wir müssen auch damit leben, dass die Umsetzung von wartbarer Software ermöglichen moderne Technologien, Frameworks und IT-Konzepte mit Altlasten a.k.a. Legacy kämpfen. und wir, die Entwicklung, regelmäßig in „kurzer Zeit“ (Die wir oft selbst zu verantworten haben)
  • 14. (Schon wieder) Legacy - und nun? Pro Tipp: Da hinten ist ein dreiköpfiger Affe!
  • 15. (Schon wieder) Legacy - und nun? Pro Tipp: Eine Herausforderung!
  • 16. (Schon wieder) Legacy - und nun? Managing Legacy
  • 17. (Schon wieder) Legacy - und nun? Was ist Legacy?
  • 18. (Schon wieder) Legacy - und nun? Quelle: www.boundless.com
  • 19. (Schon wieder) Legacy - und nun? Quelle: assets.thoughtworks.com
  • 20. (Schon wieder) Legacy - und nun? The bottom line: As soon as we start we are legacy.
  • 21. (Schon wieder) Legacy - und nun? Currently toxic Client-Frameworks Web-Frameworks (System Interaktion) (System Architektur)
  • 22. (Schon wieder) Legacy - und nun? Safe for now Core Enterprise Stack Core Enterprise Integration Datenzugriff Datenhaltung
  • 23. (Schon wieder) Legacy - und nun? Managing Legacy = Managing Technology Lifecycle
  • 24. (Schon wieder) Legacy - und nun? Und der Code?
  • 25. (Schon wieder) Legacy - und nun? 304 //Component initialization 305 private void jbInit() { ... btnCustReviewPrev.setText("<< " + res.getString("...")); btnCustReviewPrev.setMargin(new Insets(2, 0, 2, 0)); btnCustReviewPrev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ... business code } }); btnCustReviewNext.setText(res.getString("...") + " >>"); ... 1053 setTabOrder(); 1054 } This is not just 199x!
  • 26. (Schon wieder) Legacy - und nun? // As seen in JSF / Primefaces public void changeListener(TabChangeEvent e) { // do something... RequestContext .getCurrentInstance() .execute("PF('speicherdialog') .show()"); } This is not just 199x!
  • 27. (Schon wieder) Legacy - und nun? // As seen in Wicket Button b = new Button("Calculate"); b.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { BigDecimal amount = ...; BigDecimal itemPrice = ...; BigDecimal price = amount.multiply(itemPrice); } }); This is not just 199x!
  • 28. (Schon wieder) Legacy - und nun? // As seen in (former) EJB / non-OR Applications – not a „remote“ API @Entity public class CustomerEntity { ... } public class Customer { ... } public class CustomerService { @Inject private CustomerRepository repo; public Customer find(...) { CustomerEntity cus = repo.find(...); Customer ret = new Customer(); ret.setFirstName(cus.getFirstName()); ... return ret; } } This is not just 199x!
  • 29. (Schon wieder) Legacy - und nun? // As seen in JPA Repositories public List<Order> findNewOrders() { return em.createQuery("select order from Order order " + "join fetch order.customer c " + "join fetch c.adresses a " + "where ... “ .resultList(); } This is not just 199x!
  • 30. (Schon wieder) Legacy - und nun? Managing Legacy = Managing Technical Debt
  • 31. (Schon wieder) Legacy - und nun? Managing Technology Lifecycle and Technical Debt
  • 32. Managing Legacy •  Technologiebewertung •  in Bezug auf Aktualität und Veränderung •  Anwendungsbewertung •  in Bezug auf Relevanz und Changes •  in Bezug auf „Assets“ •  Architektur- und Code-Bewertung •  in Bezug auf Abhängigkeiten und Qualität •  in Bezug auf Adaptionsgeschwindigkeit •  in Bezug auf „Assets“ (Schon wieder) Legacy - und nun?
  • 33. Managing Legacy - Assets •  Daten und Datenzugriff •  Business-Logik und Business-Regeln •  UI - Core Widgets •  UI - Formular-Layout •  UI - Validation und Validation-Regeln •  UI-nahe Logik •  UI - Allgemeiner Screenflow (Schon wieder) Legacy - und nun?
  • 34. (Schon wieder) Legacy - und nun? Managing Legacy - Bewertung... Business Value InnovationRateRiskRisk
  • 35. (Schon wieder) Legacy - und nun? Managing Legacy - Bewertung... Business Value ChangesRiskRisk
  • 36. (Schon wieder) Legacy - und nun? Managing Legacy - Bewertung... Business Value SizeRiskRisk
  • 37. (Schon wieder) Legacy - und nun? And last but not least
  • 38. (Schon wieder) Legacy - und nun?
  • 40. (Schon wieder) Legacy - und nun? Accept the challenge
  • 41. (Schon wieder) Legacy - und nun? Fight for it!(Using Assets and KPIs)
  • 42. (Schon wieder) Legacy - und nun? Simplify
  • 43. (Schon wieder) Legacy - und nun? Monitor
  • 44. (Schon wieder) Legacy - und nun?
  • 45. (Schon wieder) Legacy - und nun?
  • 46. FRAGEN ? ? ? (Schon wieder) Legacy - und nun?
  • 47. KONTAKT Jens Schumann Geschäftsführer, CTO jens.schumann@openknowledge.de +49 441 4082 - 102 OFFENKUNDIGGUT (Schon wieder) Legacy - und nun?
  • 48. (Schon wieder) Legacy - und nun? Bildnachweis Folie 1,4,12,13,16, 21, 22, 23, 38, 44, 45 - http://pixabay.com Folie 9 - Wikipedia (https://commons.wikimedia.org/wiki/File:AIM_in_clean_room.jpg) Folie 38 - http://workcompass.com Folie 18 - https://www.boundless.com/management/textbooks/boundless-management-textbook/organizational-culture-and- innovation-4/technology-and-innovation-37/the-technology-life-cycle-202-3486/ Icon designed by “Elegant Themes”, from www.flaticon.com