IPC Countdown: Interviewserie

Temporale Muster sowie A/B-Tests: Interview mit Stefan Priebsch
Kommentare

Stefan Priebsch erklärt, wann der Einsatz von Temporalen Mustern ratsam ist, wie sie in der Praxis aussehen, und welche Überlegungen man bei der Datenbank und der Arbeit mit Fremdschlüsseln einbeziehen muss. Außerdem erklärt der Experte, wie sich A/B-Tests für Entwickler und Auftraggeber lohnen können, ohne dass sie großen Mehraufwand bedeuten.

Stefan Priebsch

„In der Praxis werden temporale Aspekte von Anwendungen oft ignoriert, weil sie in der Datenquelle nicht so einfach abzubilden sind.“ Stefan Priebsch spricht auf der IPC 2012 über Temporale Muster sowie A/B-Tests in der Praxis.

Im Vorfeld zur International PHP Conference Spring Edition am 03. bis 06. Juni 2012 führen wir mit den Sprechern und Workshop-Leitern der Konferenz Interviews. Neben Einblicken in ihre Veranstaltungen liefern sie Ausblicke in ihrem jeweiligen Themengebiet.

Diese Woche haben wir mit Stefan Priebsch gesprochen.

PHP Magazin: In Ihrer Session „Change is inevitable“ werden Sie über temporale Muster sprechen. In welchen Szenarien im WWW sind diese zu empfehlen?

Stefan Priebsch:
Temporale Patterns braucht man immer dann, wenn man es mit Informationen zu tun hat, die sich über die Zeit ändern. Da sich fast alle Informationen über die Zeit ändern — oder zumindest ändern können —, sind die Konzepte, die ich in meiner Session präsentiere, eigentlich für alle Entwickler relevant. In der Praxis werden temporale Aspekte von Anwendungen allerdings oft einfach ignoriert, weil sie besonders in der Datenquelle nicht so ganz einfach abzubilden sind. Sobald man aber eine Anwendung baut, die Fragen wie „Wo hat Herr Müller vor zwei Jahren gearbeitet?“ oder „Was hat der Meier letzten Juni verdient?“ beantworten können muss, kann man temporale Aspekte nicht mehr ignorieren.

Ein gutes CRM-System oder auch eine Accounting-Sofware sollten solche Fragen beantworten können. Auch in sozialen Netzwerken wie XING gibt es eine Historie, die sich über die Zeit verändernde Daten repräsentiert.

In Abrechnugssystemen sind temporale Aspekte besonders wichtig, und zwar sogar in zwei Dimensionen: Es muss nicht nur bekannt sein, welches Gehalt ein Mitarbeiter in einem bestimmten Monat hatte, sondern auch, wann eine Änderung im System erfasst wurde. Ansonsten kann man später nicht mehr nachvollziehen, welches Gehalt in einem bestimmten Abrechnungsmonat eigentlich ausbezahlt wurde, denn es könnte ja sein, dass eine nachträgliche Änderung erst nach dem monatlichen Abrechungslauf erfasst wurde.

PHP Magazin: Gibt es eine Grenze, ab wann sich der Einsatz von Foreign Keys als ineffizient erweist?

Priebsch: Das ist eine schwierige Frage, auf die man vermutlich so viele verschiedene Antworten bekommt, wie man Experten befragt. Wenn man möchte, dass die Datenbank die Konsistenz der Daten sichert, dann braucht man dazu Fremdschlüssel. Da die Datenbank diese verwalten muss, bezahlt man für die Konsistenzgarantie in Form von Systemressourcen und damit letztlich erhöhter Antwortzeit.

Wenn man Finanztransaktionen durchführt, dann wird man unabhängig vom Transaktionsvolumen sicherlich eine von der Datenquelle garantierte Datenkonsistenz haben wollen. In vielen anderen Anwendungsfällen braucht man diese nur eingeschränkt. Eine Grenze zwischen den beiden Szenarien lässt sich aber sicherlich nicht an einem Datenvolumen festmachen, sondern allenfalls an den Anforderungen an die Persistenzschicht.

Die Antwort auf die Frage, ob eine Anwendung starke Konsistenz und damit Fremdschlüssel braucht, wird sich nicht plötzlich ändern, wenn man ein bestimmtes Datenvolumen oder eine bestimmte Transaktionsrate erreicht.
Man wird also an anderen Stellschrauben drehen müssen.

Da aber normalerweise die Anforderungen an verschiedene Teile einer komplexen Anwendung gar nicht einheitlich sind, ist es oft gar nicht sinnvoll, eine systemweite Entscheidung für einen einheitlichen Persistenzmechanismus zu erzwingen. Die zu beantwortende Frage wäre
dann: „Für welche Teile der Anwendung beziehungsweise Daten brauche ich Fremdschlüssel?“

PHP Magazin: Ist jeder Datenbank-Typ gleich gut geeignet für die PHP-Lösung, die Sie vorstellen?

Priebsch: Die Entwurfsmuster, die ich vorstelle, setzen keinen bestimmten Persistenzmechanismus voraus. Und obwohl mir durchaus bewusst ist, dass komplexe temporale Abhängigkeiten in einer relationalen Datenbank die SQL-Abfragen schnell komplexer machen, als einem lieb ist, kann man nicht wegdiskutieren, dass heute in den meisten Unternehmen relationale Datenbanken im Einsatz sind. Das legt natürlich nahe, die vorhandene Datenbank auch zu verwenden.

Unabhängig davon lässt sich keine seriöse Empfehlung geben, welcher Persistenzmechanismus für die Abbildung von temporalen Abhängigkeiten besonders geeignet ist. Die Kriterien dafür sind oft weniger durch funktionale, sondern hauptsächlich durch nicht-funktionale Anforderungen bestimmt.

PHP Magazin: „This Way or the other Way?“ führt Ihr Publikum in statistische Auswertungsmethoden ein. Werden Gäste dieser Veranstaltung folgen können, wenn sie keine Mathe-Vorlesung an der Uni besucht haben?

Priebsch: (lacht) Ich habe ja selbst Mathe an der Uni meistens geschwänzt! Aber im
Ernst: die Zuhörer müssen sich keine Sorgen machen, weil ich auf die ganze Mathematik in meiner Session fast nicht eingehe. Der Fokus meiner Session liegt darauf, zu zeigen, wie man A/B-Testing oder Experiment-Driven-Development in PHP technisch sauber und nachvollziehbar realisieren kann. Dabei können auch mehrere Experimente gleichzeitig ablaufen. Wichtig ist in diesem Zusammenhang übrigens, dass der User nicht unbedingt jedes Experiment zu sehen bekommt: Man kann beispielsweise für einen Teil der User einen neuen und hoffentlich effizienteren Algorithmus für irgendeine komplexe Berechnung unter realistischen Bedingungen testen. Einige unserer Kunden bringen schon heute auf diese Weise neue Software oder Features in Produktion.

Zurück zur ursprünglichen Frage: ich erinnere mich, einmal in einem Aufsatz über Statistik gelesen zu haben, dass jemand mit Methoden der Statistik mathematisch einwandfrei nachgewiesen hat, dass Menschen, die nachts ohne Licht Fahrrad fahren, häufiger Karies bekommen. Das ist natürlich Blödsinn, oder vielleicht doch nicht? Ich beneide Statistiker jedenfalls nicht um ihren Job, und da mein eigenes Verständnis in diesem Gebiet nur sehr oberflächlich ist, klammere ich die Mathematik in meiner Session weitestgehend aus und konzentriere mich auf den softwaretechnischen Teil, anstatt Halbwissen zu verbreiten.

PHP Magazin: A/B-Tests versprechen Mehrumsätze, etwa bei gut platzierter Werbung.
Aber mit welchem Mehraufwand muss der Entwickler rechnen?

Priebsch: Das ist das Tolle: wenn sich Entwickler daran orientiert haben, was ich und meine Kollegen von thePHP.cc in den letzten Jahren auf Konferenzen und auf dem PHP Summit propagiert haben, dann kann man ohne großen zusätzlichen Aufwand in die experimentgetriebene Entwicklung einsteigen.
Es bedarf dazu „nur“ der richtigen Kombination einiger Best Practices. In meiner Session werde ich diese anhand von konkretem Beispielcode zeigen.

Interessant ist übrigens auch, dass Eric Ries in seinem Buch „The Lean Startup“ vorschlägt, das Konzept von Experimenten nicht nur auf Software, sondern auf alle Aspekte eines Unternehmens anzuwenden. Er geht davon aus, dass Entscheidungen in den meisten Fällen letztlich aus dem Bauch heraus fallen oder der eloquenteste Teilnehmer an einer Diskussion sich mit seiner Idee durchsetzt. Ries schlägt nun vor, dass jede wichtige Entscheidung in einem Unternehmen als Hypothese formuliert wird, die sich statistisch bewähren muss. Das ersetzt sozusagen Ego durch harte Zahlen, natürlich mit der Einschränkung, dass Statistiken immer mit Vorsicht zu genießen sind.

Wenn man sich einmal überlegt, wie lange und oft in einem Projekt ohne konkrete Grundlage diskutiert wird, welche von zwei oder mehr alternativen Lösungen nun besser ist, dann sind A/B-Tests kein Mehraufwand, sondern allenfalls ein Trade-Off zwischen dem stetigen Verschwenden von wertvollen Unternehmensressourcen und dem einmaligen Aufwand der Entwickler, eine Infrastruktur für Experimente zu schaffen.

Stefan Priebsch vereint komplexes Fachwissen und ein Gespür dafür, welches Instrument wann einzusetzen ist. Seine Spezialdisziplinen sind objektorientierte Programmierung und Softwarearchitektur. Als international geschätzter Autor und Redner versteht er es, sein Auditorium zu fesseln und an seiner enormen Praxiserfahrung teilhaben zu lassen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -