Agile DevOps-Methodik für die Anwendungsentwicklung Grundlagen zum Shift-Left- und Shift-Right-Testing

Ein Gastbeitrag von Roman Spitzbart* 8 min Lesedauer

Anbieter zum Thema

Beim Shift Left und Shift Right werden kleine, getestete Builds in regelmäßigen Abständen freigegeben, während der Code weiterentwickelt wird. Dies beschleunigt zum einen die Entwicklung, erhöht aber auch die Software-Qualität. Das wollen wir uns hier genauer ansehen.

Der Name ist Programm: Auf dem DevOps Loop lassen sich Shift-Left- und Shift-Right-Testing gut verorten.(Bild:  Dynatrace)
Der Name ist Programm: Auf dem DevOps Loop lassen sich Shift-Left- und Shift-Right-Testing gut verorten.
(Bild: Dynatrace)

Als Teil des kontinuierlichen Zyklus der fortschreitenden Bereitstellung übernehmen DevOps-Teams die Prinzipien von Shift Left und Shift Right, um die Softwarequalität in diesen dynamischen Umgebungen sicherzustellen. Im Folgenden wird erläutert, wie dieser Ansatz zur Softwareüberprüfung den DevOps-Methoden und -Ergebnissen zugutekommt und die Software zuverlässiger macht.

Die Grundlagen: Shift Left und Shift Right in DevOps

Um Shift Left und Shift Right zu verstehen, muss man sich den Softwareentwicklungszyklus als ein Kontinuum oder eine Endlosschleife von links nach rechts vorstellen.

  • Auf der linken Seite der Schleife planen, entwickeln und testen die Teams Software in der Vorproduktion. Das Hauptaugenmerk in der Vorproduktion auf der linken Seite der Schleife liegt auf der Erstellung von Software, die den Designkriterien entspricht.
  • Wenn Teams Software auf der rechten Seite der Schleife in Produktion geben, stellen sie die Software den Benutzern zur Verfügung. In der Produktion geht es darum, die Software so zu warten, dass sie die Geschäftsziele und Zuverlässigkeitskriterien erfüllt.

Was bedeutet Shift Left bei DevOps?

Unter Shift Left versteht man die Praxis, Tests sowie Qualitäts- und Leistungsevaluierung in eine frühe Phase des Entwicklungsprozesses zu verlagern – oft, bevor Code geschrieben wird.

Shift-Left-Tests helfen den Teams, Änderungen, die sich während des Entwicklungsprozesses ergeben und die sich auf die Leistung oder andere Lieferprozesse auswirken können, zu antizipieren. Beim Shift-Left-Testing überprüfen die Teams APIs, Container-Konfigurationen und Interaktionen zwischen Microservices, Container-Konfigurationen und Interaktionen zwischen Microservices.

Warum ist Shift Left wichtig?

Beim Shift-Left-Testing wird nicht nur die Funktionalität geprüft, sondern auch, ob die Software die Kundenanforderungen erfüllt. Auf diese Weise können Entwickler und Stakeholder Verbesserungen identifizieren, die das Kundenerlebnis und die Funktionalität optimieren könnten. Wenn diese Änderungen frühzeitig im Entwicklungsprozess vorgenommen werden, verringern sich die Kosten, die nach der Freigabe des Codes anfallen.

Infolgedessen werden Shift-Left-Tests immer wichtiger, da die Teams unter dem Druck stehen, Software schneller und häufiger in höherer Qualität zu liefern. Shift Left beschleunigt die Entwicklungseffizienz und senkt die Kosten, indem Softwarefehler früher im Entwicklungszyklus erkannt und behoben werden, bevor sie in die Produktion gelangen.

Was bedeutet Shift Right bei DevOps?

Shift Right ist die Praxis der Durchführung von Tests, Qualitäts- und Leistungsbewertungen in der Produktion unter realen Bedingungen. Shift-Right-Methoden stellen sicher, dass Anwendungen, die in der Produktion laufen, der realen Benutzerbelastung standhalten und gleichzeitig ein hohes Qualitätsniveau gewährleisten.

Mit Shift Right testen DevOps-Teams eine erstellte Anwendung, um Leistung, Ausfallsicherheit und Softwarezuverlässigkeit zu gewährleisten. Ziel ist es, Probleme zu erkennen und zu beheben, die in Entwicklungsumgebungen nur schwer vorherzusehen wären.

Warum ist Shift Right wichtig?

Mit Shift Right können Teams Code in einer Umgebung testen, die die realen Produktionsbedingungen nachahmt, welche sie in der Entwicklung nicht simulieren können. Auf diese Weise können Teams Laufzeitfehler erkennen, bevor sie beim Kunden auftreten. Um einen Teil des Prozesses zu automatisieren, können die Teams API-Aufrufe (Application Programming Interface) verwenden. Unternehmen können auch Shift-Right-Tests auf Code anwenden, der in der Praxis konfiguriert oder überwacht wird.

Das Ergebnis ist eine umfassendere Testabdeckung, die den Anforderungen der Benutzer besser gerecht wird. Wie beim Shift-Left-Test besteht das Ziel des Shift-Right-Tests darin, wenig Fehler zu machen und schnell zu testen. Es wird davon ausgegangen, dass Probleme, die frühzeitig in der Umgebung vor der Bereitstellung erkannt werden, leichter zu lösen sind als Probleme, die von den Kunden in der Live-Produktion erkannt werden.

Shift-Right-Tests sind besonders nützlich für Unternehmen, die eine progressive Software-Bereitstellung praktizieren, bei der die Entwickler neue Softwarefunktionen schrittweise freigeben, um die Auswirkungen unvorhergesehener Probleme zu minimieren. Das Testen in einer produktionsbereiten Umgebung ist eine entscheidende letzte Phase, bevor die Funktionen als einsatzbereit erklärt werden.

Warum Shift Right und Shift Left für die Microservices-Architektur entscheidend sind

Sowohl Shift-Left- als auch Shift-Right-Tests haben an Bedeutung gewonnen, da Software zunehmend aus Microservices aufgebaut wird. Anstatt Anwendungen als Monolith zu erstellen und auszuführen, sind Microservices lose gekoppelte Funktionen, die zur Laufzeit aufgerufen werden. Wie Microservices-basierte Anwendungen funktionieren, hängt von der Reaktionsfähigkeit der einzelnen Dienste ab, was das Testen in einer simulierten Umgebung erschwert.

Beim Shift-Right-Testing am oder kurz vor dem Einsatz können die Teams die realen Bedingungen beobachten und ihre Auswirkungen messen. Shift-Right-Tests decken in der Regel Funktionalität, Leistung, Fehlertoleranz und Benutzerfreundlichkeit ab. Die Teams automatisieren häufig solche Tests in der Produktionsumgebung und übersetzen das Feedback in technische Spezifikationen für die Entwickler.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Mit Shift-Left-Tests können Teams beobachten, wie Services in einer simulierten Umgebung interagieren, und mögliche Leistungseinbußen erkennen, bevor der Code bereitgestellt wird. Zusammen ermöglichen Shift-Left- und Shift-Right-Tests den Testern, Probleme zu isolieren, so dass die Teams sie parallel beheben und Verbesserungen in Angriff nehmen können

Sobald eine Anwendung stabiler wird, können die Teams mit dem Testen und Optimieren der Leistung beginnen. Shifting Left und Shift Right sind zu einer wichtigen Praxis in der agilen Softwareentwicklung geworden. Zusammen sind sie Teil der kontinuierlichen Feedback-Schleife, die DevOps kennzeichnet.

Arten von Shift-Right-Tests

