Platform Engineering

Platform Engineering – Die DevOps Evolution?

Lesezeit
12 ​​min

Moderne digitale Produkte basieren in der Regel auf zahlreichen unterschiedlichen Diensten, die eine Vielzahl von Technologien nutzen. Diese stetig wachsende Technologielandschaft stellt immer mehr Unternehmen vor große Herausforderungen. Wie können diese Technologien genutzt werden, um einen Wettbewerbsvorteil zu erzielen, ohne dabei die Sicherheit und Verfügbarkeit des Produktes zu beeinträchtigen?

Die IT-Branche hat bereits in der Vergangenheit versucht, Antworten auf diese Problemstellung zu finden. DevOps oder Site Reliability Engineering sind prominente Beispiele dafür. Mehr dazu findet ihr auch in unserem vorherigen Blog-Artikel DevOps & SRE: Kernideen, Gemeinsamkeiten und Unterschiede.

Wir stellen euch in diesem Artikel ein neues Paradigma vor: Platform Engineering. Wir erklären euch, wie bestehende Konzepte diesen neuen Ansatz ergänzen und welche kulturellen, organisatorischen und technologischen Bausteine auf dieser Reise unerlässlich sind.

Herausforderungen bei der Entwicklung moderner verteilter Anwendungen

Moderne IT-Landschaften sind dadurch geprägt, dass eine Vielzahl von Technologien und Produkten gemeinsam ein digitales Produkt für Endbenutzer:innen schaffen. Traditionell wurden die daraus entstehenden Herausforderungen von zwei oder mehr Teams – Entwicklung und Betrieb – gelöst.

In diversen Unternehmen führte das dazu, dass dieselben Probleme von unterschiedlichen Teams auf unterschiedliche Weise gelöst werden mussten. Dies führte unserer Erfahrung nach zu einer Reihe von Problemen:

Kognitive Last
Die Auswahl, Entwicklung und der Betrieb von Tools die den Software-Development-Lifecycle (SDLC) ermöglichen, müssen von jedem Team selbst verantwortet werden. Diese Verantwortung wird von den Teammitgliedern zusätzlich zu ihrer eigentlichen Tätigkeit gefordert, was zu einer signifikant höheren kognitiven Belastung führt und den Fokus auf das eigentliche Endprodukt einschränkt.
Erhöhte Komplexität
Neue Technologien wie IoT, KI etc. und die dazugehörigen Anforderungen an die Verfügbarkeit und Skalierbarkeit moderner verteilter IT-Systeme erfordern umfassende Kenntnisse und ein breites Wissensspektrum.
Sicherheit und Governance
Heterogene Tool-Ökosysteme erschweren die Implementierung und Überprüfung von Richtlinien und regulatorischen Anforderungen zusätzlich. Dies stellt aus unternehmerischer Sicht ein stetig wachsendes Risiko dar.

Platform Engineering – Das Schweizer Taschenmesser?

Plattformen gibt es in allen Formen und Größen. Ob es sich um die Grundlage für mehrere Fahrzeuge wie den Modularen Querbaukasten (MQB) von Volkswagen oder eine E-Commerce-Plattform wie Shopify handelt. Plattformen sind Produkte, die andere Produkte und Dienstleistungen ermöglichen.

Für digitale Softwareprodukte und Dienstleistungen muss eine Plattform Anforderungen über den gesamten Software-Development-Lifecycle hinweg bedienen. Vom ersten Entwurf der Anwendung bis hin zu einer skalierbaren, zuverlässigen und sicheren Bereitstellung. Diese Art von Plattform wird als „Internal Developer Platform“ (IDP) bezeichnet. Platform Engineering beschreibt die Disziplin der Konzeption und Entwicklung einer Kombination von Software- und Infrastrukturkomponenten, die gemeinsam eine IDP bilden.

Merkmale

IDPs können in ihrem Umfang sehr unterschiedlich gestaltet sein. Von der Bereitstellung der Basiskomponenten wie einer Codeverwaltung bis hin zu vollumfänglichen Self-Service Plattformen, die einen umfassenden Servicekatalog zur Verfügung stellen. Einige Kernmerkmale sind aus unserer Sicht entscheidend:

