In jüngerer Vergangenheit haben sich in der Softwareentwicklung zahlreiche Rollenbilder ergeben, die unter verschiedenen Bezeichnungen bekannt sind. Dazu zählen Begriffe wie Site Reliability Engineer, DevOps Engineer, Cloud Engineer, und viele mehr. Ein neuer Trend, der in den letzten zwei Jahren aufgekommen ist und an Bedeutung gewinnt, ist Platform Engineering.
Cloud Native - Segen und Fluch zugleich
Mit der rasanten Entwicklung der Werkzeuge in der Cloud Native Landschaft haben EntwicklerInnen schier unbegrenzte Möglichkeiten, funktionale und nicht funktionale Anforderungen an eine Software umzusetzen. Die Grundlage dafür sind Container-Lösungen wie Docker und die Orchestrierung über Kubernetes. Auf dieser Basis sind unzählige Tools entstanden, die jeglichen Aspekt moderner Softwaresysteme abdecken: Von CI/CD über Messaging, Persistenz, Observability bis hin zu Orchestrierung, Security und vielen mehr.
Diese Tools haben aber auch dazu geführt, dass Personen im Kontext des operationellen Bereichs, also der Provisionierung und Wartung von Softwaresystemen, eine Vielzahl an Tools beherrschen müssen. Auch hinsichtlich des DevOps-Gedankens bedeutet das, dass Software EntwicklerInnen, zusätzlich zur Beherrschung ihrer Programmiersprachen und Frameworks, auch ein breites Wissen über Tools in der Cloud Native Landschaft brauchen.
Kognitive Überlastung
Die breite Palette an Möglichkeiten von Cloud Native Technologien ist also Segen und Fluch zugleich. Denn gerade in Entwicklungsteams, die sich im Sinne des DevOps Prinzips nicht nur um die Implementierung von Funktionalität in Form von Code kümmern, sind die Herausforderungen zahlreich. Es muss für die Bereitstellung, Wartung, Qualitätssicherung und Observierung von Softwaresystemen, eine Flut an Tätigkeiten und Konfigurationen vorgenommen werden. Das führt dazu, dass viele EntwicklerInnen in einem Bereich von andauernder kognitiver Überlastung arbeiten. Diese Belastung hat nicht nur Auswirkung auf das persönliche Leistungsniveau und Wohlbefinden einzelner Teammitglieder, sondern auch auf den Durchsatz an Features, die für Kunden bzw. NutzerInnen eines Softwaresystems implementiert werden können. Gerade bei Greenfield Projekten ist der Konfigurationsaufwand sehr hoch und die Zeitspanne eine sehr lange, bevor Teams funktionale Anforderungen umsetzen können.
Als wissenschaftliche Grundlage für die erläuterte kognitive Überlastung, wird gerne die “Cognitive Load Theory” herangezogen, die von John Sweller aufgestellt wurde. Zwar gibt es auch kritische Stimmen in der Software Engineering Community darüber, ob diese Theorie wirklich eine passende Begründung darstellt, dennoch sind die Symptome in der Praxis nicht von der Hand zu weisen.
Platform Engineering und der Goldene Pfad
Wie kann also die beobachtbare Be- und Überlastung von Software Engineering Teams im Umgang mit Cloud Native Technologien verringert oder gar vermieden werden? An dieser Stelle kommt die Philosophie des Platform Engineerings ins Spiel.
Der Grundsatz dahinter ist, dass, obwohl die Anzahl der verfügbaren Tools so groß ist, Unternehmen, die Software entwickeln, dennoch an ein Set an Best-Practices zurückgreifen können und sollten. Diese Einschränkung auf Bewährtes gilt als “goldener Pfad”. Dabei werden jene Tools und Frameworks für die Neuentwicklung von Systemen eingesetzt, für die entsprechende Kenntnisse und Erfahrung im Unternehmen vorhanden sind. Dadurch lässt sich der Automatisierungsgrad erhöhen, und EntwicklerInnen sind nicht ständig damit beschäftigt, neue Cloud Native Tools erlernen zu müssen.
Platform Engineering Teams sorgen dafür, dass dieser goldene Pfad den Entwicklungsteams zur Verfügung steht. Letztere können im Self-Service die Projekt- und Systemkonfiguration mit wenig Aufwand auf Schiene bringen und so die Zeitspanne zwischen Projektstart und dem ersten produktiv ausgerollten Feature wesentlich verringern.
Internal Developer Platform
Das Artefakt, das aus der Philosophie des goldenen Pfads entsteht, ist die sogenannte “Internal Developer Platform” oder oft auch “Internal Developer Portal”, kurz IDP. Diese ist das "Produkt", das von den Platform Engineering Teams entwickelt und angeboten wird. Entwicklungsteams sind also die internen Kunden, welche die IDP verwenden. Hinter der IDP stehen hoch automatisierte Abläufe, um den EntwicklerInnen zu ermöglichen, neue Projekte mit sehr wenig Aufwand starten zu können. Ziel ist es, dass aus einem Katalog von Tools im “goldenen Pfad” eine Anwendung mit No-Code oder Low-Code Konfigurationen, in sehr kurzer Zeit in eine Produktions-ähnliche Umgebung ausgerollt werden kann, ohne dass Entwicklungsteams detaillierte und komplexe Verfahren anwenden müssen.
Vorteile für Entwicklungsteams
Die Vorteile für Entwicklungsteams liegen dabei auf der Hand. Nicht nur, dass der “Cognitive Overload” reduziert wird, sondern auch, dass sie sich wieder auf die Kernkompetenz, nämlich das Entwickeln von Software im Sinne funktionaler Anforderungen, konzentrieren können. Das wiederum bringt effizientere und schneller Entwicklungszyklen, sowie weniger Frustration. Die Arbeitsergebnisse werden schneller sichtbar, was die Zufriedenheit einzelner EntwicklerInnen erhöhen kann.
Vorteile für Unternehmen
Da die Entwicklungsteams konzentrierter an den funktionalen Anforderungen arbeiten können und Features sich stressfreier implementieren lassen, profitieren auch die Unternehmen, für welche die Software entwickelt wird. Erste Prototypen lassen sich schnell auf Schiene bringen und ausrollen, wodurch schon innerhalb weniger Tage ein Prototyp oder gar ein Minimal Viable Product (MVP) zur Verfügung steht. Insgesamt ergibt sich dadurch eine schnellere und stabilere Markteinführung digitaler Produkte.
Aber auch hinsichtlich der Qualitätskriterien ergeben sich zahlreiche Vorteile durch den Platform Engineering Ansatz. Die “Internal Developer Platform” wird durch Platform Engineering Teams laufend gewartet und weiterentwickelt, wodurch auch neue und nützliche Technologien in den “Goldenen Pfad” integriert werden können. Darüber hinaus werden nicht-funktionale Aspekte, wie etwa Security-Updates und Patches von Third-Party- Bibliotheken schneller in bestehende Anwendungen gebracht, weil die Automatisierung der IDP technische Schulden in dieser Hinsicht minimiert.
Was braucht es für erfolgreiches Platform Engineering?
Um Platform Engineering erfolgreich im Unternehmen zu etablieren, bedarf es einer klaren strategischen Ausrichtung. Diese beginnt mit einer klar definierten Vision und konkreten Zielen, die das Unternehmen mit Platform Engineering erreichen möchte. Ohne eine solche Orientierung kann die Einführung neuer Praktiken und Technologien schnell in die falsche Richtung gehen und den erhofften Nutzen verfehlen. Deshalb ist es von großer Bedeutung, dass auch die Management-Ebene den Nutzen des Platform Engineerings erkennt und unterstützt. Nur durch Rückhalt und Förderung auf der Führungsebene können die notwendigen Veränderungen und Investitionen in Technologien und Ressourcen nachhaltig umgesetzt werden.
Rahmenbedingungen schaffen
Neben der strategischen Ausrichtung ist es unerlässlich, klare Rahmenbedingungen zu definieren. Governance-Strukturen und Richtlinien bieten den notwendigen Rahmen, um sicherzustellen, dass die implementierten Prozesse und Technologien den Anforderungen des Unternehmens entsprechen und konsistent angewendet werden. Dies beinhaltet die Festlegung von Best Practices und Standards, die sicherstellen, dass die Arbeit der Platform Engineering Teams den gewünschten Qualitätsanforderungen entspricht. Diese Standards dienen als Leitlinien, die nicht nur für Konsistenz sorgen, sondern auch die Effizienz steigern, indem sie den "Goldenen Pfad" für alle Beteiligten klar definieren.
Technologische Basis
Die technologische Basis bildet das Fundament jeder Platform Engineering Initiative. Hierzu gehören Tools und Technologien, die den gesamten Softwareentwicklungsprozess unterstützen. Dazu zählen CI/CD Pipelines, Cloud Native Technologien, Infrastructure as Code (IaC), Monitoring Lösungen, und viele andere Tools und Praktiken, welche im Platform Engineering gebündelt werden müssen. Solide Kenntnisse über Kubernetes und Docker sind dabei unverzichtbar.
Wen braucht es für Platform Engineering?
Die Implementierung von Platform Engineering erfordert nicht nur die richtigen Technologien, sondern auch die richtigen Menschen. Platform Engineers stehen dabei an vorderster Front. Sie entwickeln und warten die Internal Developer Platform (IDP) und sorgen dafür, dass die Entwicklungsteams ihre Arbeit effizient erledigen können. Die bisher bekannten Rollen der Site Reliability Engineers (SREs) und DevOps Engineers sind dabei von großer Bedeutung, da sie auch bisher die Brücke zwischen Entwicklung und Betrieb geschlagen haben. SREs bringen ihre Expertise in Sachen Zuverlässigkeit, Skalierbarkeit und Cloud ein, während DevOps Engineers sicherstellen, dass die entwickelten Lösungen nahtlos in die bestehende Infrastruktur integriert werden.
Zusammenarbeit und Kommunikation
Zu guter Letzt braucht es laufende Kommunikation zwischen Platform Teams und Entwicklungsteams. Die traditionellen Silos zwischen Entwicklung und Betrieb müssen abgebaut werden, um eine Kultur des offenen Wissensaustauschs zu fördern. Nur wenn alle Beteiligten an einem Strang ziehen und bereit sind, voneinander zu lernen, können die Ziele des Platform Engineerings erreicht werden. Regelmäßige Kommunikation und der Austausch von Erfahrungen und Best Practices tragen dazu bei, dass die Plattform kontinuierlich verbessert wird und den Bedürfnissen der Entwicklungsteams optimal entspricht.
Fazit
Platform Engineering stellt eine vielversprechende Antwort auf die Herausforderungen dar, die die wachsende Komplexität der Cloud Native Landschaft mit sich bringt. Durch eine strategische Ausrichtung, klare Rahmenbedingungen, die richtige technologische Basis und die Zusammenarbeit erfahrener Experten können Unternehmen die kognitive Überlastung ihrer Entwicklungsteams reduzieren und ihre Effizienz steigern. Die Einführung einer Internal Developer Platform (IDP) schafft die Voraussetzungen dafür, dass Softwareprojekte schneller, stabiler und in höherer Qualität umgesetzt werden können. Letztendlich profitieren sowohl die EntwicklerInnen als auch das Unternehmen von einer gut implementierten Platform Engineering Strategie.