Software-Design und Continuous Delivery im 21. Jahrhundert
Anfang Oktober lud das Consulting-Unternehmen ThoughtWorks Deutschland nach Berlin zu Vorträgen zum Thema Software-Architektur ein. Interessenten konnten sich mit Martin Fowler und Jez Humble unter anderem zu den Themen plattformübergreifendes Programmieren und Continuous Delivery weiterbilden.
- Schlomo Schapiro
Martin Fowler und Jez Humble bedurften wahrscheinlich für die wenigsten Teilnehmer des Vortragsabends der Vorstellung. Circa 150 Leute, überwiegend aus der Web- und Online-Branche und zu 90 % aus der Region, kamen zu der ThoughtWorks-Veranstaltung, um sich anzuhören, wie die beiden bekannten Autoren ihre Fachgebiete präsentieren.
Martin Fowlers Lieblingstitel für Vorträge ist "Software Design im 21. Jahrhundert", da er so immer etwas über seine aktuelle Arbeit erzählen kann. Diesmal ging es dem Chief Scientist von ThoughtWorks um die Softwareentwicklung für mobile Endgeräte, NoSQL-Datenbanken und Konsistenz.
Das Hauptproblem bei der Entwicklung mobiler Anwendungen ist die Vielfalt der Systeme und Geräte, die sich zudem auch noch in ihrer typischen Bedienung deutlich unterscheiden. Erschwerend kommt hinzu, dass der Erfolg von Apps maßgeblich vom Benutzererlebnis (User Experience, UX) abhängt.
ThoughtWorks
Die Firma wurde 1993 von Roy Singham in Chicago gegrĂĽndet. Mit ihrer Produktabteilung ThoughtWorks Studios entwickelt die IT-Beratungsfirma unter anderem die Projektmanagement-Software Mingle und Twist, eine Plattform zum automatisierten Testen von Programmen. Martin Fowler, einer der Co-Autoren des Agile-Manifests, ist seit 2000 Chief Scientist bei ThoughtWorks und war treibende Kraft hinter dem Konzept der Continuous Integration fĂĽr komplexe GroĂźprojekte.
In seinem ersten Vortrag gab Fowler einen guten Überblick über die unterschiedlichen Entwicklungsansätze und stellte der Entwicklung nativer Anwendungen mit guter UX oder generischen Webanwendungen mit schlechter UX einen Hybridansatz gegenüber. Hierbei wird für die wichtigen mobilen Plattformen eine kleine native Anwendung entwickelt, die sich dem Benutzer in optimierter und an die UX der Plattform angepasster Form präsentiert, während die Businesslogik mit einem Cross-Platform-Framework als Webanwendung erstellt wird. Auf Geräten ohne native Anwendung läuft die App komplett als Webanwendung.
Damit ließe sich die günstige Entwicklung in einem Cross-Plattform-Framework mit der besseren Darstellung und Integration einer nativen Anwendung kombinieren. Diese kann man nach Bedarf erstellen und ist dennoch auf allen mobilen Endgeräten vertreten. Als Werkzeug dafür empfiehlt Fowler das mit ThoughtWorks-Unterstützung entwickelte Calatrava Framework. Das Framework ist als Open-Source-Software unter der Apache-Lizenz veröffentlicht. Der Vortrag lässt sich auf Fowlers Homepage unter Multiple Mobiles nachlesen.
Sein zweiter Kurzvortrag zu NoSQL und Konsistenz war Werbung fĂĽr Fowlers Buch "NoSQL Distilled" und seine NoSQL-Themenseite. Er gab eine kurze EinfĂĽhrung in seine Sicht der NoSQL-Datenbanken und wie man sie verwenden sollte.
Continuous Delivery Grundlagen
Jez Humble, Principal Consultant bei ThoughtWorks, dĂĽrfte den meisten durch sein Buch "Continuous Delivery" bekannt sein. Der temperamentvolle und unterhaltsame Vortrag zum Thema ging ĂĽber das Buch hinaus und trug viel dazu bei, auch den letzten Zweifler an Continuous Delivery von deren Nutzen zu ĂĽberzeugen.
Die Grundidee von Continuous Delivery ist relativ einfach: Kleine Änderungen der Software zu einem neuen Release packen und dies produktiv stellen. Je kleiner die Änderungen, desto geringer das Risiko, dass etwas schiefgeht, und desto einfacher der Schritt zurück auf die vorherige Version. Was die Großen der Branche schon lange vormachen, klappt auch im Kleinen gut. Da man sehr häufig ausliefert, muss der gesamte Prozess vollständig automatisiert werden, damit jedes Deployment für sich keinen großen Aufwand verursacht. Dadurch erhöht sich allerdings auch die Stabilität und Wiederherstellbarkeit der Plattform, sodass sich Ausfälle meist schneller beheben lassen.
Im richtigen Leben ist es leider nicht so einfach: Den notwendigen Grad an Automatisierung zu erreichen ist für viele Organisationen ein großer Schritt, der viel Kraft kostet. Ohne zeitgemäße Ideen aus der agilen Welt wie DevOps, Kanban und Scrum lässt sich hier meistens nicht viel erreichen, da die zu automatisierenden Prozesse viele Abteilungen betreffen.
Die wichtigen Zutaten für Continuous Delivery sind erstens ein Configuration Management, mit dem sich ein neues System nach dem Einbauen ins Rack vollautomatisch installieren, konfigurieren und mit der produktiven Software in Betrieb nehmen lässt. Zweitens benötigt man Continuous Integration als Arbeitsweise. "Feature Branches und Continuous Integration sind grundsätzlich Gegensätze", sagte Humble. Drittens kann nur automatisiertes Testen die Gewissheit verschaffen, dass jeder Releasekandidat, der die Tests besteht, auch für den produktiven Einsatz geeignet ist.
Die Vortragsfolien lassen sich auf Slideshare nachlesen.
Schlomo Schapiro
ist Systems Architect und Open-Source-Evangelist bei ImmobilienScout24.
(jul)