Entwickler haben die Verantwortung, bei der Lösung von Zwischenfällen zu helfen. Hier ist Ihr Leitfaden für einen erfolgreichen Ablauf im Krisenfall. [...]
Niemand mag es, mitten in der Nacht aufgeweckt zu werden oder ein Wochenende zu unterbrechen, weil ein größerer Zwischenfall die Zuverlässigkeit oder Performance der Anwendung stört. Wenn eine Anwendung wirklich ausfällt und den Geschäftsbetrieb beeinträchtigt, wollen nur wenige den Druck des War Rooms zu spüren bekommen. Agile Entwickler sollten sich auf ihre Sprint-Verpflichtungen konzentrieren und so wenig Zeit wie möglich damit verbringen, die Grundursachen größerer Vorfälle zu ermitteln. Dennoch liegt es in der Verantwortung aller, auf größere Zwischenfälle zu reagieren, Unterstützung bei der Lösung von Problemen zu leisten und sich an der Ursachenanalyse zu beteiligen.
Im besten Fall verfügen die Einsatzteams über Überwachungssysteme, die Probleme erkennen, alarmieren und lösen. Die Realität sieht so aus, dass in Betriebsumgebungen Probleme auftreten können, die sich der Kontrolle aller entziehen, wie z.B. Sicherheitsverletzungen, größere Cloud-Ausfälle, Probleme mit dem Service von Drittanbietern oder größere Infrastrukturausfälle, die den Betriebsablauf stören. Selbst die robustesten, agilen Prozesse, Lebenszyklen in der Softwareentwicklung oder Best Practices der Entwickler können nicht gewährleisten, dass Anwendungen risikofrei und 100 Prozent zuverlässig sind.
Ingenieure für Betriebs- und Standort-Zuverlässigkeit können oftmals häufige Probleme beheben, ohne das Entwicklungsteam zu behindern. Häufig auftretende Probleme können durch Automatisierung oder durch die Pflege von Runbooks behoben werden, die vorschreiben, wie sie zu lösen sind. Aber die Entwickler werden wahrscheinlich benötigt, um komplexere oder weniger häufige Pannen zu beseitigen, und es gibt viele Möglichkeiten, wie sie dazu beitragen können, das Auftreten von Betriebsproblemen von vornherein zu verhindern.
Störungsmanagement ist ein kritischer Geschäftsprozess
Viele Unternehmen entwickeln heute Software-Anwendungen als Teil von kundenorientierten Produkten, Customer Experiences zur Unterstützung von Geschäftsdienstleistungen oder Workflows, die es den Mitarbeitern ermöglichen, ihre Aufgaben zu bewältigen. Wenn diese Anwendungen ausfallen oder nicht leistungsfähig genug sind, kann dies erhebliche Auswirkungen auf das Geschäft haben, wie z. B. Umsatzverluste, nicht budgetierte Kosten, Auswirkungen auf den Ruf der Marke, Projektverzögerungen und eine schlechte Arbeitsmoral seitens der Mitarbeiter.
Wenn Anwendungen häufig oder lange ausfallen, eine schlechte Leistung oder unerwartete Fehler aufweisen, wirkt sich dies auch negativ auf agile Software-Entwicklungsteams aus. IT-Abteilungen, die Mitarbeiter befragen und die Kundenzufriedenheit messen, werden wahrscheinlich keine guten Bewertungen erhalten, wenn unzuverlässige Anwendungen die Arbeit der Mitarbeiter beeinträchtigen. Es ist auch schwieriger für das IT-Management, Budgeterhöhungen, Schulungen, zusätzliche Vergütungen oder andere Vorteile zu erhalten, wenn das Unternehmen der Ansicht ist, dass die Software-Entwicklungsteams neue Funktionen nicht zuverlässig freigeben können.
Entwicklungsteams sollten proaktive Maßnahmen ergreifen, um Probleme zu verhindern, Unterstützung bei Zwischenfällen zu bieten, sich an der Analyse der Ursachen zu beteiligen und bei kritischen Fehlern Prioritäten zu setzen.
Betrachten wir diese Verantwortlichkeiten im Detail.
Setzen Sie bei der Entwicklung und Freigabe von Anwendungen Prioritäten bei der Qualität
Agile Entwicklungsteams konzentrieren ihre Bemühungen oft auf die Entwicklung und Veröffentlichung neuer Funktionen, die Verbesserung der Benutzererfahrung und die Bewältigung technischer Probleme. Teams, die Entwicklungspraktiken wie CI/CD-Pipelines (Continuous Integration/Continuous Delivery) einführen, müssen auch ihre Testpraktiken verlagern und die meisten Tests automatisieren, um sicherzustellen, dass neuer Code nicht zu einem Bruch der Software-Builds führt und dass alle automatisierten Tests bestanden werden.
Entwickler und Qualitätssicherungsprüfer sollten ihre Sicherheitspraktiken nach links verlagern und Kodierungspraktiken einführen, um die Zuverlässigkeit von Anwendungen zu gewährleisten. Entwicklungsteams sollten auch mit Betriebsteams bei der Konfiguration, Automatisierung und Überwachung der Infrastruktur zusammenarbeiten. Best Practices sind u. a:
- Standardisierung und Zentralisierung der Anwendungsprotokollierung und Ausnahmebehandlung, um sicherzustellen, dass Anwendungsprobleme nachverfolgbar sind.
- Minimieren Sie die Sperrung von Anwendungen und Datenbanken, die zu Engpässen führen können, insbesondere bei höherer Belastung.
- Konfigurieren Sie Anwendungen, Dienste und Datenbanken für eine hohe Zuverlässigkeit und sorgen Sie für einen Lastausgleich über mehrere Cloudzonen hinweg.
- Zentralisieren Sie die Überwachung und Warnmeldungen und suchen Sie proaktiv nach Leistungsabweichungen in longitudinaler Richtung.
- Automatisieren Sie Verfahren, die Dienste je nach Bedarf neu starten, skalieren und abschalten.
Schließlich ist es von entscheidender Bedeutung, die Anwendungsarchitektur und den Code zu dokumentieren, da es sehr wahrscheinlich ist, dass Personen, die nicht an der Entwicklung der Anwendung beteiligt waren, die Verantwortung für die Unterstützung der Anwendung übernehmen. Selbst wenn der Code modular aufgebaut ist oder Mikrodienste nutzt, ist es wichtig, den Entwicklern und Zuverlässigkeitsingenieuren vor Ort eine Dokumentation zu hinterlassen, damit sie Probleme lösen und die Anwendungen weiter verbessern können.
Bereiten Sie sich darauf vor, Teams für die Reaktion auf Vorfälle zu unterstützen
Bevor es zu Zwischenfällen kommt, sollten die Software-Entwicklungsteams Protokolle und Prozesse erstellen, um die Reaktionsteams und die Zuverlässigkeitsingenieure vor Ort besser zu unterstützen:
- Stellen Sie sicher, dass die Software-Entwickler verstehen, dass die Bereitstellung von Support außerhalb der Arbeitszeit für Reaktionsteams bei Vorfällen Teil ihrer Arbeit ist. Entwickeln Sie Richtlinien für die Personalabteilung, insbesondere wenn es Vorschriften für die Arbeit außerhalb der Arbeitszeit gibt oder wenn Überstunden erforderlich sind.
- Veröffentlichen Sie Bereitschaftspläne und stellen Sie die richtigen Tools und Geräte bereit, damit die Entwickler bei Bedarf erreichbar sind.
- Identifizieren und dokumentieren Sie, wer die Fachexperten sind, nach Anwendung, Dienst, Datenbank und anderen Softwarekomponenten.
- Beschreiben Sie, was die Entwickler tun oder nicht tun sollten, um größere Vorfälle zu lösen. Die meisten Unternehmen möchten beispielsweise, dass die Entwickler bei der Diagnose, bei Vorschlägen zur Umgehung und bei der Lösung von Vorfällen helfen, aber die Behebung und Bereitstellung von Code wird normalerweise nicht als Teil der Reaktion auf Vorfälle empfohlen oder erlaubt.
- Klären und standardisieren Sie, was, wo und wie Entwickler während und nach einem Vorfall kommunizieren müssen.
Zwischenfälle lösen und sich an War Rooms beteiligen
Während eines Vorfalls sollten Software-Entwickler in kürzester Zeit helfen, das Problem zu beheben und den Service wiederherzustellen. Sobald die Entwickler hinzugezogen werden, muss davon ausgegangen werden, dass die Betriebsingenieure bereits die infrastrukturellen Belange geprüft und möglicherweise ausgeschlossen haben und dass die Ingenieure für die Zuverlässigkeit vor Ort bereits eine Liste mit häufig auftretenden Problemen mit der Anwendung erstellt haben.
Wenn es zu einem größeren Zwischenfall kommt, richten die Störungsmanager häufig Bridge-Calls, Chat-Sitzungen und physische War Rooms ein, um ein multidisziplinäres Team zusammenzustellen, das das Problem gemeinsam bearbeitet. Entwickler, die hinzugezogen werden, sollten die für diese War Rooms festgelegten Vorfallsreaktions- und Kommunikationsprotokolle kennen und befolgen.
In den War Rooms sollten die Entwickler Anwendungsexperten sein. Nach der Überprüfung von Monitoren, Protokolldateien und anderen Warnmeldungen sollten sie Empfehlungen für das weitere Vorgehen abgeben. Es ist wichtig, eine bestimmte Sprache zu verwenden und Fakten von Spekulationen zu trennen. Versuchen Sie, falsche Wendungen und zusätzliche Verzögerungen zu vermeiden, die entstehen, wenn die Einsatzteams zu sehr nach Symptomen suchen, die sich als Sackgassen herausstellen.
Die Entwickler sollten sich an dieser Zusammenarbeit beteiligen, bis der Störungsmanager die Angelegenheit abschließt oder die Notwendigkeit ihrer Teilnahme ausschließt und sie entschuldigt.
Identifizierung der Ursachen und Behebung von Anwendungsfehlern
Größere Zwischenfälle werden geschlossen, sobald die Anwendung oder der Dienst wieder normale Betriebsbedingungen erreicht hat. Zu diesem Zeitpunkt werden ihnen in ITIL (Information Technology Infrastructure Library) Probleme zugewiesen, so dass die Teams die Grundursachen ermitteln können. Ziel ist es, eine vollständige Diagnose über alle zugrunde liegenden Probleme und Gegebenheiten durchzuführen. Was hat den Vorfall verursacht? Welche Faktoren haben die Schwere und das Ausmaß der geschäftlichen Auswirkungen definiert? Welche Bedingungen, unter Berücksichtigung der Dauer und der Kosten, waren erforderlich, um das Problem zu lösen?
Sobald die Ursache ermittelt ist, sollten die agilen Entwicklungsteams einen oder mehrere Fehler bestimmen, die entweder die Grundursachen beseitigen, die Risiken verringern oder die Auswirkungen auf das Geschäft reduzieren. Entwicklungsteams können unterschiedliche Definitionen und Prozesse rund um Mängel in ihrem agilen Prozess und Softwareentwicklungs-Lebenszyklus haben. Am wichtigsten ist es, dass agile Entwicklungsteams und ihre Produkteigentümer dieses Feedback erhalten und Verbesserungen nach Priorität ordnen, wenn bekannte Probleme wiederholt Probleme oder größere Geschäftsunterbrechungen verursachen.
Schließlich ist die Bereitstellung neuer Funktionen durch Software nur ein Teil der Verantwortung eines Entwicklers. Die Gewährleistung, dass die Anwendungen zuverlässig und sicher sind, eine gute Leistung erbringen und positive Benutzererfahrungen ermöglichen, ist der Punkt, an dem die Teams den Geschäftsanforderungen wirklich gerecht werden.
*Isaac Sacolick ist der Autor von „Driving Digital: The Leader’s Guide to Business Transformation through Technology“, das viele Praktiken wie z.B. Agilität, Entwicklung und Datenwissenschaft behandelt, die für erfolgreiche digitale Transformationsprogramme entscheidend sind. Sacolick ist ein anerkannter Top-CIO im sozialen Bereich, ein langjähriger Blogger bei Social, Agile and Transformation und CIO.com sowie Präsident von StarCIO.
Be the first to comment