12 Wege, DevSecOps zu optimieren

23.05.2024 von Isaac Sacolick
Dieses Prinzipien-Dutzend aus dem Bereich Software as a Service kann auch DevSecOps-Verantwortliche weiterbringen.
12 SaaS-Inspirationen für Ihr DevSecOps-Team.
Foto: Oleg Nesterov | shutterstock.com

Zwar sind heutzutage viele Unternehmen in den Bereichen Softwareentwicklung und DevOps gut aufgestellt. Wenn es aber darum geht, Applikationen zu skalieren, mit unterschiedlichen Use Cases umzugehen sowie Performance- und Sicherheitsprobleme in Angriff zu nehmen, bevor diese zu Kundenproblemen werden, können sie sich dennoch meist eine Scheibe von Software-as-a-Service-Firmen abschneiden.

In diesem Artikel stellen wir Ihnen 12 Prinzipien vor, die sich unter SaaS-Technologieführern bewährt haben und sich auch auf DevSecOps übertragen lassen.

1. Customer-First-Mindset entwickeln

Im Sinne der Kundenbindung und Wachstumsförderung sind ein Mindset, dass die Kunden in den Mittelpunkt rückt und ein Gespür für deren Bedürfnisse obligatorisch. Für DevSecOps-Teams heißt das in erster Linie zu lernen, ihre eigenen Kollegen als Kunden zu betrachten, wenn sie interne Applikationen entwickeln.

Claire Vo, Chief Product Officer von LaunchDarkly, weiß, welche Aspekte ein kundenorientiertes Mindset beinhalten sollte: "Vor allem einen nicht verhandelbaren Fokus darauf, Kundenprobleme schnell zu identifizieren und zu beheben. Softwareentwickler sollten deshalb direkt mit den Kunden in Kontakt treten, um deren Nutzungsgewohnheiten in Erfahrung zu bringen und entsprechend hohe Qualitätsansprüche anlegen zu können."

Tipp: DevSecOps-Teams sollten regelmäßige Meetings mit Endbenutzern einplanen, um deren Nutzungsgewohnheiten zu beobachten und Möglichkeiten zu erkennen, die App-Performance zu optimieren.

2. Versionskontrolle mit agilen User Stories verbinden

Die allermeisten Firmen setzen inzwischen auf Versionskontrolle - allerdings sieht David Brooks, SVP of Evangelism bei Copado, ein Problem: "Viele Entwickler fokussieren sich zu sehr auf das Branch Management in ihrem Repository. Moderne Entwicklung basiert auf Agilität und viele DevOps-Tools managen Änderungen direkt auf Basis der User Story." Das erleichtere es agilen Entwicklungsteams, sich darauf zu konzentrieren, Mehrwert bereitzustellen, unterstütze einen testgetriebenen Development-Ansatz und ermögliche es, Merge-Konflikte automatisiert aufzulösen, so der Manager.

Tipp: Abgesehen davon, Workflows zwischen agilen Tools und Versionskontrolle zu verbinden, sollten DevSecOps-Teams auch in Betracht ziehen:

3. Neue Features mit A/B-Tests erproben

In DevSecOps-Automatisierung zu investieren, schafft Flexibilität, wenn es darum geht, Funktionen für kleinere Gruppen von Benutzern freizugeben und A/B-Tests zu fahren. Darüber hinaus wird so nicht nur Continuous Deployment unterstützt, sondern auch möglich, Funktionen zu validieren und das Feedback von Endbenutzern einzuholen. Elliot Wood, CTO und Mitbegründer von CallRail, erklärt, wie das in der Praxis aussieht: "Neue Alphafunktionen werden offen und in schnellem Tempo getestet, um Kunden-Feedback zu sammeln. Die Teams sind dabei in der Lage, schnell zu arbeiten, weil sie kleine Änderungen an eine begrenzte Anzahl von Kunden weitergeben und das Risiko jedes einzelnen Experiments minimieren können."

Tipp: Alpha- und Beta-Tests, bei denen erstere intern innerhalb des Unternehmens stattfinden und zweitere auf die Umgebung des Benutzers fokussieren, sind bewährte Praxis in der Softwareentwicklung. DevSecOps bringt Automatisierungs- und Skalierbarkeitspraktiken ein, um den Technologiebetrieb zu operationalisieren. Der Schlüssel zu erfolgreichen A/B-Programmen liegt darin:

4. 'Security by Design' etablieren

Vielen soliden IT-Sicherheitsprogrammen zum Trotz bleibt es eine Herausforderung, den 'Security by Design'-Grundsatz im Softwareentwicklungsprozess zu verankern. Zu den relevanten Best Practices in diesem Bereich zählen etwa:

Steve Touw, CTO bei Immuta, weiß aus eigener Erfahrung um die Benefits, die dieser Ansatz bringt: "Seitdem wir auf 'Security by Design' setzen, hat sich unser Wartungs- und Verwaltungsaufwand mit Blick auf das Vulnerability Management merklich verringert."

Tipp: CIOs, CISOs und Delivery Manager sollten eindeutige, nicht verhandelbare Anforderungen hinsichtlich der Sicherheitspraktiken, Tests und Metriken definieren, die erforderlich sind, um Produktionspfade zu automatisieren.

5. Unit-Testing-Unzulänglichkeiten erkennen

Unit Testing hilft zwar dabei Komponenten und Schnittstellen zu validieren - reicht aber nicht aus, um die End-to-End-Funktionalität oder das Benutzererlebnis zu überprüfen.

Peter McKee, Head of Developer Relations and Community bei Sonar, erklärt: "Entwickler, die einen Shift-Left-Ansatz verfolgen, räumen Unit-Tests oft Priorität ein, um sicherzustellen, dass Features und Funktionen korrekt funktionieren. Wenn man sich jedoch ausschließlich darauf verlässt, kann das zu Lücken in der Qualitätssicherung führen. Das beeinträchtigt unter Umständen auch die Sicherheit der Software mit Blick auf das Deployment."

Tipp: Diverse Tools können Frontend User Experience Testing automatisieren. Um robuste Funktionstests zu gewährleisten, sollten agile Development-Teams:

6. Testing (fachgerecht) automatisieren

Ein Engagement für mehr funktionales Testing steht und fällt mit den entwickelten Use Cases. Dabei können QA-Engineers Grenzbedingungen und Fehlerkonditionen identifizieren - vorausgesetzt, sie werden von den Endbenutzern entsprechend angeleitet, um Ziele, Workflows und Journeys besser zu durchdringen.

"Entwickler sind darauf bedacht, Code zu liefern, der wie gewünscht funktioniert. Um eine robuste Software zu gewährleisten, die mit allen Variationen der Kundenkonfiguration funktioniert, sollten Fachexperten Tests erstellen, die geeignet sind zu demonstrieren, wie die Benutzer die Funktionen in der realen Welt nutzen", konstatiert Copado-SVP Brooks und ergänzt: "Idealerweise fahren die Subject Matter Experts explorative Tests über ein Tool, um auf dieser Grundlage automatisierte Tests zu erstellen."

Tipp: Nutzen Sie Alpha- und Beta-Gruppen im Rahmen von App-Testing. Erwarten Sie dabei jedoch nicht, dass die Tester sich repetitiven User-Acceptance-Testing-Arien hingeben. Darüber hinaus empfiehlt es sich:

7. Code validieren

Code-Generatoren auf GenAI-Basis machen es wichtiger denn je, Code Reviews zu fahren, um Vulnerabilities zu identifizieren - und Probleme aufzutun, die möglicherweise die technischen Schulden von morgen darstellen. Weitere Probleme mit der Codequalität können etwa in den Bereichen Dokumentation, Fehlerbedingungen, Protokollierung und Namenskonventionen auftreten.

"Um die QA-Bemühungen zu unterstützen, sollten Entwickler statische Codeanalysen in ihre Arbeitsabläufe integrieren", empfiehlt Sonar-Entwicklungschef McKee und begründet das mit einer entsprechenden Erklärung: "Eine automatisierte statische Analyse untersucht die interne Struktur einer Applikation und ergänzt Unit-Tests, indem sie zusätzliche Probleme aufdeckt. Durch die Kombination beider Verfahren können Entwickler die Codequalität während des gesamten Entwicklungszyklus proaktiv managen, Fehler schnell erkennen und beheben sowie die Zuverlässigkeit und Sicherheit der Software insgesamt optimieren."

Tipp: Technische Schulden zu minimieren, ist für Unternehmen ein wichtiges Thema. Entsprechend sollten Tools, die Sicherheits- und Qualitätsprobleme identifizieren, sowie deren Integration in die CI/CD-Pipeline eine nicht verhandelbare Anforderung darstellen.

8. Nicht-funktionale Betriebsanforderungen festlegen

Mit Blick auf Performanz, Zuverlässigkeit und Sicherheit gilt es, Anforderungen zu ermitteln, die dazu geeignet sind, akzeptable Betriebsbedingungen zu definieren. Entwicklungsteams formulieren diese oft als nichtfunktionale Anforderungen, die in agilen User Stories als Akzeptanzkriterien ausgedrückt werden können. Nicht-funktionale Anforderungen können sich auch darauf auswirken, welche Infrastrukturkomponenten verwendet und wie diese gemanagt werden.

"Nichtfunktionale, betriebliche Anforderungen sind ebenso wichtig wie funktionale Anforderungen", unterstreicht David Coffey, VP of Product Management bei IBM. Er fügt hinzu: "In einem Tech-Stack für einen Cloud-Service kommt es auf jede Einzelheit an. Fallen Details wie DNS-Service oder Netzwerkkonnektivität dabei unter den Tisch, kann sich das negativ auf die Verfügbarkeit und den Scope eines Cloud-Service auswirken."

Tipp: Architekten, Betriebs- und Sicherheitsexperten sollten Standards für nichtfunktionale Anforderungen und Akzeptanzkriterien entwerfen, auf die sich agile Entwicklungsteams in ihren User Stories beziehen können.

9. SLOs und Alerts kanalisieren

Eine veraltete Methode, um die Erwartungen an die Anwendungsleistung zu definieren, besteht darin, Service Level Agreements (SLAs) rund um eine Betriebskennzahl zu formulieren - beispielsweise eine Uptime von 99,9 Prozent. Ein moderner Ansatz: SLOs und Fehlerbudgets zu definieren, die regeln, wann DevSecOps-Teams operative Optimierungen priorisieren sollten.

Um das in der Praxis umzusetzen, müssen jedoch bestimmte Voraussetzungen erfüllt sein, wie Asaf Yigal, Mitbegründer und VP of Product bei Logz.io, erklärt: "Wenn Leistungsverbesserungen vorangetrieben werden und die Engineers dabei keine Ahnung haben, welche SLOs wichtig sind, untergräbt das Observability-Plattformen."

Tipp: Produktmanager sollten daran beteiligt werden, SLOs zu definieren und Kundensegmente, Journey-Typen und kritische Zeiträume dazu nutzen, aufzuzeigen, wann Ausfälle und Leistungsdefizite stärkere Auswirkungen auf das Geschäft haben.

10. Observability implementieren

Um Datenquellen zu integrieren und Daten innerhalb der Anwendungsumgebung zu bewegen, nutzen die meisten Applikationen heutzutage Daten-Pipelines. Allerdings können Workflows kompromittiert werden - was die Gefahr falscher Entscheidungen aufwirft, wenn es zu Verzögerungen oder Problemen bei der Datenqualität kommt.

Ashwin Rajeeva, Mitbegründer und CTO von Acceldata, weiß, was dagegen hilft: "Data-Reliability-Checks nach links zu verlagern, ermöglicht es, die Datenqualität und -integrität frühzeitig an der Quelle zu validieren und verhindert so kostenintensive Folgen. Continuous Monitoring und Incident Management erleichtern es, proaktiv auf potenzielle Datenvorfälle zu reagieren, ermöglichen einen ununterbrochenen Datenfluss und gewährleisten die kontinuierliche Zuverlässigkeit der Daten in der gesamten Data Supply Chain."

Tipp: Implementieren Sie Monitoring und automatisierte Checks in der gesamten Datenlieferkette, um Pipeline- und Datenqualitätsproblematiken möglichst früh auf die Schliche zu kommen.

11. Admin-Funktionen sperren

SaaS-Unternehmen schränken den administrativen Zugriff auf ihre Anwendungen und Umgebungen ein, um zu verhindern, dass Kundendaten kompromittiert werden oder die Verfügbarkeit beeinträchtigt wird.

Igor Jablokov, Gründer und CEO von Pryon, empfiehlt, sich daran ein Beispiel zu nehmen: "Verteilen Sie kritische Funktionen auf mindestens vier Schultern, um zu verhindern, dass ein Administrator teure Fehler machen kann, die Betriebszeit und Verfügbarkeit einschränken." Der Manager empfiehlt darüber hinaus weitere, grundlegende Maßnahmen, wie ein mehrstufige Authentifizierung zu implementieren und unnötige externe Zugriffsmöglichkeiten zu sperren.

Tipp: IT-Sicherheitsspezialisten sollten sich über die neuesten Schwachstellen informiert halten - zum Beispiel über die bekannten OWASP-Rankings. Diese und andere Quellen lassen sich dazu nutzen, Security-Checklisten, Schulungen und Support für DevSecOps-Teams bereitzustellen.

12. Hot-Standby-Umgebungen konfigurieren

Unternehmen, die Anwendungen bereitstellen, profitieren von einer robusten Cloud-Infrastruktur. Eine solche zeichnet sich beispielsweise aus durch:

"Lassen Sie Ihre Anwendung im Hot-Standby-Modus auch bei einem weiteren Cloud-Anbieter laufen. Denn egal, wie viel Redundanz und Failover die Hyperscaler bieten können, sie sind nicht immun gegen Fehler", unterstreicht Pryon-CEO Jablokov.

Tipp: DevSecOps-Teams, die Standardarchitekturen, -plattformen und -konfigurationen entwickeln, können Hochverfügbarkeitspraktiken leichter in ihre Infrastrukturmuster integrieren. (fm)

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