12 Wege, DevSecOps zu optimieren

23.05.2024
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.

 
Dieses Prinzipien-Dutzend aus dem Bereich Software as a Service kann auch DevSecOps-Verantwortliche weiterbringen.
12 SaaS-Inspirationen für Ihr DevSecOps-Team.
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:

  • CI/CD-Pipelines zu standardisieren,

  • mit Feature Flags zu entwickeln und

  • Canary-Release-Strategien einzusetzen.

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:

  • Teilnehmer zu rekrutieren,

  • Ziele zu kommunizieren,

  • umsetzbares Feedback zu erfassen, sowie

  • Kollaboration zu belohnen.

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:

  • automatisierte Penetration-Tests,

  • Code-Scans innerhalb von CI/CD-Pipelines sowie

  • der Schutz vor API-Injection, -Lecks und nicht funktionierenden Zugriffskontrollen.

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:

  • entsprechende Verantwortlichkeiten definieren,

  • Skills entwickeln und

  • die dafür nötige Zeit investieren.

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: