Was sind Platform Engineering-Tools?
Mit Platform Engineering-Tools können (interne und externe) Entwicklungsteams ihre Produktivität verbessern, indem sie mithilfe eines Self Service-Ansatzes Zugriff auf die erforderlichen Ressourcen erhalten, wenn sie diese benötigen. Platform Engineering-Tools unterstützen Funktionen wie CI/CD (Continuous Integration/Continuous Delivery oder Deployment), IaC (Infrastructure as Code), Containerisierung, Beobachtbarkeit, Sicherheit, Self Service für Entwicklungsteams und vieles mehr.
Ein Platform Engineering-Team (manchmal auch einfach als „Platform Team“ bezeichnet) ist für die Unterstützung eines Entwicklungsportals zuständig, das Self Service-Zugriff auf Ressourcen, Dokumentation und Tools bietet, die Entwicklerinnen und Entwickler für die Interaktion mit verschiedenen Services und APIs benötigen. Darüber hinaus können Platform Teams eine interne Entwicklungsplattform (Internal Development Platform, IDP) verwalten, die Entwicklungsteams als zugrunde liegende Infrastruktur für das Entwickeln, Bereitstellen und Verwalten ihrer Anwendungen dient.
Obwohl sie miteinander verwandt sind, gehören Platform Engineering-Technologien nicht zur gleichen Kategorie wie Entwicklungstools. Platform Engineering-Technologien und die Plattform selbst, die IDP, sorgen für konsistente Prozesse, damit Entwicklerinnen und Entwickler ihre Aufgaben effizient ausführen können. Entwicklungstools basieren auf dieser Grundlage und bieten Entwicklungsteams die Möglichkeit, ihr IDP-Erlebnis zu erweitern und spezifische Projekte zu realisieren.
Im Folgenden befassen wir uns eingehend mit den Zielen, die mit dem Platform Engineering erreicht werden sollen, und mit den Technologien und Services, die zur Unterstützung dieser Ziele verfügbar sind.
Welche Ziele werden beim Platform Engineering verfolgt?
Platform Engineering hat zum Ziel, die enorme Menge an vorhandenen Technologien im cloudnativen Zeitalter zu strukturieren. Platform Engineers entwerfen und erstellen Toolchains und Workflows, um Self Service-Funktionen für Software Engineering-Unternehmen zu ermöglichen. Entwicklungsteams können innerhalb weniger Minuten auf die benötigten Ressourcen zugreifen und haben die Gewissheit, dass die bereitgestellten Lösungen intern unterstützt werden, beobachtbar sind und den Sicherheitspraktiken ihres Unternehmens entsprechen.
Platform Engineering ist ein multidisziplinärer Ansatz, der Arbeitskultur, Geschäftsabläufe, Teamzusammenarbeit und vieles mehr für eine effizientere Softwareentwicklung miteinander verbindet. Es berücksichtigt die kognitive Belastung von Softwareentwicklungsteams und versucht, Problembereiche zu identifizieren und zu beheben.
Wie sieht das in der Praxis aus? Plattform Engineers stellen eine Sammlung von Inhalten, Tools, Dokumentationen, Vorlagen und Workflows zusammen, die Flexibilität bieten und gleichzeitig die Konsistenz im Unternehmen aufrechterhalten. Sie stellen allgemeine, wiederverwendbare Tools und Funktionen bereit, damit Entwicklungsteams effektiv arbeiten können und die Entwicklungsproduktivität gefördert wird.
Was ist eine interne Entwicklungsplattform (IDP)?
Eine IDP ist ein standardisiertes Set von Self Service-Tools und -Technologien, die Entwicklerinnen und Entwickler für das Erstellen und Bereitstellen von Code nutzen können. Durch das Konsolidieren und Vereinfachen von Elementen des Entwicklungsprozesses können IDPs die täglichen Aufgaben eines Entwicklungsteams überschaubarer, effizienter und kooperativer gestalten.
IDPs sind das Ergebnis von Entscheidungen, die beim Platform Engineering getroffen wurden. Eine IDP ist eine Basis, die aus Self Service-APIs, Tools, Services, Know-how und Support besteht, die zu einem überzeugenden internen Produkt kombiniert werden. Während Entwicklungsteams die primären Nutzenden einer IDP sind, übernehmen Platform Engineers die anfängliche Konfiguration, die Wartung und den Support. So lässt sich sicherstellen, dass das gesamte Unternehmen einheitliche Technologien und Ressourcen verwendet, unabhängig davon, wer diese in der Vergangenheit entwickelt hat. Mit der Bereitstellung einer IDP lassen sich Best Practices für DevOps umsetzen und aufrechterhalten, die eine effizientere Arbeitsbeziehung zwischen Entwicklungs- und Operations-Teams fördern.
Die Begriffe „internes Entwicklungsportal“ und „interne Entwicklungsplattform“ werden manchmal verwechselt. Der Unterschied besteht darin, dass ein Entwicklungsportal als Frontend für eine interne Entwicklungsplattform dienen kann, die eine Anwendungsplattform für funktionale Tiefe und Skalierbarkeit hinzufügt.
Eines der bekanntesten Open Source-Projekte für Entwicklungsplattformen ist Backstage, das von Engineers bei Spotify entwickelt und später der Cloud Native Computing Foundation (CNCF) gespendet wurde. Backstage bildet die Basis von Red Hat® Developer Hub. Red Hat Developer Hub bietet ein unterstütztes und anspruchsvolles Framework für das Erstellen von Entwicklungsplattformen mit Integrationen und Support für Unternehmenskunden.
Was sind CI/CD-Tools?
CI/CD-Tools können ein Team dabei unterstützen, Entwicklung, Deployment und Tests zu automatisieren. Einige Tools unterstützen speziell die Integration (CI), andere verwalten die Entwicklung und das Deployment (CD), andere wiederum kontinuierliches Testen oder ähnliche Funktionen. Viele dieser Tools können im Rahmen eines Platform Engineering-Ansatzes in eine IDP integriert werden.
Es gibt eine Vielzahl bekannter Open Source-Tools für CI/CD, und diese Liste ist nicht vollständig.
- Argo CD ist ein deklaratives CD-Tool für Kubernetes, das sich an GitOps-Praktiken orientiert. Es lässt sich als Standalone-Tool oder als Teil eines CI/CD-Workflows einsetzen, um Clustern die erforderlichen Ressourcen bereitzustellen.
- Red Hat OpenShift® GitOps baut auf einer Basis von Argo CD auf.
- Tekton ist ein CI/CD-Framework für Kubernetes-Plattformen, das ein cloudnatives CI/CD-Standarderlebnis mit Containern ermöglicht.
- Red Hat OpenShift Pipelines basiert auf dem Tekton-Framework.
- Jenkins ist ein Automatisierungstool, das CI- und CD-Prozesse in kleinem und großem Umfang unterstützen kann.
- Spinnaker ist eine CD-Plattform, die für Multi Cloud-Umgebungen entwickelt wurde.
- GoCD ist ein CI/CD-Server mit Schwerpunkt auf Modellierung und Visualisierung.
- Concourse ist ein Automatisierungstool, das sich für kontinuierliche Prozesse eignet.
- Screwdriver ist eine für CD konzipierte Build-Plattform.
Teams können auch gemanagte CI/CD-Tools in Betracht ziehen, die von verschiedenen Anbietern erhältlich sind. Die richtige Wahl von CI/CD-Tools kann Teams beim Automatisieren, Erstellen, Testen und Bereitstellen einer Anwendung auf verschiedenen Plattformen unterstützen.
Was sind IaC-Tools (Infrastructure as Code)?
IaC ist ein Ansatz für das Infrastrukturmanagement. So können Administrationsteams die Verwaltung und Provisionierung der Infrastruktur, einschließlich Server und virtuelle Maschinen, automatisieren. Diese Unterstützung einer automatisierten Infrastruktur mit Self Service-Funktionen steht im Einklang mit den Zielen von Platform Engineering.
Mit IaC zu arbeiten bedeutet, Konfigurationsdateien zu verwenden, um die Spezifikationen Ihrer Infrastruktur zu definieren. So lassen sich Umgebungen einfacher konsistent provisionieren. Mit IAC können Konfigurationen innerhalb eines Unternehmens bearbeitet und verteilt werden, und undokumentierte Ad-hoc-Änderungen werden verhindert.
IaC stützt sich auf Serverautomatisierung und Konfigurationsmanagementtools. Zu den gängigen IT-Automatisierungstools, die mit dem IaC-Ansatz konform sind, gehören Red Hat Ansible® Automation Platform, Terraform, Chef, Puppet und Salt.
Was sind Container-Tools und Kubernetes?
Container-Tools sind wichtige Komponenten bei der Arbeit eines Platform Engineers.
Container verpacken und isolieren Anwendungen mit ihrer gesamten Runtime-Umgebung – einschließlich sämtlicher für die Ausführung erforderlicher Dateien. Infolgedessen werden containerisierte Anwendungen konsistent ausgeführt, unabhängig von ihrem Bereitstellungsort, in unterschiedlichen Umgebungen und Infrastrukturen. Container sind die Basis für die cloudnative Entwicklung, eine Methode, bei der große Anwendungen in kleine, unabhängige und lose gekoppelte Microservices unterteilt werden.
Es gibt eine Vielzahl von Open Source-Tools, die die Arbeit mit Containern erleichtern. Zum Erstellen und Bereitstellen von Containern können Entwicklungsteams Tools wie Docker und Podman verwenden, die beide die Standards der Open Container Initiative (OCI) unterstützen.
Zur Verwaltung von Containern in großem Umfang verlassen sich Operations-Teams auf Container-Orchestrierungsplattformen wie das Open Source-Projekt Kubernetes. Bei der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern während ihres gesamten Lifecycles automatisiert.
Kubernetes-Plattformen sind über eine Vielzahl verschiedener Anbieter verfügbar. Red Hat OpenShift ist eine Anwendungsplattform für Unternehmen, die auf Basis von Kubernetes entwickelt wurde. Platform Engineers können Red Hat OpenShift in eine IDP wie Red Hat OpenShift Developer Hub integrieren, um eine Entwicklungsplattform bereitzustellen.
Was sind Beobachtbarkeitstools?
Überwachung und Beobachtbarkeit sind für Platform Engineering wichtig, da Teams so Ausgaben, Protokolle und Performance-Metriken untersuchen können, um den Zustand eines Systems oder einer Anwendung besser zu verstehen. Dank dieser Transparenz können Entwicklungs- und Administrationsteams die Zuverlässigkeit, Performance und Sicherheit komplexer Anwendungen und Infrastrukturen verbessern.
Beobachtbarkeit erweitert das Konzept der Überwachung um die Identifizierung zentraler Problemursachen sowie um Prognosen und Vorhersagen. Es gibt viele verschiedene Beobachtbarkeitstools und -technologien, und Teams können ihre eigenen Beobachtungssysteme entsprechend ihren Anforderungen einrichten.
Zu den Open Source-Tools, die häufig im Bereich der Beobachtbarkeit eingesetzt werden, gehören Grafana, Jaeger, OpenTelemetry und Prometheus. Red Hat OpenShift Observability bietet eine Reihe von Beobachtbarkeitstools, die für die Verwendung mit Red Hat OpenShift gemäß den OpenTelemetry-Standards entwickelt wurden.
Was sind Platform Engineering-Sicherheitstools?
Da dem Thema Sicherheit immer mehr Bedeutung beigemessen wird, verwendet die moderne Softwareentwicklung eine „Shift Left“-Strategie, um in den einzelnen Phasen des Softwareentwicklungs-Lifecycles (Software Development Lifecycle, SDLC) für Sicherheit zu sorgen. Anstatt einer letzten Überprüfung vor dem Deployment steht die Sicherheit nun am Anfang eines Projekts.
Platform Engineers unterstützen Entwicklungsteams bei der Einhaltung von Sicherheitsrichtlinien während des gesamten Softwareentwicklungs-Lifecycles. Zu diesen Schritten können automatisierte Prüfungen und Tests in der CI/CD-Pipeline gehören, die den Code schützen, Datenlecks verhindern, die Compliance mit Richtlinien erzwingen und die Qualitätssicherung gewährleisten.
Andere Platform Engineering-Sicherheitstools bieten Unterstützung beim Secrets-Management (Verwaltung von Passwörtern, Konfigurationsdateien von Clients, Zugangsdaten für Repositories usw.) und bei der API-Sicherheit, einschließlich des Managements von API-Schlüsseln.
Red Hat bietet eine Reihe von Tools und Services zur Unterstützung der Softwaresicherheit.
Red Hat Trusted Software Supply Chain vereint eine Suite von Lösungen, die dazu beitragen können, Schwachstellen zu reduzieren und Sicherheitsrichtlinien durchzusetzen, darunter Red Hat Trusted Profile Analyzer, Red Hat Trusted Application Pipeline und Red Hat Trusted Artifact Signer.
- Red Hat Trusted Profile Analyzer unterstützt Unternehmen bei der Verwaltung von SBOMs (Software Bill of Materials) und referenziert CVEs und Sicherheitshinweise aus vertrauenswürdigen Quellen. Das Tool umfasst Technologie aus Open Source-Projekten wie Graph for Understanding Artifact Composition (GUAC), Trustification und Exhort.
- Red Hat Trusted Application Pipeline validiert die Signaturen, den Ursprung und die Bescheinigungen von Artefakten, um Schwachstellen frühzeitig im Entwicklungsprozess zu erkennen.
- Red Hat Trusted Artifact Signer, das auf dem Sigstore-Projekt basiert, vereinfacht das kryptografische Signieren und Verifizieren von Softwareartefakten wie Container Images, Binärdateien und Dokumenten. Es enthält auch Technologie aus den Projekten Cosign und Fulcio und unterstützt die vollständige Integration mit anderen KMSs (Key Management Systems) wie Hashicorp Vault, Google/Azure und AWS KMS.
Bei Kubernetes-Deployments schützt Red Hat Advanced Cluster Security for Kubernetes containerisierte Workloads auf den verschiedenen Plattformen und unterstützt Teams dabei, Schwachstellen zu erkennen und zu beheben sowie Sicherheitsrichtlinien durchzusetzen.
Warum Red hat für Platform Engineering?
Platform Engineers finden bei Red Hat eine Vielzahl von Lösungen, die auf ihre Ziele abgestimmt sind. Die Produkte und Services von Red Hat sorgen gemeinsam für eine verbesserte Teamproduktivität, indem sie Self Service-Funktionen erweitern, das Onboarding beschleunigen und sich wiederholende Aufgaben reduzieren.
Red Hat OpenShift ist eine Anwendungsplattform für Unternehmen, mit der Entwicklungsteams die Tools verwenden können, auf die sie sich bei einer Vielzahl von Anwendungen verlassen, unabhängig vom Bereitstellungsort – On-Premise, in der Cloud oder am Edge.
Red Hat Developer Hub fördert die Effizienz und Zusammenarbeit während des gesamten Softwareentwicklungsprozesses. Das Portal bietet eine einheitliche und offene Plattform und reduziert gleichzeitig die kognitive Belastung und Frustration für das Entwicklungsteam. Mit Red Hat Developer Hub können Unternehmen IDPs nutzen, um Elemente des Entwicklungsprozesses zu konsolidieren, Workflows zu optimieren und die interne Zusammenarbeit zu fördern.
Mit Red Hat Trusted Software Supply Chain können Teams von Anfang an Sicherheit in die Komponenten, Prozesse und Praktiken ihrer Softwarefabrik integrieren.
Red Hat Developer Hub Lösungen für Unternehmen
Eine Open Source-Plattform für Unternehmen, die auf Backstage basiert und mit der Sie Portale erstellen können, auf denen die Elemente des Entwicklungsprozesses visuell konsolidiert werden.