DevOps hat sich als eine unverzichtbare Philosophie etabliert, die die Kluft zwischen Softwareentwicklung und IT-Betrieb überbrückt. Es geht über den bloßen Einsatz von DevOps-Tools hinaus. Ein erfolgreiches DevOps-Team beschleunigt nicht nur die Lieferprozesse, sondern sorgt auch für Qualität und Zuverlässigkeit. Allerdings erfordert die Bildung eines solchen Teams eine harmonische Verschmelzung von Tools, Kultur, Prozessen, Zusammenarbeit und mehr. Was sind die entscheidenden Komponenten eines erstklassigen DevOps-Teams und wie können Organisationen sie für optimale Ergebnisse integrieren? Im Rahmen dieser Serie hatten wir das Vergnügen, Dylan Etkin, Mitgründer und CEO von Sleuth, zu interviewen.
Hallo Dylan – Können Sie uns Ihren Werdegang schildern?
Ich habe meine Karriere als Softwareentwickler begonnen. Ich hatte das Glück, bei einem kleinen Start-up namens Atlassian als 20. Mitarbeiter einzusteigen. Ich habe dort 10 Jahre verbracht, sehr viel gelernt und beobachtet, wie das Unternehmen von 20 auf 1200 Mitarbeitende gewachsen ist. Ich war einer der ersten drei Entwickler bei Jira, der erste Jira-Architekt und als Engineering Lead für Bitbucket tätig; dieses Produkt habe ich von 40.000 auf 2 Millionen Nutzende gebracht.
Ich habe Atlassian verlassen und bin zu einem kleinen Start-up namens Statuspage gewechselt. Ein Jahr später wurde Statuspage von Atlassian übernommen, und ich fand mich wieder im Mutterschiff. Nach drei Jahren, in denen ich dieses Team bei Atlassian leitete, beschloss ich, mein eigenes Unternehmen zu gründen – Sleuth – um das zu professionalisieren, was schon immer meine Leidenschaft war: effiziente Entwicklungsteams aufzubauen.
Ich war schon immer fasziniert von Entwicklertools und davon, Teams dabei zu helfen, effizient zu arbeiten und kontinuierlich zu lernen.
Wem verdanken Sie Ihren Erfolg?
Viele Menschen haben mich auf meinem Weg unterstützt. Je älter ich werde, desto mehr erkenne ich, was für ein besonderes Netzwerk ich mir aufgebaut habe und wie offen all diese Menschen sind, wenn ich um Hilfe bitte.
Ein Beispiel ist John Kodumal, der Mitgründer und CTO von LaunchDarkly. John und ich waren Kollegen bei Atlassian. Als er LaunchDarkly gründete, hat er stets offen über seine Erfahrungen in seinem Start-up gesprochen.
Als ich mich motivierte, Sleuth zu gründen, unterstützte er mich auf allen Ebenen. Von Ideenfindung über offene Gespräche, wie man vorgehen könnte, bis hin dazu, dass er unser erster Kunde wurde – John hat mich in allen Phasen meines Weges begleitet.
Können Sie uns drei Stärken, Fähigkeiten oder Eigenschaften nennen, die Ihnen geholfen haben, an diesen Punkt Ihrer Karriere zu gelangen? Wie können andere diese Bereiche gezielt bei sich selbst fördern?
- Beharrlichkeit. Fähigkeiten und Intelligenz bringen einen nur bis zu einem gewissen Punkt. Immer wieder zu einem Problem zurückzukehren, ist viel wirkungsvoller. Beharrlichkeit – selbst angesichts mehrerer Rückschläge – hat für mich Erfolg definiert.
- Detailgenauigkeit. Diese Eigenschaft kam mir schon immer natürlich vor. Als Entwickler ist es eine entscheidende Fähigkeit, mit der man Aufgaben nicht nur erledigt, sondern exzellent ausführt. In einem Start-up-Umfeld ist diese Fähigkeit umso wichtiger. Wenn man ein Produkt von der Vision zur Realität begleitet, entscheidet die Liebe zum Detail darüber, ob ein Produkt durchschnittlich oder von den Nutzenden geliebt wird.
- Delegieren. So sehr man auch voll für sein Unternehmen verantwortlich sein muss, verwandelt sich ein Start-up sehr schnell in ein Unterfangen, bei dem man Leute einstellt, die in vielen Bereichen klüger sind als man selbst – und indem man in der Lage ist, Aufgaben abzugeben, ermöglicht man es anderen, erfolgreich zu sein und das Geschäft voranzubringen.
An welchen Fähigkeiten arbeiten Sie aktuell noch?
Ich arbeite ständig an vielen Dingen – es gibt nie einen Mangel an Fähigkeiten, an denen man arbeiten kann. Im Moment beschäftigt mich besonders, wie man das Beste aus den eigenen Leuten herausholt. Jeder Mensch ist anders, und herauszufinden, wie man für jede Person das Umfeld schafft, in dem sie ihre beste Arbeit leisten kann, ist eine echte Herausforderung.
Lassen Sie uns über ein erfolgreiches DevOps-Team sprechen. Was sind die wichtigsten Ziele, die ein DevOps-Team für eine digitale Transformation formulieren sollte?
DevOps-Teams sind in der Lage, Arbeit effizient von der Idee bis zum erfolgreichen Produktionsstart zu bringen. Daher ist das oberste Ziel eines DevOps-Teams, die Tools, Prozesse und die Kultur zu schaffen, die es einzelnen Entwicklern ermöglicht, Projekte schnell von der Idee bis zum erfolgreichen Launch zu bringen.
Zur Unterstützung dieses Hauptziels gehören folgende Ziele:
- Die Fähigkeit, Arbeiten in kleinen Portionen zu definieren
- Eine vollständig automatisierte CI/CD-Pipeline
- Überwachbarkeit und Vorproduktionsumgebungen, die als Sicherheitsnetz dienen, sodass Entwicklerinnen und Entwickler Änderungen mit Vertrauen in die Produktion bringen können
- Ein klarer Prozess für den Fall, dass Änderungen schiefgehen. Alle wissen, wie Fehler erkannt werden und wie das System wieder in einen funktionierenden Zustand gebracht werden kann
- Rückhalt aus dem gesamten Unternehmen – PMs, Marketing, Support, Vertrieb und Geschäftsleitung. Teams werden eine DevOps-Transformation nicht ohne Rückendeckung des gesamten Unternehmens schaffen
Gibt es Herausforderungen oder häufige Fallstricke, die DevOps-Teams im Blick behalten sollten?
Dafür gibt es zu viele, um sie alle aufzuzählen. Besonders wichtig ist, zu erkennen, dass mit der Umsetzung von DevOps mehr Verantwortung auf die Entwickler übertragen wird. Das geschieht nicht von selbst. Wenn nicht in Prozesse und Tools investiert wird, läuft man Gefahr, ein System zu schaffen, in dem den Entwicklern keine Zeit mehr für die eigentliche Arbeit bleibt.
Sie laufen außerdem Gefahr, eine Umgebung zu schaffen, in der Entwickler schnell ausbrennen. Es muss bedacht werden, dass Menschen nur eine begrenzte Kapazität haben. Daher sollte man sorgfältig überlegen, wie Entwickler, die DevOps praktizieren, bestmöglich unterstützt werden können.
Wie können eine effektive Zusammenarbeit und Kommunikation zwischen Teammitgliedern die Produktivität und den Erfolg eines DevOps-Teams steigern, und welche Praktiken können dies fördern?
Kommunikation und Zusammenarbeit sind Voraussetzung für die Umsetzung von DevOps. Zu den wichtigsten Praktiken gehören:
- Die Verwendung eines Issue-Trackers für sämtliche Aufgaben und die Übernahme dieses Kontexts sowie der Informationen in Commits und Code-Reviews
- Code-Review mittels Pull-Requests
- Bereitstellung einer Echtzeit-Chat-Lösung wie Slack für das Team
- Team-basierte Deploy-Benachrichtigungen über Slack oder das teaminterne ChatOps-Tool
- Genehmigungen in Slack zum Fördern von Änderungen aus Vorproduktionsumgebungen in den Produktivbetrieb
- Benachrichtigungen für einzelne Entwickler, wenn ihre Änderungen ausgeliefert wurden und wenn sie Fehlerbedingungen überschritten haben
- Transparenz für das Team bei Vorfällen und Zeiten, in denen Deployments ausgesetzt werden sollten
- Team-Demos mit Produktmanagern und anderen Stakeholdern
- Tägliche Standup-Meetings
Welche Rolle spielt CI/CD in DevOps und welche Best Practices gibt es bei der Implementierung von CI/CD-Pipelines, um einen reibungslosen und zuverlässigen Software-Release-Prozess sicherzustellen?
CI/CD ist vermutlich die wichtigste Werkzeug-Komponente zur Unterstützung eines DevOps-Teams. Im Idealfall verfügt das Team über eine vollständig automatisierte Deployment-Pipeline, die in angemessener Zeit abläuft, sodass Entwickler nicht lange warten müssen und ihre Änderungen zügig in die Produktion begleiten können. Es ist entscheidend, Continuous Integration und Testdurchläufe als festen Bestandteil dieser idealen Pipeline zu integrieren. Das Ausführen einer umfassenden Testsuite gegen die eigenen Änderungen als Gate für Deployments ist das wichtigste Sicherheitsnetz, um qualitativ hochwertige Änderungen auszuliefern.
Sollte das Team nur einmal pro Woche Änderungen ausliefern wollen, ist auch eine nicht vollständig automatisierte Pipeline denkbar. Möchte das Team jedoch mindestens einmal täglich deployen, ist eine vollständige Automatisierung unerlässlich und Deployments sollten zum Routinefall werden.
Wie trägt die Förderung einer DevOps-Kultur und einer entsprechenden Denkweise zum Gesamterfolg eines DevOps-Teams bei und welche Strategien können Organisationen einsetzen, um diese Kultur in ihren Entwickler- und Betriebsteams zu verankern?
Für Entwickler:
- Wöchentliche oder zweiwöchentliche Sprint-Planungen helfen, Aufgabengrößen zu definieren und eine Teamvereinbarung darüber zu treffen, wie die Aufgaben in das Zeitfenster passen
- Automatisierte CI-Überprüfungen des Release-Branches und teamweite Transparenz der Ergebnisse helfen, den Release-Branch stets baubar zu halten
- Eine rotierende "Wächter"-Rolle im Team, bei der eindeutig festgelegt ist, wessen Aufgabe es ist, den Release-Branch funktionsfähig zu halten
- Eines der besten Mittel für das Ausliefern unfertiger Arbeiten ist die Einführung von Feature Flags.
- Sehr effektiv kann es auch sein, jede Pull-Request einzeln auszuliefern. Durch die Übernahme dieses Musters können bei der Code-Review zur Pull-Request auch die Größe der Änderung beurteilt werden. Ist ein Batch zu groß, können andere Teammitglieder einen Entwickler bitten, die Änderung in mehrere Pull-Requests zu unterteilen.
- Genügend Metriken und das Verständnis der zugrunde liegenden Normalwerte, um einen erfolgreichen Deployment-Vorgang zu überprüfen
- Verstehen, wie sie im Bedarfsfall eskalieren und Deployments zurückrollen können
- Das eigenständige und schnelle Deployen ihrer eigenen Änderungen in sämtliche gewarteten Umgebungen ohne Fehlfunktionen ist gewährleistet
Für PMs und Designer:
- Einbindung eines Product Managers bereits in die Planungsphase, damit dieser die Bedürfnisse der Kunden auch bei inkrementellen Deployments einbringen kann.
- Einsatz von Feature Flags, sodass Code zwar ausgerollt, aber den Kunden noch nicht angezeigt wird. Das erhält die Flexibilität für PMs und ermöglicht Entwicklern gleichzeitig zügige Weiterarbeit.
- Einigkeit über Feedback- und Nachbesserungsprozesse, zum Beispiel ein direkt an einen Entwickler zugewiesenes Issue. Eine Strategie zur Lösung unvollständiger Arbeiten ist die Einführung von sechs Wochen dauernden Zyklen im Team.
Für Engineering Manager:
- Einführung von Prozessen, die Kommunikation fördern, wie regelmäßige Planungsmeetings, Code-Reviews und wöchentliche Demos.
- Zusage, Entwicklungszeit zum dauerhaften Erhalt der Funktionalität des Release Branches einzusetzen. Den Codefluss aufrechtzuerhalten bedeutet auch, dieses neue System zu unterstützen. Erkennt das Team einen Engpass, sollte der Manager ermöglichen, diesen Engpass zu beseitigen (zum Beispiel: fehleranfällige CI-Tests mit mehr als 20% Fehlerwahrscheinlichkeit beheben).
- Einführung von Tools, die eine kontinuierliche Messung der DORA-Metriken ermöglichen
Für Führungskräfte:
- Stellen Sie die Accelerate-Metriken für Ihre Projekte bereit und machen Sie sie Ihren Führungskräften mit Kontext verfügbar.
- Stellen Sie die Betriebszeit oder eine äquivalente Kennzahl für Ihre Anwendungen bereit.
- Verschaffen Sie Ihrem Führungsteam dieselben hochwertigen Informationen über große Funktionsumfänge, die ausgeliefert werden.
- Wenn Sie eine Führungskraft sind, verstehen Sie, dass Veränderungen Zeit brauchen. Setzen Sie klare Ziele und machen Sie Ihr Team für die Erreichung der übergeordneten Ziele verantwortlich, bleiben Sie jedoch flexibel darin, wie diese erreicht werden. Vertrauen Sie, aber überprüfen Sie auch.
- Nehmen Sie sich die Zeit, Ihrer Organisation zu erklären, wie Sie Ihren Kunden Wert liefern. Erklären Sie, wie inkrementelle Lieferungen funktionieren, welche Dinge in einem "Big Bang"-Release erscheinen werden und wie diese Arbeitsweise es ermöglicht, schneller Mehrwert für Ihre Kunden zu schaffen.
Was sind die entscheidenden Komponenten eines erfolgreichen DevOps-Teams?
1 . Das Team arbeitet gemeinsam in einer Kultur ohne Schuldzuweisungen.
Softwareentwicklung ist ein Teamsport. Vorfälle und Fehler bieten die Chance, als Team zu lernen, statt jemanden verantwortlich zu machen. Eine Kultur ohne Schuldzuweisungen kann über einzelne Incidents hinausreichen. Wenn Ziele zur Teamentwicklung gesetzt werden, kann sich das Team darauf konzentrieren, Ergebnisse zu verbessern, anstatt Einzelpersonen oder Prozesse für Schwachstellen zu beschuldigen.
2 . Deployments sind ein Nicht-Ereignis.
Um in kleinen Schritten auszuliefern und schnell auf Vorfälle und Kundenfeedback zu reagieren, muss das Deployment einfach sein und keine Angst oder Besorgnis auslösen. Vertraut ein Team seinen Deployments nicht, oder dauern sie zu lange oder beinhalten manuelle Schritte, führt das zu Angst und Zögern – das verhindert die Einführung von DevOps.
3 . Entwickler sind einzeln befähigt, Änderungen vom Konzept bis zum zuverlässigen Produktivstart zu bringen. DevOps funktioniert, wenn die Verantwortung für den gesamten Prozess vom Konzept bis zum Launch in die Hände der Entwickler gelegt wird. So kann das Team Arbeit in kleine Pakete aufteilen und schnell kontinuierlich Mehrwert für die Kunden liefern.
4 . Das Team verfügt über Sicherheitsnetze wie Beobachtbarkeit und Ausfallkontrollen, damit es mit Zuversicht schnell handeln kann (das ist einer von vielen Vorteilen von Data-Observability-Tools). Die Zeit, in der man "schnell handelt und Dinge kaputtmacht", ist vorbei. Jetzt muss man schnell und gleichzeitig zuverlässig handeln. Dafür müssen automatisierte Sicherheitsnetze vorhanden sein.
5 . Die gesamte Organisation steht hinter der DevOps-Arbeitsweise.
Welche aufkommenden Trends sehen Sie im Bereich DevOps, die zukünftig einen erheblichen Einfluss auf digitale Transformationsstrategien haben könnten?
Das mag aktuell wie eine offensichtliche Antwort erscheinen, doch KI-Tools verändern schon jetzt die Arbeit von Entwicklern und werden auch zukünftig einen großen Einfluss darauf haben, wie DevOps praktiziert wird. KI wird mindestens dazu dienen, Fehler zu erkennen und zu identifizieren, was heute noch nicht möglich ist.
Wenn sie all ihre Versprechen einlöst, wird sie letztlich die komplexen Deployment- und Testpipelines, die wir heute haben, vollständig ersetzen.
Abonnieren Sie den Newsletter des CTO Clubs für mehr Einblicke, Zusammenfassungen, Q&As und mehr!
