bei anruf: fehler bereits behoben | tobias gindler & sven bunge | 1 bei anruf: fehler bereits...

28
Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Upload: insa-hofmeister

Post on 06-Apr-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1

Bei Anruf: Fehler bereits behobenProaktive Fehlerbeseitigung ohne Kundenbeteiligung

Page 2: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 2

Über uns...

TobiasGindler

SvenBunge

Die Holisticon AG ist eine Management- und IT-Beratung mit Sitz in Hamburg. Mit einem ganzheitlichen Beratungsansatz unterstützen wir unsere Kunden in ihren Entwicklungsprojekten auf technischer, taktischer wie auch strategischer Ebene.

http://blog.holisticon.deTwitter: @holisticon

Page 3: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 3

Agenda

■ Motivation

■ Mögliche Fehlerquellen

■ … und wie man diese aufspürt

■ Verarbeitung von Logfiles

■ Implizites Logging

■ Alerting

■ Fragen und Diskussion

Page 4: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 4

Motivation

■ Gesteigerte Komplexität in Softwaresystemen steigert auch Fehlerwahrscheinlichkeit

■ Fehler können nie mit Gewissheit ausgeschlossen werden.

■ In produktiver Umgebung sollte Fehler von Kunden unbemerkt bleiben

■ … und automatisiert erkannt und schnell behoben werden.

Page 5: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 5

Beispiel 1: Benutzer erleben Fehler

■ Kunde besucht Onlineshop Kunde wählt Produkt Kunde meldet sich an / erstellt Konto Kunde gibt Zahlungsdaten ein

Beim Speichern tritt ein Fehler auf Kunde sieht Fehlerseite

■ Geschäftsabschluss findet nicht statt Dem Kunden ist klar, dass Kauf nicht stattgefunden hat

Page 6: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 6

Beispiel 2: Benutzer bezahlen Fehler

■ Kunde besucht Onlineshop Kunde wählt Produkt Kunde meldet sich an / erstellt Konto Kunde gibt Zahlungsdaten ein Kunde bestätigt Kauf und sieht Kaufbestätigung

■ Geschäftsabschluss findet statt

■ Kauf wird nicht ins ERP System übertragen Kunde bezahlt Fehler ohne das Ware geliefert wird

Page 7: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 7

Fehler sind ungemütlich im Geschäftsalltag

Page 8: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 8

Vielfältige Fehlerquellen

Software / Implementierung

Daten

Page 9: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 9

Bild durch Klicken auf Symbol hinzufügen

Page 10: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 11

Fehler in der Anwendung

■ Software Programmierfehler Unklare / unvollständige Anforderungen Integrationsinkonsistenzen gegenüber externen Komponenten

■ Datenkonsistenz / -korrektheit Fehlerhafte Daten können zu unvorhersehbaren Systemverhalten führen Fehlerhafte Daten können durch Fehler in der Software und der Infrastruktur entstehen

Page 11: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 12

Detektion von Software-Fehlern

■ Meldung durch den Endbenutzer

■ Überprüfung der persistenten Daten Konsistenz Anforderungen

■ Auswertung von Log-Dateien Access-Logs Anwendungsserverlogs

Page 12: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 13

Log-Dateien

■ Sind technologieunabhängig

■ Ausgabe-Formate sind vielfältig

■ Müssen fortlaufend verbessert werden Hinzufügen fehlender Informationen Entfernung von Ausgaben ohne Mehrwert Optimierung der Log Level der Ausgabe

Page 13: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 14

Große Systeme haben viele Log-Dateien

Page 14: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 15

Bild durch Klicken auf Symbol hinzufügen

Page 15: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 16

Aggregation von Logausgaben

■ Nicht aggregiert

■ Aggregiert

2014-10-05 23:13:30.813 [main] INFO holisticon.examples.TestClass - Hello World

2014-10-05 23:12:28.227 [main] INFO holisticon.examples.TestClient - [SESSION_ID] - [REQUEST_ID] - Hello World

Page 16: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 17

Kontext-Propagation

Page 17: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Wie loggen wir eigentlich?

Page 18: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 20

Explizites Logging

Page 19: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 21

Implizites Logging

Page 20: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 22

Ausgabe des impliziten Logging

■ n

IMPLICIT_EXCEPTION_LOGGER: { "errorMessage": { "message": "An error occurred while updating the customer" }, "invocationContext": { "className": "de.holisticon.examples.CustomerDao2", "methodName": "updateCustomer", "parameters": [{ "de.holisticon.examples.Customer": "Customer@7e14b389[id=10001,firstName='Max',lastName='Mustermann',version=1]"}] }, "throwable": { "message": "java.lang.IllegalArgumentException: org.hibernate.ObjectDeletedException: deleted instance passed to merge:", "stacktrace": "..." }}

Page 21: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 23

Logging an den Komponentengrenzen

Page 22: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 24

Beispiel - Webanwendung

■ Kunde erhält bei Eingabe von Zahlungsinformationen einen Fehler

■ Fehler wird im Log aufgezeichnet Identifikation über Session ID Request-ID als Klammer für Nutzerinteraktion Erweiterte Kontextinformationen

■ Kontextinformationen sind zum Beispiel URL mit Aufrufparameter / Payload SOAP / REST Kommunikation

Page 23: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 25

Einschränkungen

■ Ausgabe Sicherheitskritischen Daten Komplexen Datenstrukturen Großen Datenmengen

■ Frameworkabhängige Einschränkungen JPA: Entitäten mit Relationen CDI: Injection

■ Zusammenspiel mit anderen Problemlösungen Beispiel: Fehlerseiten-Filter

Page 24: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 27

Automatisierte Fehlererkennung / Alerting

■ Automatisierte Suche nach Fehlern und Schlüsselworten

■ Vergleich der gefundenen Fehler mit bereits aufgetretenen Fehlern Automatisierte Erstellung eines Tickets im Ticket System bei unbekannten Fehlern Erhöhung der Behebungspriorität im Ticket-System bei wiederholtem Auftreten Tickets enthalten Verlinkung auf Log-Servers mit vordefinierter Request ID und Session ID

■ Regelmäßige Erstellung von Fehlerreports und Fehlerstatistiken

Page 25: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 28

TracEE

■ Kostenloses Java Framework

■ Open-Source, auf GitHub verfügbar

https://github.com/holisticon/tracee

■ Bereitstellung und Propagation von Session- und Request-Ids in verteilten Systemen

■ Leicht erweiterbar

■ Verwendete Techniken auf andere Technologie-Stacks übertragbar

Page 26: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 29

TracEE – Implizites Logging

■ Implizites (Kontext-)Logging im Falle eines Fehlers

■ Unterstützt viele Java-Technologien

■ Leicht einzubinden

■ Log-Ausgaben flexibel konfigurierbar

■ Einfach erweiterbar

Page 27: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 30

Zusammenfassung

Alerting des Logservers

Reproduktion durch Fehler-

Kontext

Bugfix

Kunden ermitteln / korrigieren

Kundenbeschwerde

Fehlerkorrektur

Page 28: Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1 Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung

Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 31

Fragen und Diskussion