Vom 19. bis 20. Oktober 2010 fand die prio.conference zum ersten Mal in Nürnberg statt. Der Veranstaltungsort kam mir sehr gelegen, da ich bis zur Meistersingerhalle nur 15 Minuten mit dem Auto fahren musste.
In den zwei Tagen gab es ziemlich viel neues. Einiges davon hatte ich schon über Twitter vom .NET Open Space mitbekommen, welcher einige Tage vorher in Leipzig statt fand.
Da ich während der Sessions auf der prio.conference nichts mitgeschrieben habe, nutze ich einfach mal diesen Blogpost um zu notieren, was ich für wichtig halte. Sicher interessiert es auch den ein oder anderen.
Die Konferenz startete erst einmal ziemlich ungewöhnlich mit einer Märchenerzählerin und einem Vortrag von einem Filmregisseur. Die Märchenerzählerin gab während des ersten Tages einige Grimm-Märchen zum besten und mappte die Lehren aus den Märchen auf die heutige Welt der Softwareentwicklung. Nette Idee, aber für mich war es ein bisschen zu langatmig.
Ivan Engler ist ein Schweizer Regisseur, der vor seiner Karriere beim Film auch mal 5 Jahre Software entwickelt hat. Er zog viele Parallelen zwischen der Filmproduktion und der Softwareentwicklung. Die wesentliche Aussage war: Erst denken, dann programmieren.
Danach gab es erst mal etwas handfestes von Thorsten Hans und Jürgen Gutsch. Thorsten zeigte den Einsatz von JSON in .NET und jQuery. Jürgen beschäftigte sich in der Vergangenheit oft mit WebDAV und berichtete in 60 Minuten sehr anschaulich über seine Erfahrungen mit diesem offenen Standard.
In einer so genannten General Session erklärte Martin Huber die Unterschiede zwischen verschiedenen Mechanismen für die verteilte Kommunikation, schließlich war ja verteilte Architektur das Thema der prio. Sein Schwerpunkt war das Für und Wider von RESTful HTTP.
Golo Roden hielt auf der Prio zwei Vorträge, einer war zum Thema Windows Identity Foundation. Ein Framework was kaum einer kennt und schlecht dokumentiert ist. WIF ist aber sicher nicht uninteressant, wenn man auf der Suche nach einer zentralen Lösung für Authentifizierung und Rechtevergabe ist.
Auf der prio wurde in mindestens zwei Vorträgen deutlich, dass wir uns immer öfter fragen müssen, ob wir nicht alt eingeschliffene Vorgehensweisen hinterfragen sollten. Am deutlichsten wurde dies am Beispiel vom klassischen 3 (bzw. n) Tier Schichtenmodell und von zentralen relationalen Datenbanken.
Am Abend des ersten Tages stellte Udi Dahan die CQRS Architektur (Command Query Responsibility Segregation) vor und erklärte die Vorteile gegenüber einer klassischen Schichtenarchitektur. CQRS sollte zum Beispiel eingesetzt werden, wenn hochperformante Anwendungen gefordert werden bei denen sich extrem viele User gleichzeitig anmelden.
Nach einem guten Essen und zwei, drei Bier mit Jürgen ging es zum Coding Dojo. Dies war mein erstes Dojo. In der letzten Zeit konnte man über Blogs und in Twitter scheinbar endlose Diskussionen über die verschiedenen Dojo-Styles und über die Frage wer es erfunden hat, mitverfolgen. Diese Diskussionen haben aus meiner Sicht ein schlechtes Bild auf die Idee des Dojos und auf deren Veranstalter geworfen. Jetzt konnte ich mir selbst ein Bild davon machen. Stefan Lieser und Ralf Westphal haben das Dojo moderiert und haben sich dabei vielleicht ein wenig zu viel zurückgehalten. Die Aufgabe war ein einfacher Formelparser der kurz vor knapp fertig wurde. Wie im richtigen Leben. Ich fand es besonders cool, dass die Aufgabe nach viel hin und her von zwei “alten Hasen” ganz souverän mit TDD Unterstützung gemeistert wurde. Ich finde die Idee, zusammen zu coden, gut weil man dabei viel von einander lernt. Wie man das ganze nennt und in welchem Rahmen man das macht, sind für mich “nur Implementierungsdetails”.
Der zweite Tag der Konferenz begann mit einem Vortrag von Stefan Lieser zum Thema Bounded Contexts. Der Vortrag kritisierte das von Microsoft empfohlene Modell einer zentralen relationalen Datenbank weil je nach Kontext andere Daten wichtig sind. Er zeigte, wie man in einer großen Anwendung durchaus mehrere Datenbanken einsetzen kann. Je nach Aufgabe kann dabei ein anderes Datenbanksystem (NoSQL, RDMS …) eingesetzt werden. Für den Abgleich der Datenbanken untereinander empfahl er einen Service Bus.
Zum Thema Service Bus hielt Björn Rochel einen sehr guten Vortrag. Er gab eine Einführung in den Rhino Service Bus. Der Bus basiert auf verschiedenen vorhandenen Technologien wie zum Beispiel MSMQ 4.0 und und hat als Ziel den Einstieg in das Thema Service Bus sehr einfach zu gestalten. Dies konnte Björn gut demonstrieren.
Weiter ging es für mich mit der Session von Bernd Marquardt zum Thema MPI. Ein mächtiges Werkzeug um Rechenoperationen über ein Netzwerk zu verteilen, also zu parallelisieren. Das braucht man immer wieder, wenn man zum Beispiel die Elektronendichte in einem Gasnebel berechnen will 
Der Top Speaker der Konferenz war sicher Ayende Rahien. Er hielt eine Session, in der er NoSQL-Datenbanken, Dokument-Datenbanken, Graph-Datenbanken und so genannte Column Family Databases miteinander verglich. Der Vortrag war ganz ok. Anschaulicher wurde es jedoch im nächsten Vortrag von Sergey Shishkin der verschiedene NoSQL- und Clouddatenbanken an praktischen Beispielen, inklusive Quellcode, vorstellte.
Das letzte große Highlight der Konferenz war Ralf Westphal mit seinem Vortrag zu EBC (Event-Based Components). Ich hatte seine Artikel zu EBC in der Vergangenheit nur kurz überflogen und hab das Thema nicht besonders ernst genommen. Der Vortrag hat aber definitiv Lust auf mehr gemacht, vor allem wenn Stefan und Ralf das Tooling noch zu Ende entwickeln, sind EBC’s ganz bestimmt eine feine Sache.
Mein Fazit der Konferenz:
- Der Einsatz von relationalen Datenbanken sollte genau geprüft werden, können andere Datenbanken die Anforderungen besser erfüllen (siehe CAP-Theorem)?
- Die Cloud kommt und macht auch Sinn.
- Nur Code ist die Wahrheit.
- Den Rhino Service Bus und die Couch DB in Verbindung mit JQuery sollte man sich ansehen.
- Exceptions heißen ab sofort Bumsti.
- Schichtenarchitektur in Frage stellen und mit EBC bzw. CQRS vergleichen.
Wo nehme ich bloß die Zeit her, um mich mit den ganzen Sachen zu beschäftigen?