Internal

Eine IDP ist kein fertiges Produkt, das ohne Anpassungen eingeführt werden kann. Stattdessen gilt es, eine Plattform zu schaffen, die die Anforderungen der Branche und die technischen und insbesondere die organisatorischen Gegebenheiten des Unternehmens unterstützt.

Developer Experience

Bezieht sich auf die Gesamtheit der Interaktionen und Erlebnisse, die Entwickler mit den bereitgestellten Tools, Prozessen und Plattformen haben, um effizient und zufriedenstellend Software zu entwickeln und zu betreiben. Beispielsweise durch die Bereitstellung von Blueprints, Community-Formaten oder einer hochwertigen Dokumentation.

Paved Roads

Best Practices einer Organisation oder Abteilung können in sogenannten Paved Roads / Golden Paths abgebildet werden. Dadurch können Teams schnell und sicher produktionsnahe Prototypen entwickeln und von Skaleneffekten profitieren.

Compliance

Die Erfüllung von regulatorischen und unternehmensinternen Regeln und Standards ist ein zentraler Bestandteil einer IDP. Durch ein hohes Maß an Automatisierung und die Etablierung geeigneter Toolchains kann die Einhaltung forciert und kontinuierlich überprüft werden.

Self-Service Catalog

Die Bereitstellung von standardisierten Diensten, beispielsweise einer relationalen Datenbank oder eines Session Cache, erfolgt über ein Self-Service-Portal. Durch dieses hohe Maß an Automatisierung kann die Bereitstellungszeit neuer Dienste, ob Proof of Concept oder produktionsreif, signifikant reduziert werden.

Consulting & Training

Eine IDP lebt von dem Feedback und der Zufriedenheit Ihrer Nutzer. Damit eine IDP zum Erfolg werden kann, muss ein Plattformteam umfangreiches Consulting und Training anbieten und eine hochwertige – Entwicklerzentrierte – Dokumentation liefern.

Im folgenden Abschnitt stellen wir eine Möglichkeit vor, wie diese Merkmale konkret in einer Plattformarchitektur umgesetzt werden können.

Building Blocks

Neben den Merkmalen stellt die Komplexität eines modernen Softwareentwicklungslebenszyklus zusätzliche Herausforderungen an eine IDP. Wir bilden diese Komplexität in sogenannten Building Blocks ab. Bausteine, die über klar definierte Schnittstellen miteinander interagieren können. Diese technischen und organisatorischen Bausteine dienen uns in Projekten als Orientierung, um eine individuelle IDP für unsere Kunden zu konzipieren und implementieren zu können.

In den folgenden Abschnitten werden wir auf die einzelnen Bausteine detaillierter eingehen und die Zusammenhänge verdeutlichen.

Base Infrastructure

Die Basisinfrastruktur bildet die Grundlage der IDP und umfasst alle physischen und virtuellen Ressourcen, die für den Betrieb der Plattform erforderlich sind.

  • Cloud: Nutzung von Cloud-Diensten wie AWS, Azure oder Google Cloud Platform, um flexibel skalierbare Ressourcen bereitzustellen.

  • Datacenter: Rechenzentren, die physische Server, Speicher- und Netzwerkressourcen bereitstellen und z. B. mit OpenStack komplett selbst verwaltet werden, um ein hohes Maß an Kontrolle und Sicherheit zu erreichen.

Dieser Layer kann abhängig von der spezifischen Organisation natürlich deutlich umfassender ausfallen und auch Edge-Computing-Komponenten enthalten, um Anwendungen auf niedrige Latenz zu optimieren. Die Basisinfrastruktur hat eine klar definierte Schnittstelle zur nächsten Schicht, dem Platform Core. Diese ist idealerweise eine API kann jedoch aus organisatorischen und technischen Gründen auch eine Verantwortungsgrenze darstellen.

Platform Core

