7 Methoden

Wie DevOps die App-Performance treibt

28.06.2022
Von 


Isaac Sacolick ist Autor des Amazon-Bestsellers "Diving Digital: The Leader's Guide to Business Transformation thourh Technology". Er schreibt als freier Autor unter anderem für unsere US-Schwesterpublikation CIO.com.

 
DevOps ist kein Kinderspiel. Das sollte aber nicht dazu führen, dass Sie zwischen schnellerer Softwareentwicklung und zuverlässigeren Applikationen wählen müssen.
DevOps kann mehr als nur Code verpacken und pushen.
DevOps kann mehr als nur Code verpacken und pushen.
Foto: fizkes - shutterstock.com

Das DevOps-Konzept wird in erster Linie mit einer verbesserten Delivery und Zuverlässigkeit von Applikationen in Verbindung gebracht. Gängige Best Practices zielen darauf ab, manuelle, fehleranfällige Verfahren im Grenzbereich zwischen Devs und Ops zu automatisieren. Dabei können DevOps-Methoden auch die App Performance und die User Experience beeinflussen. Wie, haben wir im Gespräch mit Experten für Sie herausgefunden.

1. Security von Anfang an integrieren

Das Letzte, was DevOps-Teams gebrauchen können, ist es, neue Funktionen mit Sicherheitsschwachstellen bereitzustellen. Eine Beeinträchtigung der Sicherheit wirkt sich auf die Benutzererfahrung aus und führt zu erheblichen geschäftlichen Problemen. Eine bewährte DevOps-Methode ist das sogenannte Shift-Left-Prinzip, bei dem die Zusammenarbeit mit den Security-Teams forciert wird - etwa, um innerhalb von CI/CD Pipelines auf Schwachstellen zu testen.

"Eine kritische Komponente der App-Zuverlässigkeit ist die Verfügbarkeit. Geeignete Maßnahmen zu ergreifen, um eine App gegen Web-Application- und DDoS-Angriffe abzusichern, kann den Unterschied zwischen on- und offline bedeuten", verdeutlicht Mike Elissen, Senior Developer Advocate bei Akamai. "Der 'Linksruck' bei der Integration von Sicherheit in DevOps ist immer stärker ausgeprägt, was letztlich zu einer stärkeren DevSecOps-Kultur führt und mehr Entwickler für die Sicherheit ihrer Apps sensibilisiert und in die Pflicht nimmt."

2. Architektur und Infrastruktur standardisieren

Amir Rozenberg, Vice President of Product Management bei Quali, weist auf ein Problem hin, das sich auf die Teamleistung auswirkt: "Viele DevOps-Teams finden sich inmitten eines Chaos aus organisch gewachsenen Definitionen der Anwendungsinfrastruktur wieder. Diese wurden in gutem Glauben frühzeitig entwickelt, um die Teameffizienz über den Lebenszyklus der Softwareentwicklung zu steigern."

Der Experte empfiehlt, ein zentrales Team einzurichten, das Umgebungen in Form von Blaupausen modelliert, damit diese zuverlässig, wiederverwendbar und compliant sind. "Dann müssen diese Infrastrukturdefinitionen verteilt werden, so dass sie für die Geschäftskomponenten über einen schnellen Self-Service zur Verfügung stehen - sei es manuell oder in die automatisierte Pipeline integriert."

3. Observability und Testing institutionalisieren

Matt Sollie, Director of DevOps bei 66degrees, ist der Meinung, dass CI/CD mehr kann als nur Code verpacken und pushen: "Nicht alle DevOps-Prinzipien sind so glamourös oder sichtbar wie Continuous Delivery oder Building Everything as Code, aber deswegen nicht minder wichtig. Continuous Integration ist eine Komponente einer ausgereiften DevOps-Position, die die Zuverlässigkeit einer Anwendung erheblich steigern kann. Aber es braucht Purpose, eine Vision und Zeit, um sie auf sinnvolle Weise aufzubauen."

Dabei räumt Sollie ein, dass nicht nur eine Vision, sondern auch Investitionen in Praktiken und optimale Architekturen nötig sind, um Zuverlässigkeits- und Performance-Ziele zu erreichen: "Observability ist ein wichtiger und kostspieliger Grundsatz, denn Zuverlässigkeit ist kein Zustand, der sich ein- oder ausschalten lässt und erfordert eine differenzierte Datenerfassung. Bei all den Cloud-Computing-Diensten kann die Auswahl des richtigen Tools oder Services für die jeweilige Aufgabe inhärente Zuverlässigkeits- und Leistungsvorteile bringen."

