Verinnerlichen der DevOps-Kultur
Befähigen Sie Entwicklungs- und Vorgangsteams zur kontinuierlichen Verbesserung ihres Systemdesigns und ihrer Prozesse, indem Sie mit einer Mentalität der Kooperation, gemeinsamen Verantwortung und Eigenverantwortung zusammenarbeiten. |
---|
DevOps ist eine Community of Practice, in der die Vielfalt der Perspektiven und Fähigkeiten auf eine gemeinsame Mission ausgerichtet ist. Teams müssen ein kollaboratives Umfeld für gemeinsames Wissen schaffen, anstatt isoliertes Lernen zu fördern. Verwenden Sie gemeinsam genutzte Funktionen, um Ressourcenbeschränkungen zu überwinden.
Eine gute DevOps-Kultur lebt von der gemeinsamen Verantwortung. Die Entwicklungs- und Betriebsteams sollten ihre Ziele und Prioritäten an den Erwartungen ihrer Kund*innen ausrichten und den geschäftlichen Fokus im Auge behalten. Das Entwicklungsteam sollte das Betriebsteam in die Feedbackschleife einbeziehen, damit die Verbesserungen vorangetrieben werden und andere Teams gleichermaßen davon profitieren. Umgekehrt sind die Betriebsteams dafür verantwortlich, dass das Entwicklungsteam bei seinen Geschäftsergebnissen erfolgreich ist, indem es Ressourcen und Feedback, die für die Workload relevant sind, weitergibt.
Gleichzeitig werden bei DevOps-Praktiken klare Verantwortlichkeiten und Zuständigkeiten für die einzelnen Teams festgelegt. Unabhängig davon, wo die Anwendung ausgeführt wird, ist das Workload-Team für diese Anwendung zuständig.
DevOps optimiert betriebliche Vorgänge so, dass sie effektiv, aber nicht aufwändig sind. Um die Vorteile von DevOps voll ausschöpfen zu können, sollte die Kultur Prozesse durch Technologie optimieren und über Prozesse für die Menschen in der Organisation verfügen, um eine transparente Kommunikation zu fördern.
Beispielszenario
Die Personalabteilung von Contoso startet ein Projekt zur Entwicklung einer neuen branchenspezifischen App für den internen Gebrauch der Abteilung. Die App befindet sich derzeit in der Planungsphase, es wurde noch nicht mit dem Entwurf oder der Implementierung begonnen.
Effiziente Zusammenarbeit
Verwenden Sie gemeinsame Systeme und Tools, die eine kollaborative Umgebung für die Kommunikation und die Verfolgung der Fortschritte fördern.
Gemeinsame Tools und Prozesse ermöglichen eine transparente Kommunikation. Sowohl die Entwicklungs- als auch die Betriebsteams profitieren von der Kenntnis der Situation in den verschiedenen Umgebungen, von gemeinsamen Support-Problemen und den allgemeinen Herausforderungen und Erfolgen.
Im Falle eines Incidents sind die Teams bereits mit den bestehenden Eskalationswegen vertraut.
Ein gemeinsames Backlog macht die Prioritäten, wie die Arbeit an neuen Funktionen oder die Behebung von Fehlern, deutlich.
Herausforderung von Contoso
- Contoso hat drei technische Teams, die an der Entwicklung und Wartung der neuen App beteiligt sind: Entwicklung, Test und Betrieb. Derzeit gibt es keine standardisierten Kommunikations- und Projektverfolgungstools, die in diesen Teams einheitlich verwendet werden.
- In der Vergangenheit konnte jedes Team seine eigenen Tools auswählen. Einige verwenden Slack, während andere für die interne Kommunikation Microsoft Teams nutzen. Einige verwenden Azure DevOps (ADO) und andere Excel, um Aufgaben zu verfolgen, und jedes Team verwendet ein anderes Dokumenten-Repository als die anderen, um Wissen und Incident Response-Verfahren zu teilen.
- Bei früheren Projekten hatte die gesamte technische Organisation Probleme mit der Kommunikation und Zusammenarbeit, weil unterschiedliche Tools verwendet wurden. Für die Zukunft möchte Contoso HR die Produktivität verbessern und Situationen vermeiden, die das Projekt verlangsamen könnten, wie die, die wir bereits kennengelernt haben.
Umsetzung und Ergebnisse
- Die Verantwortlichen der technischen Teams trafen sich mit den Projektträgern, um die Standardtools auszuwählen, die in Zukunft verwendet werden sollen. Die Gruppe entschied sich für ADO, um ihr Backlog, ihr Code-Repository und ihre Bereitstellungspipeline zu verwalten. Für die Kommunikation und Zusammenarbeit haben sie sich außerdem für Microsoft Teams entschieden.
- Die Verwendung gemeinsamer Tools ermöglicht es den Entwicklungs-, Betriebs- und Testteams, über den Status der verschiedenen Umgebungen, gemeinsame Projektprobleme und Teamerfolge informiert zu bleiben und sich abzustimmen. Darüber hinaus können die Teams von einem einzigen bekannten Standort aus auf Informationen über etablierte Eskalationspfade bei Incidents zugreifen.
- Ein gemeinsames Backlog hilft auch dabei, einheitlich zu planen und bei den Prioritäten, wie der Entwicklung neuer Funktionen oder der Behebung von Fehlern, im Einklang zu bleiben.
Verinnerlichen der kontinuierlichen Verbesserung
Entwickeln Sie während des gesamten Entwicklungszyklus eine Denkweise des kontinuierlichen Lernens und Experimentierens. Unterstützen Sie den Wissensaustausch zwischen den Teams und pflegen Sie die Dokumentation für die Wiederverwendung. Führen Sie außerdem eine schuldlose Analyse und Nachbesprechung nach der Veröffentlichung und/oder nach einem Incident durch.
Durch Experimentiermechanismen wie A/B-Tests und die Entwicklung von Machbarkeitsstudien können Sie Innovationen fördern und gleichzeitig die Kosten niedrig halten.
Teilen Sie Ihr Wissen durch Zusammenarbeit, um das Team in Bezug auf Designansätze, Werkzeuge und Prozesse zu schulen.
Retrospektiven nach einem Projekt helfen, Verbesserungsmöglichkeiten zu erkennen und Erfolge zu feiern.
Herausforderung von Contoso
- Um den Informationsaustausch noch weiter zu erleichtern und eine Kultur der Zusammenarbeit und Transparenz zu fördern, möchte das Team eine zentrale und leicht zugängliche Quelle der Wahrheit für die Projektdokumentation haben. Dies wäre unter anderem hilfreich, wenn ein*e neue*r Entwickler*in dem Team beitritt und sich schnell in das Projekt einarbeiten muss.
- Von besonderem Interesse für Contoso HR ist der Wunsch, sicherzustellen, dass Lehren aus Incidents, die die Verfügbarkeit der Anwendung beeinträchtigen, erfasst und in der gesamten technischen Organisation weitergegeben werden, um bei zukünftigen Incidents zu helfen und eine Wiederholung so weit wie möglich zu verhindern.
- Um die Fehler der Vergangenheit bei der Gestaltung der Benutzererfahrung der Anwendung nicht zu wiederholen, möchte das Team auch einen agileren Ansatz verwenden, der echtes Benutzerfeedback berücksichtigen kann.
Umsetzung und Ergebnisse
- Das Team baut ein Wiki zum Wissensaustausch in ADO auf, in dem alle Entwurfsspezifikationen zusammen mit allen aktiven Betriebsverfahren, Incident Response-Plänen und retrospektiven Ergebnissen veröffentlicht werden.
- Die Durchführung von schuldlosen Retrospektiven nach Incidents und jeder Entwicklungsiteration und die Dokumentation der Erkenntnisse im Wiki helfen dem Projektteam, Verbesserungsmöglichkeiten zu erkennen und Erfolge zu feiern.
- Das Team hat einen experimentellen Ansatz für den Entwurf der Benutzererfahrung für die neue Anwendung gewählt und A/B-Tests eingesetzt, um die beste Benutzererfahrung aus mehreren von den UX-Berater*innen vorgeschlagenen Varianten herauszufinden. Dabei wurde das Feedback der Benutzer*innen berücksichtigt, um datengesteuerte Entscheidungen zu treffen.
Codifizieren von Entwicklungs- und Betriebsabläufen
Legen Sie Standards für alle Entwicklungs- und Betriebsabläufe fest und überprüfen und validieren Sie diese in regelmäßigen Abständen. Zu diesen Abläufen gehören Routineaufgaben, Out-of-Band-Prozesse, Notfallübungen und -situationen, die Auswahl von Tools, Überwachungsverfahren, Qualifizierungspläne und sogar die Kommunikation mit Projektbeteiligten und die Offenlegung von Kundeninformationen. Treffen Sie Ihre Entscheidungen ganz bewusst und eindeutig.
Standards machen Vorgänge vorhersehbar und machen Prozesse und Praktiken skalierbar. Die Validierung von Standards ist ein guter Weg, um Verbesserungsmöglichkeiten aufzuzeigen.
Bereiten Sie sich auf Notfälle und Wiederherstellungssituationen vor, indem Sie regelmäßig Übungen durchführen.
Führen Sie das Programm präzise aus und ermöglichen Sie die Governance, um Anomalien zu verhindern, die zu Risiken führen.
Herausforderung von Contoso
- Eine der Herausforderungen, die sich in der Vergangenheit auf die Produktivität und die Qualität der Ergebnisse des Entwicklungsteams ausgewirkt haben, ist der Mangel an Standardisierung und Konsistenz in der Codebasis. So macht es beispielsweise das Fehlen einheitlicher Benennungskonventionen oder die Verwendung gemeinsamer Softwaremuster den Teammitgliedern schwer, den Code der anderen zu verstehen, was sich auf die Effizienz ausgewirkt hat.
- Ohne einen ordnungsgemäß dokumentierten gemeinsamen Ansatz für Vorgänge kann es außerdem vorkommen, dass die Mitarbeiter*innen unterschiedliche Methoden anwenden, um das gleiche Ziel zu erreichen, was zu Ineffizienz und Verwirrung führt.
- Motiviert durch den Erfolg bei der Implementierung anderer DevOps-Verbesserungen hat Contoso HR beschlossen, dieses Problem im Rahmen des nächsten Entwicklungszyklus in Angriff zu nehmen.
Umsetzung und Ergebnisse
- Das Entwicklungsteam kommt während des Entwicklungszyklus zusammen, um sich auf eine Reihe von Entwicklungsstandards zu einigen. Die entsprechenden Entscheidungen werden dokumentiert und bei Code Reviews und mit Hilfe von Tools durchgesetzt. Es werden unter anderem folgende Themen betrachtet: Codeformatierung und Benennungskonventionen, Fehlerbehandlung, Versionskontrolle und Sicherheitspraktiken. Das Team plant, den Qualitätsmetriken und Berichten, die in ADO generiert werden, große Aufmerksamkeit zu schenken, um die Auswirkungen dieser Änderungen auf die Qualität und Produktivität zu quantifizieren. So können sie den Wert dieser Art von DevOps-Verbesserungen gegenüber ihrem Managementteam nachweisen.
- Ebenso nimmt sich das Betriebsteam im gleichen Zeitraum die Zeit, die bestehende Dokumentation der Routineverwaltung und Problembehandlung zu erweitern und sie im Wiki zu veröffentlichen. In Zukunft wird das Wiki als einzige Quelle der Wahrheit dienen und Zeit und Energie sparen, die sonst für die Suche nach Informationen aufgewendet werden müssten.