Platform Engineering im Vergleich zu DevOps
Sowohl Platform Engineering als auch DevOps sind IT-Praktiken, die mithilfe agiler Softwareentwicklungsmethoden die Release-Zeit verkürzen und Hindernisse bei der Entwicklung überwinden. 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. 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.
Was ist DevOps?
DevOps kombiniert die beiden Bereiche Entwicklung und IT-Operations miteinander und verwendet Tools und Prozesse, um Teams zusammenzubringen, 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 verlangsamen und zu organisatorischen Barrieren und Engpässen führe. 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 effizienter Softwarelösungen 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 ihrer Präsentation auf der Konferenz „DevOpsDays London“ nutzte Abby Bangser die Metapher des Kochens, um die Rolle zu beschreiben, die Platform Engineering in DevOps spielt. Wenn Sie Software (die Mahlzeit) „kochen“ und ein Tool (Pfanne) oder eine Zutat (Petersilie) benötigen, können Sie eine Anfrage einreichen, erhalten aber möglicherweise nicht genau das, was Sie benötigen. Die Personen, die für die Provisionierung verantwortlich sind, können eventuell nicht exakt die gewünschte Zutat zur Verfügung stellen oder haben keinen Zugriff auf das, was angefragt wurde. In einem DevOps-Modell können Sie diese Unzufriedenheit vermeiden, die aus dem Einreichen von Anfragen und der Abhängigkeit von der Provisionierung entsteht. Stattdessen müssten Sie die gewünschte Zutat oder das gewünschte Tool selbst erstellen. Um Bangsers Analogie zum Kochen aufzugreifen, wäre es so, als müssten Sie die Pfanne selbst aus Metall schmieden oder die Petersilie aus einem Samenkorn heranziehen, was schwierig und ineffizient wäre.
In diesem 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 haben IT-Organisationen mehr Zeit für Innovation, während Platform Engineers die Best Practices und das Self Service-Erlebnis für sie zentralisieren.
Backstage mit Platform Engineering Dauer des Videos: 2:31
Die Unterschiede zwischen Platform Engineering und DevOps
Platform Engineering hilft bei der Skalierung von DevOps, da DevOps-Teams nicht mehr alles alleine machen 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 bewältigen wollte. 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, kümmert sich das Platform Engineering um 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 von 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.
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. Red Hat Developer Hub bietet Unternehmen ein internes Entwicklungsportal, in dem sie Elemente des Entwicklungsprozesses konsolidieren, Workflows optimieren und interne Zusammenarbeit fördern können.
Mit Red Hat Developer Hub und Red Hat OpenShift® können Entwicklungsteams die gewünschten Tools für eine Vielzahl von Anwendungen nutzen, darunter cloudnative, modernisierte und Legacy-Anwendungen, und zwar ortsunabhängig – On-Premise, in der Cloud oder am Netzwerkrand.