devops avega
  • Digitale Lösungen

Datum

21. Oct 2024

Scrum vs. DevOps - geht das überhaupt zusammen?

Wir werden häufig gefragt, wie man denn Scrum in einem DevOps Team anwenden soll oder was denn jetzt nun besser geeignet. Welchen Ansatz soll ich für mein Team nehmen, wie kann ich mein Team diesbezüglich z.B. in der Rolle des Scrum Masters unterstützen? Konkret: DevOps oder Scrum?

Die beiden Konzepte mögen zu Beginn eher abstrakt wirken. Sie scheinen nicht wirklich zusammen zu passen und haben doch irgendwie Überschneidungen. Deshalb wird oft daraus abgeleitet, dass zwischen Scrum (oder agilen Praktiken im Allgemeinen) und DevOps eine Konkurrenz besteht und diese miteinander nicht ganz kompatibel sind.

Wir sind genau anderer Meinung und finden, DevOps und Scrum sind nicht nur kompatibel, sie ergänzen sich sogar sehr gut, wenn man gewisse Herausforderungen bewusst angeht. Darüber wollen wir etwas mehr Klarheit schaffen. Das Ganze Schritt für Schritt erklärt…

Was ist Scrum, was ist DevOps?

Scrum ist ein Framework, welches Teams helfen soll, komplexe Herausforderungen zum meistern. Teams, welche nach Scrum arbeiten, liefern iterativ Wert und können flexibel auf Veränderungen am Markt reagieren. Dazu definiert das Framework verschiedene Scrum Events, Scrum Accountabilities (früher Rollen) und Scrum Artefakte, die mindestens verwendet werden müssen, um nach Scrum zu arbeiten (siehe dazu den Scrum Guide).

DevOps hat zum Ziel, dass Teams in sehr kurzen Abständen (beinahe kontinuierlich) Anpassungen und neue Funktionalitäten gegenüber den Anwender:innen (d.h. in Produktion) zur Verfügung stellen können. Dabei steht die Prozessoptimierung der Delivery Pipeline im Zentrum. Dies wird unter anderem dadurch erreicht, dass Development und Operations (= darum DevOps) Kompetenzen in einem Team vereint vorhanden sind. Aus technischer Sicht ist dazu ein hoher Automatisierungsgrad grundlegend (oft referenziert als Continuous Integration- / Continuous Deployment-Pipeline). Dieser Teil alleine greift für DevOps allerdings zu kurz, weshalb nebst der Technologie, kulturelle Aspekte und die Zusammenarbeit als wichtige Schwerpunkte von DevOps ergänzt werden (siehe dazu das CALMS-Framework oder Three Ways).

Scrum ist ein Zusammenarbeitsframework mit einigen Regeln, um komplexe Problemstellungen meistern zu können. Scrum legt den Fokus auf die Teaminteraktion und gemeinsame Werte, um Wert zu liefern. DevOps vereint zwei Welten und bietet dafür eine gemeinsame Kultur, Technologie und Möglichkeiten für eine optimierte Zusammenarbeit. Hier werden erste Überschneidungen offensichtlich: bei beiden Konzepten geht es mitunter um die Art und Weise des Vorgehens und beide haben starke Auswirkungen auf die Kultur.

Wie sich diese Überschneidungen nun konkret auswirken und auf was dabei geachtet werden sollte, betrachten wir anhand ausgewählter Themenbereiche.

Wirklich crossfunktionale Teams

Scrum-Teams sollen gemäss Guide alle nötigen Fähigkeiten vereinen, um in jedem Sprint ein potenziell lieferbares Inkrement liefern zu können. Ein Scrum-Team nach DevOps geht da noch weiter, released womöglich mehrmals pro Sprint und misst auch noch die Auswirkungen der Veränderung. “Done” bedeutet also nicht nur “fertig implementiert und getestet” sondern “in Produktion verfügbar”.

Nach DevOps kann ein Team End-to-End Wert generieren und setzt ein Feature nicht nur um, sondern betreibt dies auch nachhaltig. Dafür werden die Kompetenzen im Team nicht nur in Richtung Betrieb erweitert sondern auch in Richtung Marketing und UX. Das Team muss in der Lage sein, Auswirkungen von Veränderungen am Produkt zu messen, im Kontext des Marktes zu interpretieren und daraus die richtigen Schlüsse abzuleiten. Kurz: das Team muss den ganzen DevOps-Cycle unterstützen.

Planbare & unplanbare Tätigkeiten

In der agilen Denkweise wird nicht zwischen Projekt & Betrieb unterschieden, da das Produkt als ganzes im Fokus steht. Scrum bleibt hier in gewisser Weise etwas abstrakt, wohingegen DevOps eine klare Antwort gibt und die betrieblichen Aspekte in das Team integriert. Somit gehören auch alle klassischeren Ops-Themen wie Life-Cycle, Security und Infrastruktur in die Verantwortung des Teams. Diese Themen werden alle ordentlich in die Sprints eingeplant, bzw. sind Teil der DoD.

Mit DevOps kommen auch einige unplanbare Arbeiten ins Team: Service-Requests, Incidents, neue Bugs, etc. Transparenz kann geschaffen werden, wenn Bugs, Incidents, etc. ebenfalls auf dem Sprint-Board platziert werden (z.B. in einer eigenen Swimlane). Weiter ist es wichtig, die Kapazität des Teams für unplanbare Arbeit am Sprint Planning zu reservieren (z.B. mit einer Support-Platzhalter-Story). So wird sichtbar, wie viel von der Gesamtkapazität für unplanbare Arbeit benötigt wird.

