Der Blog

Der Lebenszyklus eines Dienstes

von Matt Stratton 19. Februar 2020 | 7 min Lesezeit

Dienste sind das Rückgrat unserer Systeme. Ob es sich um funktionale Mikrodienste oder logische Komponenten einer herkömmlichen Anwendung handelt, sie sind die Bausteine, aus denen unser Geschäft besteht. Ohne Dienste können wir Computer nicht betreiben.

Aber wer ist in Ihrem Unternehmen oder Ihrer Organisation für die Verwaltung eines Dienstes verantwortlich? Am Lebenszyklus eines Dienstes sind nicht nur Softwareentwickler beteiligt. Dazu können Programmmanager, Produktbesitzer, Nachhaltigkeitsteams (SREs/Betriebsingenieure) und Geschäftspartner gehören, um nur einige zu nennen.

Die Personen in diesen Rollen leisten im Laufe des Lebenszyklus unserer Dienste unterschiedliche Beiträge. Wenn wir darüber nachdenken, wie sich diese Beiträge im Laufe des „Lebenszyklus“ eines Dienstes entwickeln, sollten wir drei Hauptphasen berücksichtigen: Entwurf, Laufzeit und Auslaufen.

Design

Dies ist der Beginn eines Dienstes, wenn er noch in den Kinderschuhen steckt. In dieser Phase müssen wir einige Schlüsselfaktoren berücksichtigen, darunter Kundenbedürfnisse, Anforderungen vor der Produktion und Produktionsbereitschaft.

Kundenbedürfnisse

Jeder Service, selbst wenn er tief im internen Stack Ihres Unternehmens vergraben ist, hat jemanden oder etwas, das ihn nutzt und ein bestimmtes Ergebnis erwartet. Diese jemandes oder etwases sind seine Kunden. Full-Service-Ownership-Teams müssen darauf hinarbeiten, ihre Kunden zu verstehen. Werden ihre Bedürfnisse erfüllt? Könnte der Service für sie nützlicher sein? Manchmal wissen diese Verbraucher Ihres Services nicht einmal, wonach sie fragen sollen, um Ihren Service für sie wertvoller zu machen.

Um die Kundenbedürfnisse zu verstehen, muss man eine Produktmentalität annehmen. Unabhängig davon, ob die Kunden Ihres Dienstes sich auf Ihrer Website anmelden und Ihnen Geld zahlen oder ob Ihr Dienst von anderen internen Anwendungen genutzt wird, ist die Einhaltung der Grundsätze des Produktmanagements wird dazu beitragen, allen Nutzern des Dienstes ein großartiges Erlebnis zu bieten.

Vorproduktion

Bevor Ihr Service zur Vorstellung bereit ist, brauchen Sie einen Ort, an dem Sie ihn testen und verstehen können. Es ist wichtig, dass Ihre Vorproduktionsumgebungen der „realen Welt“ so ähnlich wie möglich sind – sie müssen nicht auf den gleichen Maßstab eingestellt sein, aber große Unterschiede zwischen Vorproduktion und Produktion werden später zu Kopfschmerzen führen. Die Grundsätze von Kontinuierliche Bereitstellung schreiben vor, dass alle Vorproduktionsumgebungen mit der Produktion übereinstimmen müssen, mit Ausnahme des Maßstabs. Denken Sie daran: In niedrigeren Umgebungen testen wir nicht nur unseren Code, sondern auch den Bereitstellungsprozess.

Produktionsbereitschaft

Wenn es an der Zeit ist, einen neuen Dienst herauszubringen, ist Disziplin bei der Vorbereitung, auch „Produktionsbereitschaft“ genannt, ein Schlüsselelement. Wir empfehlen, folgende Schlüsselelemente einzubauen:

  • Die notwendigen Produktionsteams (SRE-, Betriebs-, Nachhaltigkeitsteams)
  • Definieren (und Testen) von Warnmeldungen
  • Entwurf einer ersten Runbook
  • Durchführen interner Prüfungen (Sicherheitsaudits usw.)

Laufzeit

Sobald ein Dienst in der Produktion bereitgestellt wird, endet die Entwurfsphase nicht wirklich. Denken Sie daran, dass Dienste nie „fertig“ sind; wir verbessern sie ständig. Mit der Bereitstellung in der Produktion gehen jedoch auch viele alltägliche Vorgänge Ihres Dienstes einher, z. B. Wartung, Iteration und Bereitstellung von Updates. Die Entwurfsphase wird während der gesamten Laufzeitphase fortgesetzt, sowohl um neue Funktionen zu entwickeln als auch um Probleme mit vorhandenen Funktionen zu lösen, die nach der Bereitstellung des Dienstes in der Produktion entdeckt werden.

Zusätzlich zur laufenden Entwicklung sind einige zusätzliche Beiträge erforderlich, sobald Ihr Dienst in der Produktion läuft. Jetzt, da Ihr Dienst von echten Kunden genutzt wird, ist die Art und Weise, wie Sie mit ihnen kommunizieren, von entscheidender Bedeutung.

Versionierung

Eine wichtige Methode, mit den Verbrauchern Ihres Dienstes zu kommunizieren, ist eine robuste und klare Versionierungsstrategie. So können Ihre Kunden besser verstehen, was sie von Ihrem Dienst erwarten können, und werden nicht von Änderungen überrascht. Wenn Ihr Dienst beispielsweise eine API bietet, sollten Sie Folgendes verwenden: Semantische API-Versionierung um den Verbrauchern zu helfen, zu verstehen, welche Funktionen und Möglichkeiten ihnen zur Verfügung stehen, und ihnen eine reibungslose Migration auf neuere Versionen zu ermöglichen.

Kommunikation

