Platform Engineering

Was ist Platform Engineering?

Platform Engineering beschäftigt sich mit der Erstellung einer „Internen Developer Platform“ (IDP), über die Software-Entwickler_innen im Self-Service Tools und Services abrufen können, die sie für ihre Arbeit brauchen.

Zum Beispiel können sich Softwareentwickler_innen über eine IDP selbständig Testumgebungen deployen oder die Ergebnisse von vergangenen Testläufen einsehen. Das Ziel ist, Entwickler_innen die Möglichkeit zu geben, sich auf die Entwicklung und Bereitstellung von Features zu konzentrieren, anstatt Zeit mit Setups und Wartung der Infrastruktur zu verbringen. Je größer das Team und das Toolset, desto mehr profitiert ein Unternehmen davon.

Platform Engineering und DevOps

Ursprünglich erstellten Entwickler_innen die Software und betrieben sie. Später trennte man die Bereiche “Entwicklung” und “Operations”. Das Problem: Das getrennte Arbeiten führte zu Silos. Unter der Bezeichnung DevOps entstanden dann Methoden, um die Zusammenarbeit zu fördern. Platform Engineering ist der nächste Schritt und eine Weiterentwicklung von DevOps, um die Effizienz in der Softwareentwicklung zu steigern.

Beispiel: Backstage IDP

Ein Beispiel für eine IDP ist die Entwickler_innenplattform backstage.io von Spotify. Sie ist quelloffen (Open Source) und zeigt die Grundprinzipien von Platform Engineering auf. Bei Backstage handelt es sich um eine Plattform, die alle Informationen über die verwendeten Tools und Dienste eines Unternehmens enthält. 

Entwickler_innen haben sofort Zugriff auf Vorlagen, die firmenintern als best practice gelten und erhalten einen Überblick über die bevorzugt eingesetzten Tools, um ein effizientes gemeinsames Arbeiten an einem Projekt zu ermöglichen. Ein weiterer Vorteil: Es ist sofort sichtbar, wer für einzelne Bereiche zuständig ist. Das verringert den Aufwand in der Zusammenarbeit. Hat man vorher schnell auf Slack gefragt, wer verantwortlich ist, reicht hier ein Blick in die Plattform. Teams steht also eine Anlaufstelle zur Verfügung, um sofort einen Überblick über das unternehmenseigene IT-Ökosystem zu bekommen. Die Funktionen können hier in einer Demo angesehen werden: Demo Backstage.

Platform Engineer: Tätigkeiten

Hier zwei Statements, welche die Tätigkeiten eines Platform Engineers aufzeigen und einen ganz individuellen Einblick in das Thema Platform Engineering bieten (https://www.reddit.com/r/devops/comments/qawu7g/platform_engineer/):

Unser Team ist dafür verantwortlich, den Entwicklungsteams einen klaren Weg zu weisen, wie sie eine Anwendung in Produktion bringen können. Dazu gehört, dass wir sicherstellen, dass wir ein funktionierendes CI/CD-System, eine funktionierende Infrastruktur, funktionierende Entwicklungsstrategien, interne Tools, die all das unterstützen, und ein klares Bild davon haben, wie wir Metriken sammeln / Daten über die gesamte Infrastruktur sammeln, sicherstellen, dass es eine testbare Umgebung gibt, Backup- / Replikations- / Fail-Over-Strategien für Teams bereitstellen, die sich vielleicht weniger gut mit dem Thema auskennen und einfach nur eine Anwendung herausbringen wollen.

Ich wurde als DevOps Engineer eingestellt, und wir änderten den Titel in Platform Engineer. Wir ermöglichen es Entwicklern, ihre eigenen Produkte über eine Plattform zu unterstützen, die es ihnen leichter macht. Wir schaffen einfach diese Plattform. So haben wir z. B. alle Dinge, die den Entwicklern egal sind oder die sie nicht brauchen, in einer einfach zu bedienenden „Aufgabe“ gebündelt, die zum Zeitpunkt des Deployments ausgeführt wird. Wir haben jede Anwendung in ihrer eigenen Infrastruktur isoliert, so dass nichts mit anderen Anwendungen geteilt wird und sie selbst über diese verfügen können. […] Wir wollen, dass die Entwickler niemals von uns blockiert werden, sondern immer in der Lage sind, das zu tun, was sie tun müssen. Das ist unser Ziel.

Der Nutzen von Platform Engineering

  • Verbesserung der Developer Experience: Entwickler_innen können im Self-Service auf Tools und Informationen zugreifen.
  • Verminderung von kognitiver Belastung: Entwickler_innen müssen sich nicht mehr um bestimmte Tätigkeiten kümmern.
  • Produktivitätssteigerung: Entwickler_innen verbringen weniger Zeit damit, sich um ihre Tools zu kümmern und sind produktiver.

Der Nachteil von Platform Engineering

  • Komplexität: Das Management und die Wartung erfordern ein tiefes Verständnis verschiedener Systeme und Tools.
  • Kosten: Die Investition in die Entwicklung und Pflege der Plattform kann hoch sein.
  • Standardisierung vs. Autonomie: Zu hohe Standardisierung kann Entwickler_innen einschränken.

Weitere Informationen