Suche
Kolumne

DevOps Stories: ChatOps als Konzept der Zusammenarbeit

Konstantin Diener

©SuS_Media

Es ist ein ganz normaler Tag im Büro des MusicStore-Teams. Lukas und Christian sitzen an Lukas’ Rechner und entwickeln im Pair Programming. Martin ist auf dem Sprung in eine Community of Practice[1].

Martin: „Uups, schon so spät? Jetzt muss ich mich aber beeilen. Lukas, Christian, kommt ihr mit in die Community of Practice ‘Cloud Engineering’?”

Lukas: „Das wird heute bei uns nichts. Wir sind hier gerade voll in der Optimierung des Recommenders drin. Geh du mal alleine!“
In diesem Moment kommt Erik, der Product Owner, in den Raum.

Erik: „Hallo ihr beiden, könnt ihr mir eine kurze Auswertung erstellen?“

Christian: „Gerade nicht. Wir sind hier gerade voll drin!“

Erik: „Ich würde gerne die Frühjahrsaktion für MusicStore aufsetzen und brauche dazu kurzfristig ein paar Statistiken …“

Lukas:Das verstehe ich. Wir machen das hier fertig und kommen danach direkt zu dir. Ich nehme an, es sind ähnliche Dinge wie bei der Sommer-, der Herbst- und bei der Weihnachtsaktion?“

Erik: „Genau. Es wäre super, wenn ihr heute noch …“

Manuela, die Supportkollegin im Team, zieht ihr Headset ab und unterbricht Erik.

Manuela: „Ich habe jetzt in kurzer Zeit drei Kundenbeschwerden bekommen. Der Log-in scheint kaputt zu sein. Ich kann mich auch nicht mehr einloggen.“

Lukas: „Erik, die Statistiken müssen warten. Manuela, wir schauen es uns an.“

Christian: „Ich sehe gerade eine Mail, dass irgendein UI-Test fehlgeschlagen ist. Die ist von vor zwei Stunden.“

Manuela: „Warum habt ihr das nicht direkt gesehen?“

Christian: „Weil sie zwischen den 7 000 ungelesenen Mails in meinem Postfach einfach untergegangen ist! Außerdem habe ich die Notifications abgeschaltet, damit Lukas und ich uns auf den Recommender konzentrieren können.“

Lukas: „Lass uns mal gucken, welche Änderung zu dem Fehler geführt hat, damit wir das zurückrollen können.“

Christian: „Oh Mann, das wird die totale Puzzlearbeit. Wir haben am Log-in doch nichts geändert!“

Lukas: „Aber Martin hat doch heute Morgen im Standup gesagt, dass er sich heute ums Facebook Log-in kümmern will.“

Christian: „… und der hockt jetzt in der CoP!“

DevOpsCon Whitepaper 2018

Free: BRAND NEW DevOps Whitepaper 2018

Learn about Containers,Continuous Delivery, DevOps Culture, Cloud Platforms & Security with articles by experts like Michiel Rook, Christoph Engelbert, Scott Sanders and many more.

Group Chat löst mehr und mehr die klassische E-Mail ab

Die meisten von uns kennen das Problem. Jeden Tag prasseln unzählige E-Mails auf uns ein. Diese Mails landen zunächst einmal alle im selben Posteingang – wichtige Informationen der Continuous-Integration-Pipeline genauso wie Newsletter oder Werbung. Die E-Mails sind weder thematisch gruppiert noch hinsichtlich ihrer Kritikalität. Aus diesem Grund versuchen immer mehr Firmen, die Kommunikation via E-Mail durch Group-Chat-Tools wie Slack , HipChat , Campfire (mittlerweile in Basecamp) oder Flowdock zu ersetzen.

All diesen Werkzeugen ist gemein, dass sich die Kommunikation in Gruppen (auch Channels) organisiert und damit thematisch gruppieren lässt. Diesen Gruppen lässt sich auch eine Kritikalität zuordnen. Für alle Teammitglieder ist klar, dass die Nachrichten in den Gruppen „good-reads“ oder „dev-stuff“ weniger dringend sind, als die in „incidents“. Außerdem sorgen die Gruppen für Transparenz. Kommt z. B. ein neues Mitglied fürs Marketing hinzu, bekommt er oder sie nicht einen Stapel E-Mail-Verkehr weitergeleitet, sondern kann einfach die entsprechende Gruppe abonnieren und die bisherigen Diskussionen nachlesen. Ist die Marketinggruppe öffentlich, können sich auch alle anderen Mitglieder eines crossfunktionalen Teams über die aktuellen Aktivitäten auf dem Laufenden halten. Nach Meinung von Jason Hand [2] schauen die einzelnen Teammitglieder durch diese Transparenz zunehmend über ihren Tellerrand hinaus, verstehen, was außerhalb ihrer eignen Rolle passiert, und wachsen stärker zu einem crossfunktionalen Team zusammen.

Mit ChatOps wird das Group-Chat-Tool zum zentralen Werkzeug für das Team

Er sagt außerdem, das Group-Chat-Tool werde den Browser zunehmend als zentrales Werkzeug der Zusammenarbeit für Entwicklungsteams ablösen. Mit Zusammenarbeit ist dabei nicht nur die Kommunikation der Teammitglieder untereinander gemeint, sondern tatsächlich die gesamte Arbeit des Teams in Entwicklung und Betrieb. Diese Art der Kollaboration hat zuerst die Firma GitHub im Jahr 2011 gelebt. Dort wurde auch der Begriff ChatOps geprägt. ChatOps geht davon aus, dass alle Aktivitäten bei der Entwicklung und dem Betrieb einer Software innerhalb eines Kontexts stattfinden. Verdeutlichen wir diese Idee am Beispiel aus dem obigen Gespräch. Manuela erzählt Lukas und Christian, dass der Log-in in MusicStore nicht mehr funktioniert. Vermutlich werden die beiden wie folgt vorgehen:

1. Weil Manuela sie informiert hat, sehen sie in ihrem Postfach nach, ob es irgendwelche besonderen Vorfälle gab.
2. Weil sie eine Mail finden, die einen fehlgeschlagenen UI-Test meldet, werden sie sich den Fehler genauer ansehen.
3. Weil die Mail nicht ausreichend Informationen enthält, loggen sie sich im Webinterface von GitLab ein. Dort können sie alle Details zum fehlgeschlagenen Test einsehen.
4. Weil es danach aussieht, dass tatsächlich das neu eingeführte Facebook Log-in für den Fehler verantwortlich sein könnte, schauen sie sich Martins Änderungen in Git einmal genauer an.
5. Weil sie irgendwann herausfinden, welche Codezeilen konkret für den Fehler verantwortlich sind, rollen sie die Version zurück und deployen einen Stand ohne Martins Änderungen auf dem Produktivsystem.

Wenn Martins Termin länger dauert und er weder Lukas noch Christian danach noch antrifft, wird er sehr verwundert sein, warum sein Code aus Git verschwunden ist. Die beiden werden ihm dann vermutlich am nächsten Morgen im Standup von der Rettungsaktion berichten. Da sie sich mit Sicherheit keine Notizen gemacht haben, müssen sie dazu die einzelnen Aktivitäten aus dem Gedächtnis rekonstruieren.

Alle Schritte fanden in unterschiedlichen Systemen statt. Im Nachhinein wird schwierig nachzuvollziehen sein, was Lukas und Christian taten und warum sie es taten. ChatOps versucht, alle Aktivitäten ins Group-Chat-Tool zu holen, damit der Kontext („Warum funktioniert der Log-in nicht mehr?“) nachvollziehbar bleibt.

Statusinformationen lassen sich meist am einfachsten in den Group Chat bringen

Das erste Problem ist, dass die beiden den Fehler zu spät bemerken. Christian hat die Notifications seines E-Mail-Programms abgestellt, damit sie in Ruhe entwickeln können. Dadurch ist die Information über den fehlgeschlagenen Test einfach untergegangen.