Um den Sprint-Fokus aufrecht zu erhalten, kann definiert werden, wer sich im Team um unplanbare Arbeit kümmert. Dabei hat sich ein rotierendes System bewährt, bei dem sich während einer bestimmten Zeitdauer (z.B. während einer Woche oder eines Sprints) ein festgelegtes Teammitglied um die eingehenden Anfragen kümmert. Zudem sollte die oben erwähnte reservierte Kapazität möglichst konstant gehalten werden. Dazu ist eine Triage-Regel nötig, welche eingehende Incidents oder Bugs priorisiert. So ist es möglich, einige der eingehenden Anfragen in den kommenden Sprint zu schieben und ordentlich im Sprint Planning einzuplanen.

Mehr Team, mehr Technical Excellence

Sowohl in Scrum wie auch in DevOps ist das Team als ganzes für das Lieferergebnis bzw. für die Qualität des Produkts verantwortlich. Auch wenn jedes Teammitglied sein Spezialwissen in einer bestimmten Disziplin hat (z.B. Dev, Testing, BA), unterstützt man sich gegenseitig und übernimmt des Öfteren auch Aufgaben ausserhalb seiner angestammten Disziplin. Mit DevOps erhält diese teaminterne Zusammenarbeit und der damit verbundene Know-How-Transfer nochmals mehr Gewicht.

Mit DevOps ziehen weitere Kompetenzen in das Team ein. Gleichzeitig soll die maximale Teamgrösse von 10 Personen nicht überschritten werden. Somit ist es umso wichtiger, dass der Wissensaustausch gefördert wird. Dies soll z.B. mit gezieltem Pairing oder regelmässiger Rotation bewusst eingeplant werden.

An dieser Stelle ist zu erwähnen, dass ein DevOps-Team gewisse Basisdienstleistungen konsumiert und nicht selbst dafür zuständig ist. Damit Infrastruktur hochautomatisiert, als Self-Service und “as-Code” genutzt werden kann, muss einiges als Basisplattform zur Verfügung stehen. Die Bereitstellung dieser Grundleistungen, ist typischerweise nicht Teil der Arbeit von DevOps-Teams. Diese werden entweder extern eingekauft oder von anderen internen Teams zur Verfügung gestellt.

Die hohe Release-Kadenz, die automatisierten Deployments bis in die Produktion und die klein geschnittenen Funktionalitäten stellen hohe Ansprüche an die technischen Kompetenzen des Teams. Die Nachvollziehbarkeit von Veränderungen muss jederzeit gewährleistet sein, um möglichen Problemen rasch auf die Spur kommen zu können. Funktionale und nicht funktionale Anforderungen müssen automatisiert getestet werden. Die kontinuierliche Verringerung von technischen Schulden und Optimierung der Architektur fordert nicht nur das Team sondern auch den PO in seiner Priorisierung und dem Stakeholdermanagement. Nur so kann erreicht werden, dass tatsächlich ein kontinuierlicher Flow entsteht und Engpässe in der Entwicklung möglichst selten auftreten.

Antipatterns bei der Kombination von Scrum & DevOps

Die verschiedenen Ideen und Möglichkeiten, die wir beschreiben, klingen zugegebenermassen ziemlich einfach. In der Praxis kann es durchaus herausfordernd sein und nicht immer reibungslos laufen. Bei folgenden Themen kannst du direkt ansetzen und dir einige Fragen stellen, welche helfen können, Impediments zu beseitigen:

  • Gemeinsames Verständnis von Methodik und Zusammenarbeit: Häufig interpretieren Mitglieder des Teams Scrum, DevOps und verschiedene Punkte rund herum unterschiedlich. Es hilft, Verantwortlichkeiten und Methodik zu klären und immer wieder zu kommunizieren.

  • Technische Grundlage und Plattform: Hat mein Team alles, was nötig ist, um die Continuous Integration- / Continuous Deployment-Pipeline auch zu optimieren? Wo stehen wir mit der Infrastruktur an? Wo fehlt uns möglicherweise Expertise für einen höheren Automatisierungsgrad? Wie können wir Technical Excellence erreichen?

  • Fehlende Geduld und fehlender Fokus in der Transformation: Scrum und DevOps bieten ganz viele Möglichkeiten, um als Team weiterzukommen und Prozesse, Qualität des Produkts und Zusammenarbeit zu optimieren. Das Ganze benötig Geduld und Zeit, um die nötigen Erfahrungen zu machen. Es hilft, als Team auch in der eigene Weiterentwicklung zu fokussieren und nicht an vier verschiedenen Ecken zu arbeiten.

Scrum & DevOps - die optimale gegenseitige Ergänzung

Wie dargestellt sind Scrum und DevOps nicht gegensätzliche Ansätze, sondern sie ergänzen sich gegenseitig. Man kann sogar die Ansicht vertreten, dass DevOps die logische Ergänzung zu Scrum ist und Scrum eine äusserst geeignete Arbeitsweise für DevOps-Teams darstellt. DevOps ermöglicht Scrum-Teams die schnellen Zyklen, welche das Framework vorsieht, in der Produktentwicklung wirklich zu leben. Scrum wiederum bietet leichtgewichtige Strukturen und ein Framework, welche DevOps-Teams sehr gut bei der Lösung ihrer Problemstellungen unterstützen.

Egal wie stark man die Synergien auslegen mag, sicher ist, dass DevOps und Scrum eine gemeinsame Basis an Werten und Prinzipien haben (kurze Feedbackzyklen, kontinuierlicher Flow, stetiges Verbessern, Zusammenarbeit über Silos hinweg, etc.). Dies ermöglicht es, beide Ansätze so zu leben, dass sie sich gegenseitig befruchten und optimal ergänzen.

Noé Sterckx

Agile Consultant

Scrum & DevOps in der Praxis kombinieren?

In einem unverbindlichen Speedcoaching hilfreiche Tipps dazu abholen?