Rechnen Sie damit, dass es kaputt geht
In einer Continuous Delivery-Umgebung ist es wichtig, ein stabiles System aufrechtzuerhalten, damit neue Funktionen in die Produktion einfließen können, sobald sie fertig sind. Ein fehlerhaftes System zwingt die Entwickler dazu, sich auf die Lösung von Problemen und die Behebung von Fehlern zu konzentrieren, anstatt coole neue Funktionen einzuführen, weshalb es von größter Bedeutung ist, das System so stabil wie möglich zu machen.
Viele Systeme sind auf den glücklichen Ablauf ausgelegt und machen sich keine Gedanken über den Umgang mit Fehlerbedingungen. Moderne Systeme laufen jedoch 24 Stunden am Tag, 7 Tage die Woche und sind von anderen Systemen abhängig, so dass Fehler unvermeidlich sind.
Rechnen Sie also damit, dass das System zusammenbricht, rechnen Sie mit Fehlern und bauen Sie das System so auf, dass es Fehler elegant bewältigt und den normalen Betrieb wieder aufnimmt, sobald der Fehlerzustand behoben ist.
Man könnte meinen, dass Maßnahmen zur Erhöhung der Robustheit zusätzliche Entwicklungszeit kosten, aber tatsächlich wird dadurch die Zeit, die für die Stabilität des Systems erforderlich ist, drastisch reduziert. Wie die Abbildung unten zeigt, sind die Kosten für die Behebung von Fehlern in der Produktion um eine Größenordnung höher als die Kosten für die Vermeidung von Fehlern in den Entwicklungsphasen.
Wie Sie das Prinzip anwenden
Wenn Sie ein System entwerfen und entwickeln, bauen Sie es so auf, dass die einzelnen Komponenten robust sind und als autonome Einheiten behandelt werden können. Jede Komponente sollte in der Lage sein, mit der Möglichkeit umzugehen, dass eine andere Komponente oder ein Teilsystem nicht verfügbar ist, und auf eine nicht destruktive Weise zu reagieren.
Abwärtskompatible Schnittstellen bereitstellen
Bieten Sie abwärtskompatible Schnittstellen an, so dass bei einem Upgrade eines Dienstes die aufrufenden Komponenten weiterhin die "alte" Version des Dienstes nutzen können. Sie können die Nutzung der alten Version protokollieren und sich dafür einsetzen, dass Ihre Kunden ein Upgrade durchführen.
Anmutige Degradierung sicherstellen
Jede Komponente sollte in der Lage sein, mit Unterkomponenten und/oder Untersystemen umzugehen, die möglicherweise keinen Wert zurückgeben können. Das Gleiche gilt für Komponenten in den oberen Schichten. Wenn in einer oberen Anwendungsschicht (d.h. Controller oder Präsentationsschicht) festgestellt wird, dass eine der Komponenten in der unteren Schicht keine korrekte Antwort zurückgibt, könnte der Controller beschließen, bestimmte Funktionen für den Endbenutzer auszublenden, während er die anderen Funktionen, die noch zu 100% funktionieren, weiterhin unterstützt.
Selbstheilende Komponenten erstellen
Erstellen Sie selbstheilende Komponenten, die verschiedene Fehlerzustände erkennen und geeignete Strategien zur Beseitigung des Fehlerzustands selbst anwenden können. Wenn sie das Problem nicht selbst beheben kann, sollte die Komponente den Zustand melden, damit er vom Überwachungssystem erkannt und behoben wird.
Testgetriebene Entwicklung
Bevor Sie eine Funktionalität implementieren, schreiben Sie zuerst den/die Test(e). So können Sie Fehler erkennen und verhindern, dass fehlerhafte Komponenten in die Produktion gelangen. Immer und immer wieder.
Dieser Beitrag ist Teil einer Serie über Continuous Delivery. In unserem Tag Continuous Delivery finden Sie weitere Beiträge zu diesem Thema. Oder besuchen Sie unsere Continuous Delivery Website, um zu erfahren, wie Xebia Ihnen helfen kann, Ihre Markteinführungszeit zu verkürzen, Kosten zu senken und die Qualität mit Hilfe von Continuous Delivery Best Practices zu verbessern.
Verfasst von

Michiel Sens
Michiel is Solution Architect at Xebia and specializes in Continuous Delivery and full lifecycle software development programs. He advocates the use of Continuous Delivery at seminars and meetups and technically focuses on implementation of automated Software Delivery pipelines. Michiel is co-author of "The Manager's Guide to Continuous Delivery", published by Xebia early 2014.
Unsere Ideen
Weitere Blogs
Contact