Obwohl die Versionierung eine implizite Methode zur Kommunikation mit den Verbrauchern einer API ist, können Sie Ihre Endpunkte nicht einfach versionieren und damit Schluss machen. Sie müssen auch mit Ihren Kunden kommunizieren, um Erwartungen zu setzen. Wie Sie das genau tun, hängt von den Bedürfnissen der Verbraucher ab. Normalerweise möchten Sie jedoch mindestens zwei verschiedene Möglichkeiten (über die Versionierung hinaus) haben, um Ihren Kunden Ankündigungen über bereitgestellte Funktionen oder eingeführte Änderungen zu machen – insbesondere, wenn es sich dabei um „bahnbrechende“ Änderungen handelt.

Zwei Methoden, mit denen sich diese Art der Kommunikation mit geringem Aufwand und hohem Kontaktaufwand einrichten lässt, sind die Bereitstellung von Mailinglisten und Änderungsprotokolle . Kunden die Möglichkeit zu geben, Änderungsankündigungen per E-Mail zu abonnieren, mag angesichts der anderen uns zur Verfügung stehenden Mechanismen überflüssig erscheinen. Tatsächlich ist jedoch nicht alles, was Sie den Benutzern Ihres Dienstes mitteilen müssen, unbedingt direkt mit einer veröffentlichten Änderung verbunden. Mailinglisten bieten Ihnen eine Möglichkeit, ungewöhnliche Situationen elegant zu bewältigen. Im Gegensatz dazu bietet die Pflege eines detaillierten Änderungsprotokolls Kunden die Möglichkeit, bestimmte im Laufe der Zeit eingeführte Änderungen zu abonnieren und darauf zu verweisen. Ihre Kunden können entscheiden, welche Kommunikationsebene für ihre Bedürfnisse die richtige ist.

Aus Vorfällen lernen

Kein Service ist perfekt. Es kommt immer wieder zu Zwischenfällen, aber sie bieten großartige Gelegenheiten, mehr über den Service und seine Kunden zu erfahren – vorausgesetzt, man nutzt diese Gelegenheiten.

Wenn beispielsweise Servicevorfälle auftreten, ist es wichtig, regelmäßige Obduktionen um zu verstehen, was passiert ist. Wenn Aktionspunkte im Rahmen einer Post-Mortem-Analyse entdeckt werden, müssen sie priorisiert werden in die Arbeitsablauf des Serviceteams . ServiceTeam Produktbesitzer sollten an Post-Mortem-Meetings teilnehmen, um diese Aktionspunkte vollständig zu kontextualisieren und bei der Priorisierung zu helfen.

Sonnenuntergang

Obwohl es normalerweise nie schön ist, sich zu verabschieden, kann es passieren, dass Ihr Team oder Ihre Organisation beschließt, einen Dienst einzustellen. Es ist wichtig, einen Plan und einen konsistenten Prozess für die Außerbetriebnahme von Diensten zu haben, der über das bloße „Abschalten“ hinausgeht.

Abschreibung vs. Stilllegung

Möchten Sie den Dienst weiterführen, aber keine Verbesserungen mehr daran vornehmen? In diesem Fall können Sie erwägen, ihn zu verwerfen. Auf diese Weise können Sie bei den Nutzern des Dienstes andere Erwartungen wecken, aber dennoch einen gewissen Mehrwert für sie schaffen.

Wenn Sie vorhaben, den Dienst vollständig einzustellen, werden Sie ihn an einem bestimmten Datum außer Dienst stellen. Normalerweise wird ein Dienst vor der vollständigen Außerdienststellung schon einige Zeit lang außer Dienst gestellt, damit die Verbraucher Zeit haben, auf eine andere Lösung umzusteigen.

Kunden identifizieren und geschäftliche Auswirkungen bestimmen

Stellen Sie sicher, dass Sie feststellen können, wer Ihren Dienst derzeit noch nutzt, bevor Sie ihn einstellen. Möglicherweise können Sie dies mithilfe von Methoden wie Aktivitätsprotokollen oder anderen programmgesteuerten Ansätzen ermitteln.

Dadurch können Sie nicht nur Kunden identifizieren, die Sie mit einer Mitteilung über die Abschaffung/Stilllegung kontaktieren können, sondern auch die geschäftlichen Auswirkungen der Einstellung dieses Dienstes besser verstehen. Arbeiten Sie mit Führungsposition in Ihrer Organisation, um die geschäftlichen Auswirkungen der Einstellung des Dienstes zu kommunizieren und zu quantifizieren. Die oberste Führungsebene sollte Diskussionen mit anderen Teilen der Organisation (z. B. Vertrieb, Support, Kundenerfolg) unterstützen, um ein umfassenderes Verständnis der geschäftlichen Auswirkungen der Einstellung eines Dienstes zu schaffen.

Offboarding von Kunden

Für die Kundenzufriedenheit und die Wahrnehmung und den Ruf Ihres Unternehmens ist es entscheidend, die Einstellung/Abkündigung eines Dienstes professionell und einfühlsam zu kommunizieren. Geben Sie den Kunden vor der Abkündigung ausreichend Zeit, um auf eine andere Lösung umzusteigen – vorzugsweise eine, für die Sie Anweisungen oder Migrationsempfehlungen bereitstellen können. Eine klare und hilfreiche Kommunikation in diesem Teil des Prozesses kann die Kundenzufriedenheit steigern oder verschlechtern.

Möchten Sie mehr über alle Komponenten und Teams erfahren, die am Service-Lebenszyklus beteiligt sind? Schauen Sie sich PagerDutys Leitfaden zum Full Service Ownership für einen umfassenden Überblick über alles, was mit dem Besitz, der Erstellung und dem Betrieb eines Dienstes in der Produktion verbunden ist.