23
Fifty Shades of Red Mirko Seifert, DevBoost GmbH JUG Saxony Day | 02.10.2015 | Dresden Oder wie man es schafft, dass Entwickler (endlich) unter Ihrer eigenen (schlechten) Software leiden müssen

2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fifty Shades of Red

Mirko Seifert, DevBoost GmbH

JUG Saxony Day | 02.10.2015 | Dresden

Oder wie man es schafft, dass Entwickler (endlich) unter Ihrer eigenen

(schlechten) Software leiden müssen

Page 2: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Unser Leben als Softwareentwickler

• Wir schreiben hervorragende Software, die Menschen glücklich macht

• Wir machen das Leben auf diesem Planeten durch die Nutzung von Software einfacher, schöner, angenehmer

• Wir bewerkstelligen alles Menschenmögliche um Fehler und Unannehmlichkeiten für die Benutzer unserer Software zu vermeiden

Fifty Shades of Red

Page 3: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Unser Leben als Softwarenutzer

• Wir nutzen ausschließlich hervorragende Software, die uns glücklich macht

• Wir können das Leben auf diesem Planeten durch die Nutzung von Software viel mehr genießen

• Wir finden nur sehr, sehr selten Fehler oder Unannehmlichkeiten in der Software, die wir nutzen

Fifty Shades of Red

Page 4: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fifty Shades of Red

Page 5: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fifty Shades of Red

Page 6: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fifty Shades of Red

Page 7: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fifty Shades of Red

Page 8: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Ursachen

Fehlendes Feedback an den Entwickler:

• von Benutzern

• von Produktivsystemen

• von Testsystemen

• von CI-Systemen

• von lokalen Tests

Fifty Shades of Red

Page 9: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Was tun?

EntwicklerLokaler

TestCI System

Test System

Staging System

Production System

Benutzer

Fifty Shades of Red

Feedback

Storage

Page 10: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Aber wie genau?

• Feedbackinhalt– Möglichst generisch

– Mit Code verbunden (Klasse, Methode, Zeile)

– Zeitpunkt

• Übertragung– HTTP/REST

• Anzeige für Entwickler– In der IDE, direkt am Code

– Filterbar

Fifty Shades of Red

EntwicklerLokaler

TestCI System

Test System

Staging System

Production System

Benutzer

Feedback

Storage

Page 11: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Tomcat Webserver

“Architektur”

Fifty Shades of Red

Client

(z.B. Code auf

Produktivsystem)

Confessional

REST API

Confessional

Database

IDE Client

(z.B. Eclipse

Plugin)

Page 12: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

DEMO

Logger / Exception Feedback

Fifty Shades of Red

Page 13: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Schlechten Code erkennenprivate boolean lookupUser(String username, String expectedHash) {

boolean foundHash = false;

String sql = "SELECT password FROM user WHERE username = ?";

try (Connection connection = DriverManager.getConnection(getDatabaseURL(), USER, PASS);

PreparedStatement preparedStatement = connection.prepareStatement(sql)) {

preparedStatement.setString(1, username);

ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {

foundHash = expectedHash.equals(resultSet.getString("password"));

break;

}

resultSet.close();

} catch (SQLException se) {

se.printStackTrace();

}

return foundHash;

}

Fifty Shades of Red

Page 14: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

DEMO

Database Performance Feedback

Fifty Shades of Red

Page 15: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

DEMO

ThisShouldNeverHappenDemo

Fifty Shades of Red

Page 16: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Assertions

• Wer nutzt Assertions und wie?

• Wenn nur im Test, dann kein Unterschied zu JUnitAssertions

• Aber eigentlich ein schönes Konzept…

Fifty Shades of Red

Page 17: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

DEMO

Assertion Feedback

Fifty Shades of Red

Page 18: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Schlechten Code erkennen

• Weitere Beispiele– Anzahl Datenbankabfragen bei Nutzung von JPA

– Netzwerkkommunikation – Request-Anzahl, Request-Dauer, Timeouts (z. B. API Aufrufe)

– Speichernutzung (große Objekte, benutzter HEAP, HTTP Session Size)

– Andere I/O Operations (z. B. Schreiben von Daten auf Platte)

Fifty Shades of Red

Page 19: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Was es noch zu beachten gilt (1/2)

• Code zum Senden von Events muss:– Thread-safe sein

– Fehlerfrei sein

– Asynchron laufen

– Tolerant bei Netzwerkausfall sein

– Obere Schranken für Speicher beachten

Fifty Shades of Red

Page 20: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Was es noch zu beachten gilt (2/2)

• Code wird weiterentwickelt

• Zeilennummern verschieben sich

• Korrekturrechnung anhand der SCM Historie erforderlich

• Verwaltung von Events notwendig (wer markiert Events als behandelt, wer behandelt welches Event, …)

Fifty Shades of Red

Page 21: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Credits

https://www.destroyallsoftware.com/talks/a-whole-new-world

Fifty Shades of Red

Page 22: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fazit

1. Es ist (relativ) einfach mehr Feedback über unseren Code zu bekommen

2. Es gibt viele (schlechte) Dinge, die man dem Code als Entwickler nicht (einfach) ansehen kann

3. Ohne Feedback aus Produktivumgebungen ist es schwierig fehlerarme, performante Applikationen zu entwickeln

Fifty Shades of Red

Page 23: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben

Fifty Shades of Red

Fragen?

[email protected]

Danke!