console.log()

Bericht von der X-Celerate Konferenz

| Keine Kommentare

Am 10.10.2017 haben wir, Johannes und David, die X-Celerate Konferenz von Haufe besucht. Die Talks in der Konferenz drehten sich um Themen wir DevOps, Continous Integration & Continous Delivery.

In diesem Post wollen wir mit euch teilen, was wir aus den einzelnen Talks von dieser durchaus lehrreichen Konferenz mitnehmen konnten.

Keynote: Der Arbeitsalltag mit einer containerisierten Umgebung

Der erste Talk war die Keynote zum Thema „Containeriserte Umgebungen“. Hier haben zwei Mitarbeiter von Haufe (Markus Wehrle, Nicholas Dille) die bei Haufe im Einsatz befindliche, vollautomatisierte und containerisierte Infrastruktur vorgestellt, die sie firmen intern für die von ihren Developern benötigten Systeme (GIT, Bitbucket, Jenkins etc.) aufgesetzt haben.

Der Technologie Stack bestand dabei aus Docker, Kubernets & Rancher sowie DNS basierenden Load Balancer. Beeindruckend war, mit welcher Leichtigkeit diese Infrastruktur automatisch oder auch manuell über Rancher skaliert und gemonitored werden kann. Diese Tools haben es – richtig eingesetzt – definitiv in sich und eine menge potential, bei Deployments und der Maintenance komplexer Server Infrastrukturen den Überblick zu behalten und eine Menge Zeit zu sparen.

Automatisierung sollte auch das weitere Stichwort des Tages werden – der neue Trend ist Infrastrucutre as a Code, d.h. die Beschreibung einer gesamten Infrastukrtur durch pure Skripte, Code-Snippets und Konfigurationsdateien.

Dadurch ergeben sich einige erheblich Vorteile:

  • Eben eine Automatisierung des Aufsetzen der Infrastruktur und damit eine Komplettautomatisierung von Deployments (kein ewiges Eintippen von Konsolen-Commands, Clicky-Bunti Konfigurationen und abarbeiten von Deployment TODO Listen mehr)
  • Lesbare Konfigurationsfiles und Skripte dienen gleichzeitig als absolut reale und niemals veraltete Dokumentation
  • Reproduzierbarkeit von Deployments – das verhindert nicht nur Fehler, sondern macht es auch leichte, Bugs auf mehreren Systemen zu reproduzieren und aufzuspüren

Bei einer Q&A Session ergab sich dann noch eine weitere wichtige Erkenntnis: Docker und co. sind richtig eingesetzt enorm mächtige Tools zur Serververwaltung. Jedoch sollte man diese auch nur einsetzen, wenn man die entsprechende Expertise besitzt. Das Konfigurieren, Einrichten und Maintainen einer solchen Umgebung erfordert Erfahrung und viel Kontext wissen.

Vortrag: Verwaltung von kurzlebigen Kubernetes-Deployments

Martin Danielsson hat in diesem Talk über den kompletten Umbau einer ihrer Apps hin zu einer containerisierten Umgebung erzählt. Besonders spannend dabei: Jede Nacht werden alle Staging- und Development Systeme komplett und restlos gelöscht. Morgens werden diese dann über die komplett automatisieren Deployment Skripte wieder hergestellt und danach einfach ein Daten-Backup eingespielt. So testen sie nicht nur täglich quasi eine Recovery im Katastrophenfall (Komplettausfall der App), sondern stellen auch immer sicher dass Deployment ohne einen einzigen manuellen Handgriff über die Bühne gehen kann.

Interessant hier war auch, dass das Thema DevOps komplett in der Verantwortung des Teams liegt. Die bereits in der Keynote angesprochene „Haltung“, Infrastruktur wie Code zu behandeln ist auch hier wieder erkenntlich gewesen. Wie auch in anderen Vorträgen hat auch Martin betont, dass DevOps nur dann funktioniert, wenn das Team sich auch wirklich darauf commitet.

Wir haben nachgefragt, welcher Invest nötig war um zu dem jetzt vorhanden Zielbild zu kommen. Das Umbauen der sehr großen Applikation ( 10 Entwickler ) hat dabei ca. 6 Monate gedauert, 4 der Entwickler haben dabei ca. 70% ihrer Zeit nur für den Umbau investiert.

Vortrag: Tipps und Tricks im Umgang mit Docker

In diesem Vortrag hat Markus Wehrle einige praktische Tipps und Tricks aus seiner täglichen Arbeit mit Docker gegeben. Obwohl wir die genannten Punkte als sehr hilfreich erachten, würde die Auflistung den Rahmen des Blog-Eintrags sprengen. Bei Interesse kommt einfach auf uns zu.

Vortrag: Müssen es denn immer Docker und Kubernetes sein?

Im letzten Vortrag wurde dann von Michael Bruns von der Inovex AG dann noch einmal gechallenged, ob eine Containerisierte Umgebung tatsächlich immer die beste Lösung für alle bestehende Probleme oder auch neue Applikationen ist. Den Beweis, dass es auch komplett ohne Container und mit all deren Vorteile geht hat er durch das Vorstellen der Infrastruktur der App waipu.tv (TV Streaming) erbracht.

Die Kernaussage: Viele der Deployment- und Monitoringprobleme liegen nicht an fehlenden Container, sondern in der Applikation und deren Architektur selbst begraben. Ebenso an der Zusammenarbeit zwischen dem Development und dem Operations Team. Oder andersherum formuliert: man sollte sich zunächst über eine saubere Architektur Gedanken machen, die dann falls nötig zu einem späteren Zeitpunkt in Containern „verpackt“ werden kann. Container sind kein Selbstzweck, sondern helfen bei spezifischen Problemen wie z.B. schnell skalieren zu können. Sind diese spezifischen Probleme nicht der Engpass sollte man sich gut überlegen, ob man wirklich diese zusätzliche Komplexität benötigt.

Unsere Key Learnings

Zusammenfassend waren die Key-Learnings des Tages für uns:

  • Devops ist eine Haltung, keine Job Beschreibung. Dabei geht es vor allem um die Zusammenarbeit zwischen Developern & der IT bzw. den Maintainern einer Applikation. Devops startet also bereits in der Entwicklungsphase und nicht erst beim Go-Live.
  • Es benötigt das Buy-In von allen Beteiligten, damit auch wirklich einen Nutzen zu haben. Halbherziges herangehen führt nur zu zusätzlicher Komplexität und macht das System fehleranfälliger.
  • Container sind ein mächtiges Werkzeug – benötigen aber erfahrene Hände, um effizient und korrekt eingesetzt werden zu können.
  • Die Automatisierung alle Prozesse inklusive der Infrastruktur reduziert fehler und macht deployment so viel einfacher und ist State of the Art:
    • => Infrastructure as Code
    • => kein manuelles geklicke von Jenkins Konfigurationen
    • => kein Einloggen per SSH und manuelles Anpassen von Configs mehr
  • Die meisten Modularisierungs- und Skalierungsprobleme fangen bei den Apps an. Containerierisung & Orchestrierung helfen hier in den meisten Fällen erstmal nicht weiter, sondern fügen eher noch mehr Komplexität zum Technologie Stack hinzu.
    • => Apps MÜSSEN für Containerisierung vorbereitet sein
  • Cloud Service Dienste werden von vielen Unternehmen jetzt schon Produktiv genutzt und sind wahnsinnig einfach zu bedienen. Ob Datenbanken, Development- und Deployment Systeme, simple Lambda Funktionen oder spezielle Services, Xaas (X as a Service) ist in aller Munde.

Alles in Allem hat sich die Konferenz wirklich sehr gelohnt. Die Talks waren von sehr guter Qualität und haben uns einige gute und hilfreiche Erkentnisse gebracht. Vielleicht schaffen wir es ja nächstes Jahr wieder.

Autor: David Losert

Ich bin Web-Dev aus Leidenschaft und arbeite am liebsten immer an der "Cutting Edge", das heißt mit dem Neusten vom Neusten. NodeJS, Angular, React und Co. - für leichtgewichtige Applikationen mit fetten Clients und eleganten Lösungen. Darauf habe ich mich mit meinem Team "TeamJS" spezialisiert und das ist es, was mir jeden Tag aufs neue Freude bereitet.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.