Klicken Sie gleich auf nachfolgenden Link um zur Webcast-Aufzeichnung zu gelangen: http://cpwr.it/EQNYh - Herr Roman Schaller, Performance Engineer bei Bison, zeigt wie eine Performance Offensive in der Praxis erfolgreich umgesetzt wurde. Es wird auf folgende Fragestellungen eingegangen: Warum weichen Produktions- und Testumgebung so stark voneinander ab? Warum kann das Applikationsverhalten im Testsystem nur schwer dargestellt werden? Welche Auswirkung hat Performance auf geschäftskritische Anwendungen? Was genau sind die Performance Hot-Spots und wie optimieren wir diese möglichst effizient?
REI: Evolving performance engineering for the move to cloud, microservices, c...
Kritische app performance erfolgreich optimieren mit Bison
1. Kritische App-Performance
erfolgreich optimieren
Live Webcast mit Bison - 04.12.2014
Roman Schaller, Performance
Engineer - Bison
Christian Grimm, Sr Solution
Consultant - Dynatrace
1 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
2. Überlebenstraining …
156 / 80
8 / 10
1
… App Funktionalität muss auf
156 mobilen Endgeräten
getestet werden um 80%
des Marktes abzuzdecken
Komplexität
… 8 von 10 $ IT Ausgaben
… 2 von 10 $ Innovation
„DEAD MONEY“
Innovationen
… 1 Mio $ Infrastruktur Investment
Vermutungen 1% performance increase
2 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
3. Steigende Komplexität & Erwartungen
Time
3 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
5. Visibilitätslücke
Time
• Schnelle Apps / Versionen
• Innovation
• Identifizieren / Priorisieren
5 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
6. Zuviele Vermutungen …
Time
• Schnelle Apps / Versionen
• Innovation
• Identifizieren / Priorisieren
6 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
7. Mit Geld um sich zu werfen funktioniert nicht …
$/€ ?
Time
• Schnelle Apps / Versionen
• Innovation
• Identifizieren / Priorisieren
7 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
8. Schließen der Visibilitätslücke
$/€ ?
Time
• Schnelle Apps / Versionen
• Innovation
• Identifizieren / Priorisieren
8 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
9. Der Komplexität einen Schritt voraus ….
$/€ ?
Time
• Schnelle Apps / Versionen
• Innovation
• Identifizieren / Priorisieren
9 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
10. Was wäre wenn Sie ….
• Schnelle Apps / Versionen
• Innovation
• Identifizieren / Priorisieren
$/€ ?
Time
10 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
11. Die Visibilitätslücke erfolgreich schließen …
$/€ ?
Time
• Schnelle Apps/ Versionen
• Innovation
• Identifizieren / Priorisieren
11 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
18. The “War Room”
'Houston, we have a problem‘
NASA Mission Control Center, Apollo 13, 1970
18 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
19. Warum APM?
Ich brauche schnelle
Antwortzeiten!
Zufriedene Anwender
Ich mag keine
Fehler!
Ich brauche
Verfügbarkeit!
Den Anwendern
Houston,
we have a
problem!
Schnelle Problem-Identifikation
Erkennen und
beheben
voraus
Optimale Resourcen-
Auslastung
Gezielte Nutzung
von Resourcen
19 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
20. Warum APM?
Business
Test/QA
Production Architecture
Development
20 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
21. 3rd Party Ext. Services
.NET
Server
Java
Server
PHP Java
Server
End to End
Synthetic
Client
Rich Client
Browser
Client
Mobile Client
Internet
End-to-End Transaction
Execution Path
• Across tiers
• Remoting
• External services
• Java, .Net, PHP, Mainframe
• Code-level depth
DATA CENTER #1
Web
Server
Contextual Transaction
Information
• Method arguments
• SQL bind variables
• Synchronization
• Exceptions
• Log Entries
LAN / WAN
Infrastructure Monitoring
• Traditional component metrics
CPU, Memory, Disk, Network etc.
• Garbage collection
• Memory / Thread dumps +
DATA CENTER #2
ESB
Database
Java
Server
.NET Mainframe
Server
Session
• Contains all performance data
(PurePath and PureStack)
• Realtime analysis (Online session)
• Offline analysis (Exported
sessions) =
21 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
23. Skaliert Ihre Anwendung?
Antwortzeiten
Transaktionen
Resourcen
23 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
24. Top Problem Patterns: Does this sound familiar?
• Resource Pool Exhaustion
– Misconfiguration or failed deployment, e.g: default config from dev
– Actual resource leak -> can be identified with Unit/Integration Tests
24 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
25. Top Problem Pattern: Oversized Pages
• Not following WPO (Web Performance Optimization Rules)
– Non optimized content, e.g: compression, merging, …
– Educate developers and automate WPO checks
17! JS Files – 1.7MB in Size
Useless Information!
Even might be a security risk!
25 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
26. Top Problem Pattern: 3rd Party Content
• Slow or failing 3rd party content
– Impacts page load time; Ops is required to monitor 3rd party services
– Educate devs to optimize loading; Educate test to include 3rd party testing
26 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace
28. Bison auf einen Blick
über 5’000 Kunden
600 Mitarbeiter 90 Mio € Umsatz
Grösstes Business Softwarehaus der Schweiz
Sursee Puidoux Hamburg Kaarst Kaiserslautern
32. Warum eine Offensive?
Geschäftsleitung:
Kann bei
zusätzlichem
Wachstum das
Tagesgeschäft noch
abgewickelt
werden?
32
• Verärgerte User
• Unverständliche Wartezeiten
• «Schlechte Performance!»
34. Was unser Kunde unter Performance versteht
34
• Usability
• Eingaben wurden vom System überschrieben
• Workflows mit unnötigem Warten am Ende des Prozesses
• Lange Wartezeiten bei gewissen Such-Anfragen
• Mehrere Terrabyte an Daten
• In-House nicht reproduzierbar
• Man kann nach allem erdenklichen suchen…
• Suche mal abgesetzt, läuft sie maximal 5 Minuten bis Timeout
• Lange Wartezeiten unter hoher Last
• System langsam um bestimmte Tageszeiten
35. Architecture of Bison Process
RCP-Client Web-Client
HTTP
UI-Layer
Business-Layer
Persistence-Layer
Primary Server
Cluster
Oracle Database Secondary Servers for Jobs
36. Labor Workflow
Schmerzpunkt
mit Dynatrace
identifizieren
Szenario im
Labor
reproduzieren
Lösungswege
suchen und
Prototypen
umsetzen
Bester Prototyp
implementieren
Prototypen im
Labor testen
37. Architecture of Bison Process Lab
HTTP
Business logic
Persistence logic
10 – 80
Client bots
UI Layer
Primary Server
Cluster
Secondary Servers for Jobs
Oracle
Database
Remote control through Jenkins
38. Phasen des Tests
8000
7000
Umgebung
zurücksetze
n (DB
restore)
Prototyp
installieren
Last-
Tests
Kalimba/rc
Auswertun
g
6000
5000
4000
3000
1000
0
• Dynatrace Analysen
• Response-Zeiten von JMeter-Clients
2000
Mittelwert Req-Res, 20
Benutzer
Mittelwert Req-Res, 40
Benutzer
DataPool.get()
JmsMessageBasket
DelayActivityProcess
39. Konkrete Erkenntnisse
DB-Zugriffe
Mit dem Einsatz von Dynatrace haben wir sehr
schnell gesehen, dass sehr viele DB-Zugriffe
erfolgen. Dies ging schnell mal in die Milionen -
sogar für identische Statements.
• Architektonische Vereinfachungen um generell
weniger Zugriffe zu machen.
• Besseres Cacheing von Stammdaten.
40. Konkrete Erkenntnisse
Diverse Bottlenecks
• Eigene Implementationen von Caches
• EhCache / HazelCast
• Annotation-Processing zur Laufzeit
• Startup-Phase verwenden oder Lazy-Loading
• Oder JDK8!
• String.format()
• StringBuilder
• Eigenes JMS-Connection-Handling
• ConnectionPooling von Container
41. Konkrete Erkenntnisse
UI
Speziell an unserem UI-Layer ist, dass der gesamte
State auf dem Server gehalten wird. Das hat zur
Folge, dass bei den meisten Klicks, Enter und Tabs
dem Server die Änderung mitgeteilt und der neu
berechnete Inhalt des Clients wieder
zurückgeschickt wird.
• Mehr State auf dem Client
• Asynchronität für Usability
• Diffs übermitteln
Eingaben
Neuer
Bildschirm-
Inhalt
42. Konkrete Erkenntnisse
Suchfunktionen
Die Kunden-Datenbank umfass mehrere Terrabyte
an Daten. Man kann nach allen erdenklichen
Kriterien suchen. Lange Suchen, Timeouts nach 5
Min.
• Weniger Daten halten
• Use-Cases einschränken
• Defaulting
• Suchen abbrechbar machen
• Indizes
t
Such-Anfrage
GUI blockiert
5 Minuten:
Timeout-Fehler
43. Fazit der Offensive
• Team vor Ort enorm wichtig für Verständnis
• Dynatrace war sehr hilfreich für Problemsuche
• Lab war sehr hilfreich für Lösungssuche
Die Offensive wurde beendet. Kunde ist momentan
zufrieden.
Es bleibt noch viel zu tun:
• Effizienterer Umgang mit der DB
• Weitere Bottlenecks
• Mehr asynchrone UIs und APIs
44. Q&A
Christian Grimm
Senior Solution Consultant
christian.grimm@dynatrace.com
Web: http://www.dynatrace.com
Community: https://apmcommunity.compuware.com
Blog: http://apmblog.compuware.com
Twitter: https://twitter.com/Dynatrace
Roman Schaller
Performance Engineer
roman.schaller@bison-group.com
Web: http://www.bison-group.com
44 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Dynatrace