Die meisten Teams beginnen mit ChatOps, indem sie die Statusinformationen ihres Versionskontrollsystems (VCS) und ihres Continuous Integration Servers in ihr Group-Chat-Tool einspeisen (Jason Hand spricht hier von „Pushing Context“[2]). Dazu wird das VCS oder der Build-Server über eine Third Party Integration (auch einfach „Integration“) mit dem Group-Chat-Tool verbunden. Für die gängigen Chattools existieren mittlerweile eine ganze Reihe fertiger Third Party Integrations in einer Art App Store (z. B. für Slack). Die Abbildungen 1 und 2 zeigen, wie eine solche Integration beispielhaft für Jenkins und GitLab aussehen kann.

Abb. 1: Jenkins-Statusmeldungen im Group Chat

Lukas und Christian wollen konzentriert entwickeln, ohne laufend von Nachrichten gestört zu werden. Gleichzeitig wäre es gut, wenn sie umgehend von schwerwiegenden Problemen wüssten. Dazu können sie im Group-Chat-Tool z. B. alle Gruppen/Channels außer #commits auf lautlos stellen.

Abb. 2: GitLab-Statusmeldungen im Group Chat

Am Ende ihrer Analyse haben die beiden den Commit identifiziert, der zum Problem mit dem Log-in geführt hat. Diese Erkenntnis würden sie gerne im Group Chat dokumentieren, um den Kontext weiterhin transparent zu machen (zu belegen, warum sie dann später genau diesen Commit zurückrollen). Da alle Änderungen im VCS automatisch in eine entsprechende Chatgruppe gepusht werden, können sie in ihrer Nachricht auf den entsprechenden Commit verweisen (Abb. 3).

Abb. 3: GitLab-Statusmeldungen im Group Chat

ChatBots sind die flexiblen Helferlein im Group-Chat-Tool

Erik möchte gerne eine Marketingaktion vorbereiten und benötigt dafür Zahlen aus der Datenbank von MusicStore. Er ist auf die Hilfe von Christian und Lukas angewiesen, da er keine SQL-Kenntnisse hat. Obwohl er die Informationen dringend braucht, bleibt ihm nichts anderes übrig, als zu warten, bis die beiden Entwickler fertig sind. Offensichtlich ist es nicht das erste Mal, dass Erik eine solche Auswertung braucht. Lukas fallen aus dem Stegreif drei ähnliche Marketingaktionen ein. Im Optimalfall könnte Erik sich zukünftig die Informationen selbst beschaffen. Dazu automatisieren die Entwickler den Prozess in Form eines Skripts oder eines kleinen Programms, das Erik gemäß der ChatOps-Philosophie im Group-Chat-Tool ansprechen kann:

>Erik:  @bot get marketing stats
>bot:  

Die kurze Konversation zeigt ein weiteres wichtiges Element der ChatOps-Philosophie: die sogenannten Chat Bots. Hierbei handelt es sich um Softwarekomponenten, die sich im Group Chat wie menschliche Benutzer anschreiben lassen und Aufgaben erledigen können. Das kann von der Abfrage des aktuellen Speiseplans der Kantine über den Dienstplan für die Rufbereitschaft bis hin zu Metriken des Produktivsystems oder Marketingkennzahlen reichen.

Den Fehler im Log-in nehmen Lukas und seine Kollegen zum Anlass, ein Group-Chat-Tool einzuführen und direkt die Statusnachrichten aus Git und Jenkins in diesem Tool zu visualisieren. Im nächsten Schritt wollen sie die Abfragen für Erik automatisieren. Außerdem haben sie sich vorgenommen, auch das Zurückrollen und Redeployen von Versionen in ein Skript zu verpacken und über den Chat Bot ansprechbar zu machen.

Geschrieben von
Konstantin Diener
Konstantin Diener
Konstantin Diener ist CTO bei cosee. Sein aktueller Interessenschwerpunkt liegt auf selbstorganisierten Teams, agiler Unternehmensführung, Management 3.0 und agiler Produktentwicklung. Daneben entwickelt er noch leidenschaftlich gerne selbst Software. Twitter: @onkelkodi
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: