Blog

Continuous Delivery Pipeline mit CoreMedia – Teil1

Als Senior Software Entwickler und Architektur Berater in großen Java und Coremedia Projekten habe ich mit verschiedenen Build und Delivery Prozessen zu tun gehabt. Jedes Projekt hat natürlich seine eigenen Herausforderungen; doch ein Problem war allen gemein: die schnelle Auslieferung von Features in die Produktion. Jedes Unternehmen hatte dabei eigene Prozesse implementiert: manuelle, halb automatisierte, langwierige (6 Monats-Releases), Fastlanes um die langwierigen zu umgehen, etc. etc.

In einer Artikelserie möchte ich meine Erfahrungen in dem letzten Projekt wiedergeben. Wir haben eine Continuous Delivery Pipeline aufgebaut, welches den Herausforderungen von einem modernen, agilen Softwareentwicklungs Prozess und im speziellen von Coremedia 8 gerecht werden kann. Die Erkenntnisse sind genereller Natur und können in jedem Softwareentwicklungs Prozess mit kleinerer Anpassungen Verwendung finden.

Build und Deployment passieren dabei in einer agilen Umgebung welche folgende Technologien beinhaltet:

– Cordmedia 8 mit blueprint als Basis der Entwicklung

– Maven als Build Tool

– Jenkins als Continous Integration Tool

– Docker als Virtualisierungstechnologie in allen Umgebungen (Dev, Stage, Prod)

– Mesos / Marathon als Cluster Lösung und Orchestrierung für Docker Container

– Zookeeper für Cluster Management

– HA Proxy als Loadbalancer

– Bamboo als Auto Konfiguration Tool für HA Proxy und Apache Mesos

– Weave Network als virtuelles Netz der Docker Container

Aus diesem Konglomerat von Technologien haben wir eine Umgebung geschaffen welches die Vorteile der agilen Geschäftsentwicklung technologisch bestmöglich unterstützen soll. In den kommenden Artikeln gehe ich auf die einzelnen Komponenten ein und beschreibe dabei die Vorteile gerade für den Betrieb von Coremedia Enterprise Content Management. Um eines vorweg zu nehmen: Die Umsetzung ist komplex und hat eine steile Lernkurve sowohl für die Administration als auch für die Entwicklung. Es erfordert ein Umdenken, den Willen neues zu lernen und seine Arbeitsweise als Entwickler und Adminstrator teilweise umzustellen. Aber die Anstrengungen werden definitiv belohnt; dazu später mehr.

Das Wort „Release“ führt in jedem Entwickler zu abstehenden Nackenhaaren, weil die latente Angst da ist, dass etwas schief geht. Das bedeutet Wochenenden voller Arbeit und Stress. Tatsächlich ist es bei den meisten Unternehmen genau so. Das „Schiefgehen“ hat dabei unterschiedliche Impacts je nach Branche. Es ist ein Unterschied ob in einem Ecommerce Unternehmen etwas schiefgeht und Produkte nicht verkauft werden können, oder in einem Unternehmen welches Börsensoftware herstellt Kurse falsch berechnet werden oder in einem Medienunternehmen vielleicht eine Bildergalerie nicht angezeigt wird. Für die Unternehmen selbst bedeutet das aber immer einen Schaden hinzunehmen.

Zum Beispiel hat der Firma Knight Capital im Jahre 2012 ein Software Fehler einen Schaden von 440 Millionen USD eingebracht und gleichzeitig dessen Konkurs. Neben dem monetären Impact gibt es auch Imageschäden die entstehen können.

Fehler in der Auslieferungskette von Software führen aber nicht nur zu den genannten Schäden. Ein weiterer Faktor führt meines Erachtens zu noch größeren Problemen. Die Trägheit und Langwierigkeit beeinflusst die Wettbewerbsfähigkeit. Wenn ich schneller Features ausprobieren und Feedback vom Kunden erhalte kann ich auch schneller und besser optimieren. Funktioniert mein Sales Funnel mit Variante A besser oder mit Variante B? Ist der rote Button besser oder der blaue. Führt Headline A zu einer besseren Conversion oder Headline B. Kleinere Tests können selbstverständlich mit A/B Tools durchgeführt werden, aber komplexere Tests gehen nur im Code.

Aufbau der Artikelserie:

In Teil 2 der Artikelserie gebe ich eine Definition von Continous Delivery bevor wir dann in Teil 3 zu den spezifischen Herausforderungen für Coremedia und die Rolle von Docker, Mesos &Co. kommen.

Masiar IghaniContinuous Delivery Pipeline mit CoreMedia – Teil1