Platform Engineering im Vergleich zu DevOps
DevOps ist ein Konzept der Softwareentwicklung, mit dem Unternehmen Entwicklungs- und IT-Operations-Funktionen zu iterativen Workflows zusammenfassen. Beim Platform Engineering liegt der Fokus mehr auf dem Erstellen der internen Plattformen und Tools, die diese Workflows unterstützen. Sowohl Platform Engineering als auch DevOps sind IT-Praktiken, die mithilfe agiler Softwareentwicklungsmethoden die Release-Zeit verkürzen und Hindernisse bei der Entwicklung reduzieren. Allerdings werden die beiden Praktiken zu unterschiedlichen Zeitpunkten und mit dem Fokus auf jeweils andere Probleme eingesetzt. Wenn Sie die Unterschiede kennen, können Sie sich für einen Ansatz entscheiden, der zu Ihren Zielen passt.
Was ist DevOps?
DevOps kombiniert die beiden Bereiche Entwicklung und IT-Operations miteinander und verwendet Tools und Prozesse, um Teams zusammenzuführen, die früher innerhalb von Organisationen voneinander getrennt waren. Bei DevOps kommen agile Prinzipien zum Einsatz – eine Entwicklungsmethode, die auf selbst gemanagten Teams und schneller Iteration basiert. Da die Implementierung von DevOps eine funktionsübergreifende Zusammenarbeit zwischen Teams und den Aufbau von Vertrauen und Zusammenhalt erfordert, wird allgemein davon ausgegangen, dass DevOps eher organisatorische Veränderungen als einfache Prozessänderungen erfordert. Die Unternehmenskultur muss sich ändern, um DevOps zu ermöglichen.
DevOps und agile Prinzipien entstanden als Reaktion auf Kritik an den traditionellen Wasserfallmethoden für die Softwareentwicklung, insbesondere daran, dass die Wasserfallentwicklung Innovationen verlangsamt und zu organisatorischen Hindernissen und Engpässen führt. In einem Wasserfallsystem werden Codeanforderungen auf Funktionalität, Effizienz, Standardisierung und Dokumentation getestet, bevor diese in eine Anwendung integriert werden. Das Testen dieser Aspekte im Voraus kann zu einer langen Prozesswarteschlange führen, durch die es schwieriger wird, Projekte pünktlich und ohne Überschreitungen des Umfangs und Budgets auszuführen. Dies gilt insbesondere dann, wenn Projekte unklar oder im Fluss sind.
DevOps hingegen verwendet Automatisierung und zyklische Prozesse, mit denen Entwicklungsteams Software schnell von der Entwicklung in die Produktion verschieben und dann dort die Software kontinuierlich verbessern können. DevOps erfordert eine engere Zusammenarbeit und Kommunikation in Teams durch Praktiken, die das Teilen von Fachwissen fördern. Mithilfe dieser Praktiken können Produktverbesserungen integriert und in Iterationen entwickelt werden, statt sie mit langsameren Release-Zeiten vorab auszuführen. Unternehmen, die DevOps implementieren, können ihre Software systematisch im Laufe der Zeit verbessern, sodass Teams sich an Änderungen anpassen und neue Ansätze auf eine Art und Weise ausprobieren können, die traditionelle Entwicklungsmodelle oftmals verhindern.
Was ist Platform Engineering?
Platform Engineering erweitert DevOps-Praktiken, indem es standardisierte Tools, Services und Workflows zur Verfügung stellt, mit denen Entwicklungsteams Softwarelösungen effizienter entwickeln können. Platform Engineering ist ein neuerer Begriff, der die Organisation interner Services und Ressourcen beschreibt. So können Entwicklungsteams Lösungen entwickeln, ohne die zugrunde liegenden Elemente direkt verwalten zu müssen. Platform Engineers kuratieren und verwalten die verschiedenen Tools, Services und Dokumentationen, die Entwicklungsteams benötigen, sodass die gesamte IT-Organisation ihre Arbeit effizienter erledigen kann. Dabei können sie automatisierte Prozesse verwenden, die als Golden Paths bezeichnet werden, und sind nicht völlig auf sich allein gestellt. Mit der Verbreitung von DevOps wird auch Platform Engineering häufiger angewendet, da es die zugrunde liegenden Komponenten zur Unterstützung von DevOps-Workflows bietet und ihre Skalierung in Unternehmen unterstützt.
In einem Self Service-Modell werden Entwicklungsteams mit verschiedenen Technologien überflutet, die sie für ihre täglichen Aufgaben benötigen. Mit diesen Toolsets umzugehen, kann anstrengend sein, die Effizienz mindern und die kognitive Belastung von Teams steigern. Weiterhin kann das effiziente Onboarding von Teammitgliedern zu einer Herausforderung werden, wenn Neuzugänge viele Tools und Systeme erlernen müssen, erfahrene Teammitglieder diese dabei unterstützen und deshalb von ihren eigentlichen Aufgaben abgehalten werden und so die Produktivität verlorengeht. Platform Engineering zielt darauf ab, DevOps-Workflows zu unterstützen, indem es diese Probleme mindert. So bleibt der IT-Organisation mehr Zeit für Innovation, während Platform Engineers die Best Practices und das Self Service-Erlebnis für sie zentralisieren.
Backstage with Platform Engineering. Dauer des Videos: 2:31
Die Vorteile von Platform Engineering und DevOps
Platform Engineering hilft bei der Skalierung von DevOps, da DevOps-Teams nicht mehr alles selbst erledigen müssen. Platform Engineering hilft dabei, eine Reihe standardisierter Tools, Expertise, Services und Prozesse zu etablieren, die für viele Entwicklungsteams im Unternehmen hilfreich sind. Kuratierte Plattformen ermöglichen Entwicklungsteams das Entwickeln, Bereitstellen, Besitzen und Unterstützen ihrer Komponenten, während das Plattformteam die Komponenten der Plattform entwickelt, bereitstellt, besitzt und unterstützt. So können beide Teams sich auf ihre Aufgaben konzentrieren und die Bereitstellung beschleunigen. Plattformteams bieten X as a Service an, sodass DevOps-Teams nicht alles ad hoc erstellen müssen.
Wenn Plattformteams Komponenten für Entwicklungsteams bereitstellen, könnte der Eindruck entstehen, dass Platform Engineering zu denselben Problemen und internen Abhängigkeiten führen könnte, die DevOps ursprünglich zu verringern versuchte. Führt es nicht zu Engpässen, wenn das Anwendungsteam darauf warten muss, dass das Plattformteam benötigte Komponenten zur Verfügung stellt?
Das kann zwar theoretisch möglich sein, aber Plattformteams können auch zu einer Reduzierung von Redundanz und wiederholtem Aufwand beitragen und so das Verschwenden von Zeit im gesamten Unternehmen mindern. Mehrere Entwicklungsteams können eine Self Service-Plattform verwenden, sodass nicht jedes einzelne Team seine eigene Plattform mit derselben Funktionalität entwickeln muss. Das sorgt im Laufe der Zeit für mehr Konsistenz, sogar dann, wenn das bestehende Entwicklungsteam keine Verantwortung mehr für das aktuelle Projekt trägt. Außerdem behandeln diese Plattformteams die Entwicklungsteams wie Kunden und haben eine hohe Motivation, schnell zu liefern, da sie wissen, dass diese internen Kunden eine andere Art von Infrastruktur- oder Deployment-Mechanismus verwenden, falls sie ihre Anforderungen nicht erfüllen. Best Practices und etablierte Lösungen können zur Plattform beigetragen werden, wodurch Teams ihr Wissen effektiver miteinander teilen können.
Welche Rolle spielt Site Reliability Engineering?
Wenn Sie Site Reliability Engineering (SRE) kennen, kommt Ihnen Platform Engineering vermutlich bekannt vor. Der Begriff „SRE“ wurde in der Branche von Google geprägt und beschreibt Systeme, die Produkte mithilfe von Automatisierung ausführen. Diese stellen eine Alternative zur manuellen Arbeit dar, die traditionell von Systemadministratoren ausgeführt wurde. SRE kümmert sich um die zugrunde liegende Infrastruktur, und SRE-Teams entwickeln Prozesse und Automatisierung, um die Integrität der Infrastruktur und die Verfügbarkeit sicherzustellen. SRE-Teams und Platform Engineers haben gleiche Ziele, aber während sich SRE auf die Performance, Zuverlässigkeit und Skalierung von Software konzentriert, konzentriert sich das Platform Engineering auf Systeme, die darauf abzielen, das Entwicklungserlebnis zu verbessern.
Use Cases für Platform Engineering und DevOps
Teams verwenden Platform Engineering häufig dazu, ihre eigenen internen Entwicklungsplattformen (IDPs), Tools, Services und Dokumentationen in einem Self Service-Portal zu erstellen. Platform Engineers können eine IDP entwickeln und bereitstellen, die auf den Anforderungen von Nutzenden und Best Practices basiert, und sie mithilfe von Nutzerforschung und Tests wiederholt verbessern. Da Entwicklungsteams ihre Zielnutzenden sind, können Platform Engineers IDPs bereitstellen, die Self Service für Entwicklerinnen und Entwicklern ermöglichen und ihre kognitive Belastung reduzieren.
Organisationen, die CI/CD (Continuous Integration/Continuous Delivery) in ihrem Softwareentwicklungs-Lifecycle etablieren wollen, müssen DevOps-Praktiken einführen. CI/CD automatisiert das Entwickeln und Testen von Code, wodurch die Auswirkung von Bugs und fehlerhaftem Code minimiert wird, da der Softwareentwicklungs- und -Aktualisierungs-Lifecycle kontinuierlich integriert wird. Durch die Integration und Automatisierung von CI/CD-Pipelines im gesamten Softwareentwicklungs-Lifecycle erhalten Unternehmen die notwendige Transparenz für die Entwicklung hochwertiger Plattformen und die schnellere Bereitstellung von Anwendungen.
Was sind die Unterschiede zwischen Platform Engineering- und DevOps-Rollen?
DevOps und Platform Engineering sind unterschiedliche, aber sich ergänzende Ansätze zur Optimierung von Softwareentwicklung und -Deployment. Obwohl beide darauf abzielen, die Release-Geschwindigkeit bei gleichbleibender Systemstabilität zu erhöhen, unterscheiden sie sich erheblich in ihrer Ausführung. DevOps steht für eine Kultur und Methodik der Zusammenarbeit. Platform Engineering ist eine produktorientierte Disziplin, die die grundlegenden Tools entwickelt, mit denen diese Kultur im gesamten Unternehmen skaliert werden kann.
Innerhalb dieses IT-Ökosystems konzentriert sich ein DevOps Engineer darauf, die traditionelle Lücke zwischen Entwicklungsteams und IT-Operations-Teams zu schließen. Seine Hauptaufgabe ist die Automatisierung von Build-, Test- und Deployment-Prozessen durch das Design und die Verwaltung von CI/CD-Pipelines. Um die Konsistenz zwischen verschiedenen Umgebungen sicherzustellen, wird häufig Infrastructure as Code eingesetzt, um Infrastruktur und Plattformen automatisch bereitzustellen, anstatt Server manuell zu konfigurieren. Diese Rolle erfordert eine Denkweise der kontinuierlichen Verbesserung, bei der die Deployment Pipelines kontinuierlich auf Engpässe analysiert werden. Darüber hinaus arbeiten DevOps Engineers häufig eng mit einem Site Reliability Engineer zusammen, um das schnelle Tempo von Feature Releases mit strengen Zielen hinsichtlich Systemverfügbarkeit und -zuverlässigkeit in Einklang zu bringen.
Platform Engineers betrachten die Infrastruktur mit dem Schwerpunkt auf dem Produkt und möchten die kognitive Belastung von Softwareentwicklungsteams reduzieren, wenn Cloud-Umgebungen zunehmend komplexer werden. Die zentrale Aufgabe von Platform Engineers ist die Entwicklung und Wartung einer internen Entwicklungsplattform (Internal Developer Platform, IDP), die als Self Service-Portal dient, auf dem Entwicklungsteams Umgebungen, Datenbanken und Pipelines unabhängig provisionieren können. Dazu standardisieren sie Systemzugriffskontrollen und Sicherheits-Compliance in den Plattformvorlagen. Platform Engineers transformieren allgemeine Blueprints in wiederverwendbare Golden Paths, die die zugrunde liegenden Komplexitäten von Cloud-Netzwerken und Container-Orchestrierung abstrahieren, sodass sich die Entwicklungsteams ganz auf das Schreiben des Anwendungscodes konzentrieren können.
Sicherheit, Compliance und Risikomanagement
In Unternehmensumgebungen müssen Sicherheit und Compliance direkt in die täglichen Deployment-Praktiken integriert werden. Bei traditionellen DevOps-Modellen geht es oftmals um eine „Shift Left“-Philosophie, also um das Erreichen von Sicherheit durch automatisierte Tests und kontinuierliche Integration in der Entwicklungsphase. Dadurch kann die kognitive Belastung von Entwicklungsteams aber drastisch ansteigen. Um diese Belastung zu mindern, können Platform Engineering-Teams von Anfang an konforme und sichere Plattformen entwerfen.
Beim Platform Engineering werden Sicherheits- und Compliance-Richtlinien in Automatisierungstools und standardisierte CI/CD-Praktiken integriert, wodurch die regulatorische Komplexität wegabstrahiert wird. Dieser Ansatz sorgt dafür, dass Entwicklungsteams eine sichere und skalierbare Infrastruktur nutzen können, ohne selbst Compliance-Fachleute sein zu müssen.
Darüber hinaus erfordert die Integration eines robusten Risikomanagements in verschiedenen Cloud-Plattformen einen einheitlichen Ansatz für Infrastructure as Code und Containerisierung. DevOps-Teams nutzen diese Methoden, um die Softwarebereitstellung zu beschleunigen, während Platform Engineers die zugrunde liegenden governancegestützten Systeme verwalten. Diese Zusammenarbeit stellt sicher, dass Abweichungen von den organisatorischen Anforderungen sofort erkannt werden. Indem die Verantwortung für die Entwicklung skalierbarer und sicherer Systeme auf eine zentralisierte Plattformstrategie verlagert wird, können Unternehmen ihre Release-Geschwindigkeit erhöhen und gleichzeitig regulatorische und operative Risiken unter Kontrolle halten.
Wie Red Hat helfen kann
Die Produkte und Services von Red Hat® unterstützen gemeinsam die Entwicklungsproduktivität und bieten Unternehmen die nötige Flexibilität, um die Teamproduktivität zu erhöhen und gleichzeitig Self Service zu steigern, das Onboarding zu beschleunigen und sich wiederholende Aufgaben in verschiedenen Teams zu reduzieren.
Red Hat Developer Hub ist ein internes Entwicklungsportal für Unternehmen, das auf dem CNCF-Projekt (Cloud Native Computing Foundation) „Backstage“ basiert. Red Hat Developer Hub unterstützt Unternehmen bei der Konsolidierung ihrer Technologieentscheidungen, verbessert Self Service und Onboarding und steigert die Produktivität. Mit Red Hat Developer Hub haben Unternehmen Zugang zu einem internen Entwicklungsportal, in dem sie Elemente des Entwicklungsprozesses konsolidieren, Workflows optimieren und interne Zusammenarbeit fördern können.
In Verbindung mit Red Hat Developer Hub bietet Red Hat OpenShift® Entwicklungsteams die Möglichkeit, die vertrauten Tools für eine Vielzahl von Anwendungen zu nutzen, darunter cloudnative, modernisierte und Legacy-Anwendungen, und zwar ortsunabhängig – On-Premise, in der Cloud oder am Edge.