Bei einem Shift-Right-Ansatz können verschiedene Arten von Testsuiten zum Einsatz kommen. Im Folgenden finden sich Tests, die für Teams nützlich sein könnten:

  • A/B-Tests: Web-Designer verwenden diese Methode häufig. Die Benutzer sehen zwei Versionen einer Seite, und die Tester messen, welche Version eine positivere Reaktion hervorruft. Die Teams führen diese Art von Tests häufig in einer Produktionsumgebung durch, um Feedback aus der Praxis zu erhalten.

  • Synthetische Überwachung ist eine Form des Shift-Right-Tests, bei dem Software-Tools verwendet werden, um die Pfade zu emulieren, die Benutzer bei der Nutzung einer Anwendung einschlagen könnten. Die synthetische Überwachung kann automatisch die Betriebszeit der Anwendung überwachen und Teams mitteilen, wie ihre Anwendung auf typisches Benutzerverhalten reagiert. Mithilfe von Skripten wird das Benutzerverhalten für verschiedene Szenarien, geografische Standorte, Gerätetypen und andere Variablen simuliert.

  • Chaos-Engineering: Beim Chaos-Engineering, auch Chaostests genannt, unterbrechen die Entwickler die Anwendung absichtlich, indem sie Fehler einführen, um festzustellen, wie gut sie sich von einer Unterbrechung erholt. DevOps- und IT-Teams richten Überwachungstools ein, um genau zu sehen, wie die Anwendung auf verschiedene Arten von Belastungen reagiert. Die Teams führen diese Tests in einer kontrollierten Produktionsumgebung durch, um die Auswirkungen auf unternehmenskritische Systeme zu minimieren.

  • Canary-Versionen: Diese Strategie ist nach den Kanarienvögeln benannt, mit denen Bergleute einst in Kohlebergwerke hinabgestiegen sind, um giftige Gase aufzuspüren. Beim Shift-Right-Testing beschreibt der Begriff das langsame Ausrollen von Änderungen auf eine kleine Untergruppe von Instanzen zu Testzwecken, bevor sie auf die gesamte Infrastruktur angewendet werden.

  • Blue-Green-Bereitstellung: Hierbei betreibt ein Unternehmen zwei nahezu identische Produktionsumgebungen, zwischen denen die (realen oder synthetischen) Benutzer hin- und herwechseln, während kleine Änderungen an der einen oder anderen Umgebung vorgenommen werden. Diese Praxis ist wichtig für die Shift-Right-Methodik, da sie Ausfallzeiten minimieren kann. Außerdem bietet es einen Mechanismus für ein schnelles Rollback, falls mit der neuesten Version etwas schiefläuft.

Arten von Shift-Left-Tests

Die vier grundlegenden Arten von Shift-Left-Tests sind:

  • Traditionelle Shift-Left-Tests: Der traditionelle Ansatz konzentriert sich auf Unit- und Integrationstests, in der Regel unter Einbeziehung von APIs und browserübergreifender Kompatibilität. Bei diesem Ansatz liegt der Schwerpunkt eher auf Unit-Tests für kleine Codestücke, um frühzeitig und häufig Informationen zu liefern, als auf Betriebs- und Akzeptanztests auf Systemebene.

  • Inkrementelle Shift-Left-Tests: Dies ist ein beliebter Ansatz für Teams, die von einem Wasserfall-Entwicklungsansatz zu einem Ansatz übergehen, bei dem komplexe Projekte in kleinere Teile zerlegt werden. In diesem Szenario führen die Teams Betriebs- und Akzeptanztests auf Systemebene in einem kleineren, inkrementellen Maßstab durch. Inkrementelles Testen ist ein beliebtes Verfahren zur Validierung großer und komplexer Systeme.

  • Agile/DevOps-Tests: Hierbei handelt es sich um eine Reihe von kurzen, kontinuierlichen Sprints während der Entwicklungsphase. Dieser Ansatz zielt nicht auf die operative Leistung ab, sondern auf die Überprüfung der Einhaltung der grundlegenden Anforderungsarchitektur.

  • Modellbasiertes Shift Left: Das modellbasierte Testen zielt darauf ab, Fehler zu reduzieren, die in den Phasen der Anforderungsdefinition, der Architektur und des Entwurfs entstanden sind. Es wird auf ausführbare Anforderungen, Architektur und Design getestet. Der Vorteil des modellbasierten Testens ist, dass es fast sofort beginnen kann und nicht erst nach Abschluss aller anderen Testzyklen.

Vorteile von Shift Right und Shift Left für die Anwendungssicherheit

Ein wichtiger Vorteil des Shift-Right-Testing ist die verbesserte Anwendungssicherheit. Das Scannen eines statischen Images, entweder in einem Repository oder in einer Entwicklungsumgebung, bietet nicht die gleichen umfassenden Einblicke, die man erhält, wenn man die Anwendung in der Produktion beobachtet. Man sieht zum Beispiel nicht, welche Bibliotheken tatsächlich aufgerufen werden, wie sie verwendet werden, ob ein Prozess dem Internet ausgesetzt ist oder ob er mit sensiblen Unternehmensdaten interagiert.

Die zunehmende Verwendung von Software-Containern hat die Aspekte der Cybersicherheit verkompliziert. Container können die in ihnen ablaufenden Prozesse verschleiern, und Angreifer können sogar Exploits darin verpacken. Bei Produktionstests wird das Verhalten von Container-basierter Software aufgedeckt, selbst wenn der Inhalt von Containern unkenntlich gemacht wird. Unternehmen können das Shift-Right-Testing auch nutzen, um auf das Vorhandensein neuer Zero-Day-Exploits wie Log4Shell zu testen.

Aus der Perspektive des Shift-Left-Testing helfen Sicherheitstests zudem während der Entwicklung, Schwachstellen so früh wie möglich im Lebenszyklus zu identifizieren, wenn sie am einfachsten zu beheben sind.

Shift Left, Shift Right oder beides?

Da Unternehmen ihre Application Stacks mit Cloud-nativen Konstrukten wie Microservices und Containern modernisieren, ist es eine bewährte Praxis, sowohl Shift-Left- als auch Shift-Right-Strategien anzuwenden. Shift-Left-Testing reduziert Softwarefehler und verkürzen die Markteinführungszeit. Mit Shift-Right-Testing wird die Zuverlässigkeit in der Produktion besser gewährleistet, indem unter realen Bedingungen getestet wird, um sicherzustellen, dass die Software ihre Aufgabe dort erfüllt, wo sie am wichtigsten ist: im Dienste des Benutzers.

Die Kombination der beiden Ansätze bringt Unternehmen dem letztendlichen Ziel der kontinuierlichen Integration und Bereitstellung durch Automatisierung sowie der interdisziplinären Kommunikation näher. Das Ergebnis ist eine schnellere und agilere Organisation.

Eine wesentliche Fähigkeit für umfassende Shift-Left- und Shift-Right-Tests ist die automatisierte Full-Stack-Observability und -Überwachung. Mit der Fähigkeit zur End-to-End-Analyse in allen Phasen der Entwicklung können DevOps-Teams alle Anfragen und Prozesse überwachen.

Die automatische Analyse aller Dienste in einem weitläufigen Komplex von Multi-Cloud-Anwendungen über eine einzige Schnittstelle ermöglicht es Teams, Prozesse zu automatisieren. Tester können mithilfe von Skripten Bereitstellungsinformationen und Metadaten in die Überwachungsumgebung übertragen, um Builds, Revisionen und Konfigurationsänderungen zu verfolgen.

Je besser eine automatisierte DevOps-Plattform den vollständigen Kontext eines Problems versteht, desto besser kann sie die Grundursachen erkennen, die richtigen Ansprechpartner benachrichtigen und sogar Selbstheilungsmaßnahmen implementieren. Unabhängig davon, ob Unternehmen das Testen nach links in die Entwicklungsphase oder nach rechts in die Produktion verlagert haben oder einfach nur die Performance unter realen Bedingungen überwachen möchten – eine KI-gesteuerte Observability-Lösung kann die Softwareentwicklung erheblich unterstützen.

* Über den Autor
Roman Spitzbart konzentriert sich seit mehr als 15 Jahren auf Performance Monitoring & Observability. Er ist VP Solution Engineers EMEA bei Dynatrace und verantwortet ein Team, dass Unternehmen dabei hilft, die Dynatrace Platform zu verstehen und optimal einzusetzen. Gemeinsam mit seinem Team deckt er dabei die gesamte Breite an Use Cases von Observability für Infrastruktur und Applikationen über Security bis hin zu Digital Experience und Business Analytics ab.

Bildquelle: Dynatrace

(ID:50042146)