Der Aufstieg des Platform Engineering – das nächste große Ding?
Platform Engineering etabliert sich als Antwort auf die steigende Komplexität beim Softwarebereitstellen und die hohe kognitive Belastung der Entwicklungsteams.
![Der Aufstieg des Platform Engineering](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/6/3/3/6/6/8/engineering_platform___digital-102789d17829829f.jpeg)
(Bild: iX)
- Mirco Hering
Die von DevOps geprägte Welt der Softwareentwicklung ist schnelllebig; ein neues Tool jagt das nächste und neue Schlagworte wie DevSecOps oder SRE (Site Reliability Engineering) rücken ins Rampenlicht. Eine in der DevOps-Community häufig diskutierte Frage ist die nach dem nächsten großen Ding. Als neuester möglicher Ersatz für DevOps wird Platform Engineering hoch gehandelt. Die jüngste Ausgabe der Online-Konferenz PlatformCon lockte Tausende von Teilnehmer aus der ganzen Welt an.
- Mit dem Fokus auf Produktivität und Arbeitszufriedenheit von Entwicklungsteams etabliert sich Platform Engineering als Alternative zum DevOps-Toolkit.
- Platform Engineering sucht die Balance zwischen Standardisierung und Flexibilität.
- Um erfolgreich zu sein, muss Platform Engineering den Prinzipien der Produktentwicklung folgen.
Die DevOps-Community ist eine ziemlich aufgeschlossene Gemeinschaft, da es kein Manifest und keine Methodik gibt, die eine In-Group oder Out-Group definieren könnte. Konzepte wie SRE oder Platform Engineering gelten eher als Ergänzung des DevOps-Toolkits, mit dem Unternehmen die Bereitstellungsweise von Anwendungen verbessern und die Produktivität der Entwicklungsteams steigern können. Zudem ist Produktivität ein guter Indikator für Arbeitszufriedenheit (Stichwort: Developer Experience). Denn in der Praxis wirken sich Faktoren wie die Arbeits- und kognitive Belastung der Entwicklungsteams häufig negativ auf die Produktivität aus.
Platform Engineering hebt sich von anderen aktuellen Trends dadurch ab, da es sich einem Problem widmet, das erst vor Kurzem in den Fokus gerückt ist: die zunehmende Komplexität in der Softwarebereitstellung. Platform Engineering greift diese Herausforderung mit der Zielvorgabe auf, die Produktivität sowie die Arbeitszufriedenheit der Teams zu bessern. Dieser umfassende Ansatz erklärt auch, warum Platform Engineering so schnell an Beliebtheit gewonnen hat.
Ist Platform Engineering das nächste DevOps? – Jein!
Ist Platform Engineering also das neue DevOps? Eher nicht. DevOps hat der IT-Community eine Fülle von Werkzeugen und Prinzipien an die Hand gegeben, die kontinuierlich verbessert und erweitert werden. DevOps zeichnet sich durch eine starke kulturelle Dimension aus: "Blameless Post-Mortems" (Retrospektiven ohne Schuldzuweisung) etwa legen einen Schwerpunkt auf das Vermeiden von Burn-outs und das Aufbrechen organisatorischer Silos. Dabei handelt es sich um ganzheitliche organisatorische Belange, während viele der trendigeren Konzepte jeweils eine spezifische Dimension unter die Lupe nehmen: DevSecOps legt den Fokus auf Sicherheit, SRE auf moderne Betriebsmodelle. Platform Engineering zielt darauf ab, Teams technisch in die Lage zu versetzen, der zunehmenden Komplexität Herr zu werden. Platform Engineering ist daher eher eine neue Art, DevOps zu betrachten. Es weitet den Fokus auf die Entwickler-Community und Unternehmensinteressen wie Sicherheit und Infrastrukturbetrieb aus.
Gegen die zunehmende Komplexität
Was macht das Bereitstellen von Anwendungen und IT-Infrastruktur heute so komplex? Noch vor rund 15 Jahren waren vierteljährliche Software-Releases üblich, und für jedes Release mussten Entwicklerinnen und Entwickler ein paar Dutzend Systeme bereitstellen – hauptsächlich monolithische Individualsoftware und Softwarepakete. Dem Go-Live ging in der Regel eine strenge, mehrwöchige Code-Freeze-Periode voraus. In einem "War-Room" lag ein ausgedruckter Projektplan samt Inventar aller erforderlichen Elemente und ihrer Versionen parat.
Seither hat sich die Situation durch das Aufkommen von Cloud-(nativen-)Technologien deutlich verändert (siehe Abbildung 1). Dienste von Cloud-Anbietern einzubeziehen, gelingt einfacher. Aber der wachsende Anteil an Open-Source-Software hat dazu geführt, dass Hunderte Open-Source-Elemente in einer Softwareversion enthalten sind, mit vielen transitiven Abhängigkeiten, die die enthaltenen Elemente im Sourcecode vervielfachen. Der typische Release-Zyklus ist nicht mehr vierteljährlich, sondern eher monatlich, wöchentlich oder sogar in noch viel kürzeren Perioden. Die damit verbundenen Aufgaben steigern ebenso wie die rasant gewachsene Zahl der Tools die Komplexität. Erfolgten früher viele Arbeiten noch manuell, sind heutzutage Dutzende Tools an einem Release-Zyklus beteiligt – unter anderem in den Bereichen Test, Builds, Release und Infrastruktur. Die im Zuge von DevOps und agilen Methoden gepflegte Praxis, den Teams die Wahl ihrer Werkzeuge zu überlassen, hat zudem zu einer starken Diversifizierung der Tools insbesondere in größeren Unternehmen geführt – und somit zu noch mehr Komplexität beigetragen.
(Bild: Mirco Hering / Accenture)
Während in den Zeiten der War-Room-Releases einzelne verantwortliche Personen noch in der Lage waren, ein vollständiges Verständnis der bereitzustellenden Software zu erlangen, ist dies heute angesichts der Vielzahl an Prozessen und Werkzeugen sowie der immer kürzeren Release-Zyklen kaum noch möglich. Die gestiegene Komplexität ist jedoch nicht grundsätzlich schlecht. Sie ist vielmehr eine Folge beziehungsweise ein Nebeneffekt der deutlich umfassenderen Bereitstellungsfähigkeiten in der Softwareentwicklung. Um einem drohenden Kontrollverlust sowie steigenden Kosten und Risiken durch zu hohe Komplexität effektiv begegnen zu können, bietet das Platform Engineering jedoch geeignete Mittel.
Der Komplexität tritt Platform Engineering mit einem einheitlichen Framework und gemeinsamen Vorlagen entgegen. Das ist schwieriger, als es klingt, wie viele gescheiterte Implementierungen einer einheitlichen Tooling-Plattform nach dem Motto "one size fits all" gezeigt haben. Insbesondere in großen, heterogenen Organisationen lässt sich das richtige Gleichgewicht zwischen Standardisierung und Flexibilität häufig nur schwer finden, wenn es gilt, eine Vielzahl von Technologien für alle Beteiligten unter einen Hut zu bekommen.
Um Entwicklerinnen und Entwicklern vielfältige Möglichkeiten zu bieten, Antworten auf ihre häufigsten Probleme in Bezug auf Sicherheit, Infrastruktur oder Anwendungsbereitstellung zu finden, gehören zum Platform Engineering eine umfassende Dokumentation sowie eine Vielzahl an Mustern. Darüber hinaus sollte das Befolgen der Unternehmensstandards einfach gestaltet sein. Entwicklungsteams müssen aber auch über die nötige Flexibilität verfügen, Experimente mit neuen Tools und Praktiken durchführen zu können. Das schließt vor allem neue Dienste und Funktionen der Cloud-Anbieter für das Software-Engineering ein. Dem Platform Engineering muss dabei das richtige Gleichgewicht und die erforderliche Governance für das stete zwischen Expansion durch Experimentieren und anschließender Konsolidierung schwankende Pendel gelingen. Nur so lässt sich ein belastbares Betriebsmodell für die Developer Platform finden. Die Architektur der Plattform sollte sich an der Architektur von Geschäftsanwendungen orientieren (siehe Abbildung 2). Dazu sollte sich der gesamte Lebenszyklus der Softwareentwicklung auf eine integrierte Plattform stützen, die nur lose gekoppelt ist. Das sichert unter anderem die Freiheit, Komponenten zu ersetzen, wenn es erforderlich erscheint – etwa, wenn ein neues, besseres Tool für eine bestimmte Aufgabe zur Verfügung steht. Erfahrenen Teams erleichtert die lose Kopplung, selbst Änderungen vorzunehmen und zur Plattform beizutragen.
(Bild: Mirco Hering / Accenture)
Es ist ratsam, das Platform Engineering nach den Prinzipien der Produktentwicklung mit Fokus auf die internen Entwicklerteams auszurichten. Das schließt auch, falls vorhanden, externe Developer ein. Umfang und Herangehensweise des Platform Engineering sind darauf ausgerichtet, sich in die Anforderungen der Nutzer / Kunden einzufühlen und so die Akzeptanz der Plattform zu erhöhen. Die Stakeholder der Plattform bleiben jedoch die Hüter von Prozessen und Standards wie Sicherheit und Infrastruktur. Das Plattform-Entwicklungsteam muss daher zwischen den verschiedenen Interessengruppen vermitteln, um eine für alle Beteiligten praktikable Lösung zu schaffen.