Um die Performance zu verbessern, empfiehlt der Experte agilen Entwicklungsteams:

  • Implementieren Sie Continuous Testing, bevor Sie die Deployment-Frequenz erhöhen.

  • Ziehen Sie Service-Virtualisierung in Betracht, um Microservices und APIs von Drittanbietern zu testen.

  • Sorgen Sie für 'observable' CI/CD-Pipelines, um die Fehlererkennung zu verbessern und Pipeline-Probleme zu isolieren.

4. Deployments kontrollieren

Deployments müssen nicht zwangsläufig so erfolgen, dass alle Benutzer alle Änderungen auf einen Schlag erhalten. Feature-Flags im Code helfen bei der Konfiguration und Kontrolle der Verfügbarkeit einer Funktion, während Canary-Release-Strategien es Devops-Teams ermöglichen, neue Funktionen langsam und methodisch einzuführen.

"Feature-Management, insbesondere Feature Flags können die allgemeine Zuverlässigkeit und Leistung von Anwendungen verbessern und es Entwicklern ermöglichen, kontinuierlich Innovationen zu entwickeln. Durch den Einsatz von Feature Flags können Entwickler Feature Updates vor der Produktion testen, um Probleme vor der Veröffentlichung zu beheben", erklärt John Kodumal, CTO und Mitbegründer von LaunchDarkly.

Die Kontrollen verbessern nicht nur die Zuverlässigkeit und Leistung, sondern helfen Entwicklungsteams auch dabei, Störungen zu minimieren: "Feature Flags verbessern die Leistung und geben Entwicklungsteams die notwendigen Kontrollmöglichkeiten, um Anwendungen ohne Unterbrechungen oder Ausfallzeiten zu aktualisieren."

5. Strenge Standards einführen

Auf der Ops-Seite der DevOps-Verantwortlichkeiten sollten die Teams mehrere Best Practices zur Verbesserung der App-Performance in Betracht ziehen, darunter die Entwicklung von Observability-Standards und Monitoring-Optimierung.

"DevOps braucht strenge Monitoring- und Observability-Prozesse, um sicherzustellen, dass jeder Teil der Anwendung korrekt funktioniert und die Serverprozesse reibungslos ablaufen. So können DevOps-Teams wertvolle Informationen sammeln, um zu verstehen, wie die Benutzer die Anwendungen nutzen. Das hilft möglicherweise, künftige Probleme zu vermeiden", meint Frédéric Harper, Director of Developer Relations bei Mindee.

6. Monitoring erweitern

In Web-2.0-Tagen hatten Operations-Teams bei Ausfällen oder Performance-Problemen nur eine Handvoll Protokolldateien und Monitoring Tools zur Verfügung. Heute impliziert der Betrieb von Microservices, Serverless-Anwendungen und Multi-Cloud-Datenbanken deutlich mehr Daten und Tools, die herangezogen werden müssen, um Probleme zu lösen und deren Ursachen zu identifizieren. AIOps-Plattformen, die Monitoring-Daten zentralisieren und Machine Learning nutzen, um Warnmeldungen zu korrelieren und die Ops-Seite dabei unterstützen, Reaktion und Wiederherstellung über mehrere Plattformen hinweg zu automatisieren, können dazu beitragen, Leistungseinbußen zu minimieren.

Dies meint auch Mohan Kompella, Vice President of Product Marketing bei BigPanda: "AIOps-Plattformen können DevOps-Teams dabei unterstützen, ihre Tool-Autonomie und -Flexibilität zu wahren, während sie gleichzeitig zentralisierten Incident-Respondern die Transparenz geben, die sie als erste Verteidigungslinie benötigen."

7. SLOs und Fehlerbudgets definieren

DevOps-Teams sollten abwägen, welche Methoden den größten Nutzen bringen. Das erfordert, dass die Teams die DevOps-Prioritäten messen, lernen und zusammenarbeiten. Keine einfache Sache, wenn die Vorteile erst Monate oder Jahre nach der Implementierung von Methoden und Tools erkennbar sind. Um Prioritäten zu setzen, können Site-Reliability-Engineering-Praktiken eingeführt, Service-Level Objectives (SLOs) definiert und Fehler-Budgets eingesetzt werden. Überschreitet eine Applikation oder ein Microservice sein Fehlerbudget, ist das ein Signal für das DevOps-Team, die Ursachen zu identifizieren und sich auf Lösungen zu konzentrieren.

"Service-Level Objectives setzen klare Ziele für Entwicklungsteams, um bessere Priorisierungsentscheidungen zu treffen. Entwickler und ITOps sollten nicht nur technikzentriert, sondern auch servicezentriert arbeiten", erklärt Kit Merker, COO bei Nobl9. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.