Die zentrale Komponente des Cores ist die Laufzeitumgebung sowohl für die Applikationen als auch für die Bereitstellung von Plattform-Diensten. Eine Plattform kann mehrere Laufzeitumgebungen integrieren, beispielsweise Kubernetes Cluster für Applikationen und Bare-Metal-Server für rechenintensive Anwendungen.

Neben der Laufzeitumgebung stellt der Core alle Komponenten bereit, um einen produktiven Betrieb einer Anwendung grundsätzlich zu ermöglichen. Das heißt, Code muss versioniert abgelegt (Code Repository), gebaut und paketiert werden (CI, Artifact Store), auf der Umgebung provisioniert (CD) und kontinuierlich überwacht und optimiert werden (Observability). Dabei sollen alle Schritte nur durch authentifizierte und autorisierte Nutzer erfolgen können (IAM).

Der Core bildet die Basis der gesamten Plattform und stellt klare Schnittstellen für alle weiteren Dienste der Plattform zur Verfügung. Er besteht aus Komponenten, die zwingend erforderlich sind, um einen minimalen SDLC abzubilden und weitere Plattform-Dienste zu integrieren. Auch hier gilt, nicht jede Komponente muss durch die Plattform bereitgestellt und betrieben werden.

Platform Services

Die Plattformdienste (Services) bieten spezialisierte Funktionalitäten, die auf die Bedürfnisse der Softwareprodukte zugeschnitten sind. Auch hier bilden die drei Subkategorien nur Beispiele. Andere Anforderungen für Use Cases wie MLOps oder IoT-Anwendungen können ebenfalls durch die Plattform bereitgestellt werden.

  • Network Services: Umfasst API-Gateways, Load Balancing oder Netzwerkverbindungen, um eine reibungslose Kommunikation zwischen Diensten zu gewährleisten oder Drittsysteme anzubinden.
  • Application Services: Dienste, die direkt eine Applikation unterstützen wie Secret-Management Systeme, Caching-Lösungen o. ä.
  • Data Services: Umfasst beispielsweise die Bereitstellung von Datenbanken, persistenten Speichern und Datenschutzlösungen.

Entscheidend bei der Auswahl der Plattformdienste ist die Anwendung des Paretoprinzips auch bekannt als die „80-20-Regel“. Es sollten also die Dienste standardisiert bereitgestellt werden, welche den größten Nutzen und die weiteste Verbreitung genießen.

Security & Governance

Ein grundlegendes Versprechen von Platform Engineering ist die Erhöhung der Sicherheit und die Einhaltung von Governance-Richtlinien, ohne dabei die Entwicklungsgeschwindigkeit zu beeinträchtigen.

Neben Standards wie Firewall-Regeln, Zertifikaten und API-Tokens sind automatisierte statische Code-Analyse und effektives Container Image Vulnerability Scanning weitere wichtige Schritte, um frühzeitig potenzielle Sicherheitsrisiken zu identifizieren, bevor sie Produktionsumgebungen gefährden.

Im Kontext des Plattform Engineerings ist es essentiell, Sicherheit ganzheitlich zu integrieren. Deshalb spielen organisatorische Richtlinien eine wichtige Rolle, um sicherzustellen, dass es klare Sicherheitsstandards gibt.

Zusätzlich sollten klare Richtlinien für Code-Container, Cluster und Cloud (die 4Cs) definiert werden. Diese Leitlinien bieten einen strukturierten Rahmen, um eine robuste Sicherheitsstruktur zu schaffen, und fördern eine Kultur der Verantwortung innerhalb des Unternehmens.

Organization & Culture

Platform Engineering ist weniger eine technische als eher eine organisatorische Disziplin. Im Wesentlichen grenzt sich Platform Engineering von einer klassischen Trennung zwischen Development und Operations ab.

Entscheidend ist, dass Plattformen als Produkte verstanden und behandelt werden. Das erfordert in einer klassischen agilen Organisation einen dedizierten Product Owner der Plattform, um die zahlreichen Stakeholder zu managen und häufig auch organisatorische Änderungen auf den Weg zu bringen. So kann beispielsweise eine Umstrukturierung nötig werden, da die Bereitstellung von Zertifikaten nun nicht mehr manuell, sondern automatisiert erfolgt.

Zu einem Produktverständnis gehört auch, die Bedürfnisse der Kunden zu erkennen. Dabei sind Kunden einer Plattform sehr vielfältig und abhängig vom Umfang und der eingesetzten Domäne. Im Kern geht es darum, die technologischen Herausforderungen in der Organisation zu erkennen und Lösungen für diese zu schaffen.

Diese Lösungen sollten nicht nur die Anforderungen des (internen) Kunden erfüllen, sondern sie müssen auch einfach und verständlich konsumierbar sein. Dies geschieht im besten Fall durch eine zentrale Schnittstelle, die wir als Platform Interface bezeichnen.

Platform Interface

Das Interface ist die übergreifende zentrale Schnittstelle der Internal Developer Platform und stellt einen zentralen Zugangspunkt für alle Stakeholder der Plattform bereit. Dieser integrative Layer ermöglicht es auch, dass eine IDP, transparent für den Endnutzer, von vielen Plattform- oder Infrastruktur-Teams bereitgestellt wird. Im einfachsten Fall kann dieses Interface eine simple Startseite in einem Wiki sein, welche einen Service-Katalog, Regelformate wie Sprechstunden und Ansprechpartner umfasst. Mit steigendem Reifegrad kann ein solches Plattform Interface auch folgende Punkte umfassen:

  • Developer Portal: Eine zentrale Anlaufstelle für Entwickler, um auf Ressourcen, Dokumentation und Support zuzugreifen.
  • APIs & Documentation: Bereitstellung von APIs und umfassender Dokumentation, um die Integration und Nutzung der Plattform zu erleichtern.
  • Support: Unterstützung durch technische Hilfe und Beratung, um Entwickler bei der Nutzung der Plattform zu unterstützen.

Übersicht

Zusammengefasst bilden die Building Blocks einer Internal Developer Platform ein kohärentes System, das sowohl technologische als auch organisatorische Elemente integriert. Von der Basisinfrastruktur über spezialisierte Plattformdienste bis hin zu kulturellen Aspekten bieten diese Bausteine eine Möglichkeit, sich in der Platform-Engineering-Welt zu orientieren. In der folgenden Abbildung findet ihr eine exemplarische Ausgestaltung einer IDP, die wir im Rahmen unserer Plattform Workshops entwickelt haben.

Dies ist unsere Sichtweise von Platform Engineering als grafisches Modell. Welchen Herausforderungen seid ihr im Kontext von Platform Engineering begegnet oder steht euch die Plattform Journey noch bevor?

Fazit

Obwohl es auf den ersten Blick nach den traditionellen organisatorischen Silos von Entwicklung und Betrieb aussieht, stellt Platform Engineering eine evolutionäre Weiterentwicklung dar. Es fördert geteilte Verantwortung durch neue Formen der agilen Zusammenarbeit und moderne Produktentwicklungsmethoden.

Ein Schlüsselfaktor ist die Betrachtung der Internal Developer Platform (IDP) als eigenständiges Produkt. Die bewährten Prozesse der Produktentwicklung für externe Kunden wie beispielsweise die Erfassung von Nutzungsstatistiken oder die Vermarktung der IDP finden hier Anwendung. Der wesentliche Unterschied besteht darin, dass auch interne Entwicklungsteams als Kunden verstanden werden.

Um die Developer Experience kontinuierlich zu verbessern, können gezielte Nutzerinterviews oder Umfragen wertvolles Feedback zur Benutzbarkeit der IDP liefern. Dieser Ansatz stellt sicher, dass Platform Engineering nicht zu einem weiteren Buzzword wird, sondern den Kundengedanken in den Mittelpunkt rückt.

Darüber hinaus ermöglicht Standardisierung nutzbare Skaleneffekte, die ökonomische Vorteile bieten. In unserem nächsten Artikel werden wir die technischen und wirtschaftlichen Aspekte für die Implementierung von Platform Engineering näher beleuchten.

Hat dir der Beitrag gefallen?

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert