Kernaspekte der Plattformimplementierung

Abgeschlossen

Plattform ist ein multidisziplinärer Ansatz, der Softwareentwicklung, Systemdesign und operative Exzellenz kombiniert, um eine zuverlässige und skalierbare Infrastruktur für das Erstellen und Bereitstellen von Anwendungen zu schaffen. Im Kern geht es nicht nur um das Erstellen robuster Plattformen, sondern darum, eine Self-Service-Umgebung zu schaffen, die Entwicklungsteams unterstützt und gleichzeitig die Ausrichtung mit den Geschäftszielen gewährleistet. Eine erfolgreiche Plattformentwicklungsinitiative beginnt mit dem richtigen Team und einem klaren Verständnis des Problembereichs. Dieses Grundgerüst ermöglicht die Entwicklung von Systemen, die Vorgänge optimieren, Reibung reduzieren und es Entwickelnden ermöglichen, sich auf das Erstellen von Anwendungen zu konzentrieren, anstatt die Infrastruktur zu verwalten.

Sobald das Team eingerichtet wurde, verschiebt sich der Fokus auf die Automatisierung von Bereichen mit hohem Aufwand und die Identifizierung manueller, sich wiederholender Aufgaben, die automatisiert werden können, um Zeit zu sparen und Fehler zu reduzieren. Anschließend ist ein Bestand vorhandener Ressourcen unerlässlich, sodass Teams Tools und Dienste zentralisieren können, wodurch sie einfacher verwaltet und skaliert werden können. Der nächste Schritt wird als Nutzen gepflasterter Pfade bezeichnet: das Erstellen von Standardworkflows und Umgebungen, die Konsistenz für alle Projekte gewährleisten. Danach hilft die Bereitstellung von Umgebungen als Dienst bei der weiteren Optimierung von Prozessen, sodass Teams Umgebungen bei Bedarf schnell ausweiten können. An diesem Punkt wird die Optimierung der Self-Service-Entwicklungserfahrungen zum Hauptziel, sodass Entwickelnde ihre Workflows unabhängig verwalten und gleichzeitig sicherstellen können, dass sie über die erforderlichen Tools und die Unterstützung für den Erfolg verfügen. Dieser Ansatz transformiert die Interaktion von Entwicklungsteams mit der Infrastruktur, wodurch eine agile, leistungsfähige Umgebung zum Erstellen und Bereitstellen von Anwendungen entsteht.

Diagramm der zu erledigenden Platformentwicklungsaufträge.

Neben einem klar definierten Implementierungsplan kann es hilfreich sein, die Plattformentwicklung nicht als einzelnes, breit gestecktes Konzept zu betrachten, sondern sie in vier Hauptbereiche zu unterteilen, um den Implementierungsprozess zu erleichtern:

  • Entwicklungssysteme mit den Tools und Diensten, die die Entwicklung ermöglichen, z. B. CI/CD, Paketverwaltung, cloudbasierte Programmierumgebungen, Codescanner und -linter sowie KI-Assistenten (Künstliche Intelligenz) wie GitHub Copilot.
  • Anwendungsplattform, eine kuratierte Auswahl von Diensten, die als Bausteine häufig verwendeter App-Stapel verwendet werden (z. B. Azure Policy, Azure Key Vault, Azure Container Apps oder Cosmos DB).
  • Anwendungsvorlagen, klar definierte, organisationsspezifische Vorlagen, um die Workloadbereitstellung zu vereinfachen und mit bewährten Methoden abzugleichen.
  • Self-Service-Funktionen für Entwickelnde, die Entwickelnden die autonome Verwaltung ihrer Workflows ermöglichen und gleichzeitig die Governance und Compliance mit organisatorischen Standards sicherstellen können.

Das Integrieren dieser Bereiche in Ihre Implementierungsstrategie reduziert Entwicklungsaufwand, fördert Innovation und schafft eine nahtlose Entwicklungsumgebung.

Diagramm der Implementierungsstrategie einschließlich Entwicklungssystemen, Anwendungsplattform, Anwendungsvorlagen und Self-Service-Funktionen für Entwickelnde.

Zusammenstellen eines Teams

In einer Plattformentwicklungsorganisation ist die Förderung der richtigen Kultur für den langfristigen Erfolg unerlässlich. Der Übergang von einer reaktiven zu einer proaktiven Kultur ist zentral. Dabei übernehmen Plattformteams die Verantwortung für das Erstellen und Verwalten von Tools, um die Organisation zu unterstützen. Diese Verschiebung ist entscheidend für die Verringerung von Wissenssilos und Betriebsunterbrechungen. Der Erfolg der Plattformentwicklungsbemühungen richtet sich an der im Funktionsmodell für die Plattformentwicklung beschriebene Investitionsfunktion aus, die den Übergang zwischen Phasen der organisatorischen Reife – von „vorläufig“ bis zu „optimiert“ betont. In der vorläufigen Phase erkennen Unternehmen die Notwendigkeit der Plattformentwicklung an, können jedoch keinen vollständigen Abgleich zwischen Führungs- und Entwicklungsteams erzielen. Wenn Organisationen ausgereifter werden, fördern Buy-In- und Kulturverschiebungen durch das Management eine kollaborativere, innovative Umgebung, in der Plattformteams in der Lage sind, sinnvolle Veränderungen voranzutreiben, sodass Organisationen effektiv skaliert werden können.

Ein Plattformentwicklungsteam erfordert eine Vielzahl von technischen Fähigkeiten und eine produktorientierte Denkweise, um zuverlässige, effiziente und sichere interne Entwicklungsplattformen zu erstellen und zu skalieren. Es wird erwartet, dass Plattformentwickelnde in mehreren wichtigen Bereichen wie Containerorchestrierung (z. B. Kubernetes), CI/CD-Pipelines (z. B. GitHub Actions, Azure-Pipelines) und Überwachungstools (z. B. Azure Monitor, Prometheus, Grafana) Erfahrung gesammelt haben. Fachkenntnisse in Infrastructure-as-Code-Tools (IaC) wie Terraform und Bicep sind für die Automatisierung der Infrastrukturbereitstellung von entscheidender Bedeutung. Darüber hinaus sollten Plattformentwickelnde mit dem Schreiben von Code in Skriptsprachen wie Python, PowerShell oder Bash vertraut sein, um Automatisierung und Integration über alle Systeme zu ermöglichen. Während der Talentpool für die Plattformentwicklung schwierig zu nutzen sein kann, sollte ein erfolgreiches Team Fachkenntnisse aus verschiedenen Hintergründen kombinieren, z. B. Softwareentwicklung, Sitezuverlässigkeits-Entwicklung (Site Reliability Engineering, SRE) und IT-Vorgänge.

Automatisieren arbeitsintensiver Bereiche

Die Automatisierung von Bereichen mit hohem Arbeitsaufwand stellt häufig den ersten eingerichteten Pfad dar, um Self-Service-Funktionen für die Entwicklung zu ermöglichen. Um dies zu implementieren, beginnen Sie mit der Identifizierung häufiger, fehleranfälliger oder arbeitsintensiver Prozesse, insbesondere derjenigen, die an manuelle oder Service Desk-Vorgänge gebunden sind. Bewerten Sie als Nächstes Faktoren wie Prozesshäufigkeit, Komplexität und Überprüfbarkeit, um Automatisierungsziele zu priorisieren. Die Implementierung von Infrastructure-as-Code (IaC) in Ihren CD-Pipelines (Continuous Delivery) optimiert nicht nur die Anwendungsbereitstellung, sondern ermöglicht auch die dynamische Bereitstellung gemeinsam genutzter Infrastruktur und Tools. Verwenden Sie flexible CI/CD-Plattformen wie GitHub Actions und Azure DevOps oder GitOps-Lösungen wie Flux und Argo CD, um Engpässe zu reduzieren und Teams zu unterstützen.

Im Lauf der Zeit erzeugt die Einführung des EaC-Musters (Everything-as-Code) ein sicheres und wiederholbares Automatisierungsframework, das zentrale Git-Repositorys für IaC-Vorlagen und -Konfigurationen (z. B. Bicep- und Azure Resource Manager-Vorlagen, Terraform-Manifestdateien und Helm-Charts) verwendet. Mit diesen Repositorys, die von einem Betriebsteam verwaltet werden, können Entwickelnde Pull Requests übermitteln, die vor dem Zusammenführen sicher überprüft und überwacht werden. Die gleichen CI/CD-Tools können dann jede Infrastruktur, Tools oder Dienste bereitstellen und konfigurieren, unabhängig davon, ob anwendungsspezifisch oder in mehreren Bereichen genutzt. Dieser Ansatz unterstützt Skalierbarkeit, Self-Service in der Entwicklung und nahtlose Integration in Governanceprozesse, um sicherzustellen, dass die Plattformentwicklung mit den Organisationszielen übereinstimmt und gleichzeitig die betriebliche Flexibilität fördert.

Beim Ansatz „Everything-as-Code“ wird nahezu jede Ressource oder jeden Prozess als Datei in einem sicheren Git-Repository verwaltet. Die robusten Sicherheitsfeatures von Git, z. B. Commitverlauf, Zugriffssteuerungen, Pull Requests und Branchschutz, sorgen für Transparenz, ermöglichen gemeinsame Überprüfungen und erzwingen automatisierte Prüfungen, bevor Änderungen integriert werden. In Kombination mit CI/CD-Systemen schafft dies ein vielseitiges, überprüfbares und sicheres Framework für die Verwaltung von Infrastruktur, Tools und Prozessen.

Inventarisieren und Zentralisieren

Wenn Organisationen wachsen, werden das Volumen und die Komplexität ihrer technischen Ressourcen umfassender, was häufig zu Duplizierungen, verwaisten Projekten und verschwendeten Ressourcen führt. Die Zentrale Bestands- und Ressourcenverfolgung ist ein wichtiger Schritt in der Plattformentwicklung, um diese Herausforderungen zu bewältigen. Mit einem Bestandssystem können Teams Ressourcen wie Code, APIs, Container, virtuelle Computer (VMs), Berechtigungen und vieles mehr nachverfolgen und verwalten. Dieser Prozess verbessert nicht nur die Governance, sondern fördert auch die Wiederverwendung und verbessert die Erkennbarkeit, sodass Teams effizienter und effektiver arbeiten können.

Zentrale Inventare spielen eine wichtige Rolle bei der Verbesserung der Governance durch Kategorisieren und Organisieren von Ressourcen. Durch die ordnungsgemäße Markierung wird sichergestellt, dass Ressourcen ihren jeweiligen Besitzenden oder Teams zugeordnet sind, wodurch es einfacher ist, den Lebenszyklus zu verwalten und die potenziellen Auswirkungen von Änderungen zu verstehen. Die verbesserte Erkennbarkeit ist ein weiterer wichtiger Vorteil, da dadurch die technische Ausdehnung reduziert wird, indem Teams dabei helfen, vorhandene Ressourcen zu finden und wiederzuverwenden, wodurch unnötige Duplizierungen vermieden werden. Darüber hinaus hilft die Zentralisierung von Inventaren Organisationen dabei, Ressourcen zu optimieren, indem veraltete oder unnötige Ressourcen identifiziert und bereinigt werden, was zu reduzierten Abfällen und höheren Kosteneinsparungen führt.

Verschiedene Tools unterstützen die Bestands- und Ressourcenverfolgung, die jeweils für verschiedene Aspekte des technischen Ökosystems verwendet werden. Beispielsweise bietet Azure Deployment Environments (ADE) eine Möglichkeit, komplexe Infrastruktur, die über Infrastructure-as-Code (IaC) erstellt wurde, nachzuverfolgen. Ebenso ermöglicht Azure API Center Entwickelnden, APIs effizient zu ermitteln und zu verwalten. Paketregistrierungen wie GitHub Packages oder Azure Artifacts bieten zusätzlichen Nutzen, indem die Sicherheit der Lieferkette verbessert und genehmigte Pakete und SDKs verwaltet werden.

Um die Vorteile von Bestandssystemen weiter zu verbessern, können Organisationen relationale Verbindungen zwischen Objekten herstellen, um eine umfassendere Ansicht ihres Ökosystems zu schaffen. Beispielsweise ermöglicht das Zuordnen der Beziehungen zwischen einer API-Definition, ihrem Coderepository, den zugehörigen Umgebungen und Governancerichtlinien Teams das Verwalten von Ressourcen mit größerer Genauigkeit.

Geebnete Wege bahnen

In der Plattformentwicklung vermittelt die Analogie der gepflasterten Pfade ein Gleichgewicht zwischen der Förderung von Innovation und der Bereitstellung standardisierter Anleitungen. Zunächst können Teams verschiedene, informelle Wege ergreifen, um ihre Ziele zu erreichen, indem sie mit verschiedenen Tools und Workflows experimentieren. Im Lauf der Zeit erkennen Plattformteams die effektivsten und weit verbreiteten Ansätze und wandeln sie in gepflasterte Pfadeum: optimierte Workflows, die effizient und benutzerfreundlich sind und Teams überzeugen, sie zu übernehmen.

Dieser Prozess, der häufig als Nutzen gepflasterter Pfade bezeichnet wird, umfasst die Identifizierung allgemeiner Muster in Teamworkflows und die Umwandlung in standardisierte, skalierbare Lösungen. Diese Pfade integrieren nahtlos Sicherheit, architekturbezogene bewährte Methoden und Complianceanforderungen und bieten dadurch eine reibungslose und zuverlässige Erfahrung. Entwickelnde profitieren von reduzierter kognitiver Belastung, konsistenten APIs für die Integration, modulare Funktionen, die nach Bedarf kombiniert werden können, und vorhersehbare Leistung, die sich an betrieblichen Zielen orientiert.

Das Funktionsmodell für die Plattformentwicklung spielt eine zentrale Rolle in diesem Prozess und hilft Organisationen dabei, zu bestimmen, wann sie von informellen Pfaden zu gepflasterten Pfaden wechseln sollen. Es identifiziert Bereiche, die Standardisierung erfordern, und bietet Erkenntnisse aus der effektiven Skalierung dieser Praktiken. Dieser strukturierte Ansatz sorgt dafür, dass Innovation nicht erstickt wird und gleichzeitig der Fokus auf Qualität, Compliance und Leistung liegt.

Der Ansatz des Nutzens gepflasterter Pfade fördert bewährte Methoden, ohne übermäßig präskriptiv zu sein. Er unterstützt Communitybeiträge und ermöglicht es Teams, die Plattform zusammen zu gestalten und gleichzeitig Flexibilität für besondere Anwendungsfälle beizubehalten. Durch die Balance zwischen Innovation und Standardisierung fördert diese Methodik eine Umgebung, in der Teams herausragen können, und stellt gleichzeitig sicher, dass organisationsweite Anforderungen konsistent erfüllt werden.

Diagramm des genutzten gepflasterten Pfads mit nicht unterstützter CI und CD.

Diagramm des genutzten gepflasterten Pfads mit veralteter CI und CD.

Bereitstellen von Umgebungen „as-a-Service“

Die Bereitstellung von Umgebungen als Dienst soll eine sichere, standardisierte und automatisierte Bereitstellung von Infrastrukturen ermöglichen. Ein Kernprinzip in diesem Ansatz besteht darin, Bereitstellungsidentitäten und Geheimnisse so beizubehalten, dass Entwickelnde nicht direkt darauf zugreifen können. Dies erzwingt Governance und stellt sicher, dass Infrastrukturupdates sicher bleiben. Beispiel: Azure Deployment Environments (ADE) veranschaulicht dieses Modell, indem die Rollentrennung unterstützt und die Verwaltung von IaC-Vorlagen zentralisiert wird.

Mit ADE erstellen Plattformentwickelnde und Operationsteams gemeinsam einen Katalog von Vorlagen für bestimmte Umgebungstypen und verwalten sie. Diese Vorlagen sind mit vorkonfigurierten Einstellungen erweitert, integrieren verwaltete Identitäten und steuern den Zugriff basierend auf Rollen. Entwickelnde können dann CI/CD-Pipelines verwenden, um Infrastruktur über Tools wie die Azure CLI oder die Azure Developer CLI bereitzustellen, ohne direkten Zugriff auf vertrauliche Anmeldeinformationen oder das zugrunde liegende Abonnement zu benötigen. Diese Trennung sorgt für Compliance und Sicherheit, während die Produktivität der Entwickelnden erhalten bleibt.

Diagramm des Plattformentwicklungs-Workflows mit Dev Center-Katalog, Umgebungstypzuordnungen, Portal und automatisierten Bereitstellungspipelines.

Auch wenn ADE nicht verwendet wird, können die gleichen Prinzipien breiter angewendet werden, wobei Infrastructure-as-Code-Inhalte (IaC) von sicheren, unveränderlichen Speicherorten und der Geheimnisverwaltung automatisiert und isoliert empfangen werden. Durch diese Praktiken ermöglicht die Plattformentwicklung Teams die Bereitstellung konsistenter Umgebungen und gleichzeitig die Aufrechterhaltung der Organisationsführung und der betrieblichen Effizienz.

Optimieren der Self-Service-Entwicklungsoberfläche

Eine nahtlose Self-Service-Entwicklungsoberfläche ist entscheidend für den Erfolg der Plattformentwicklung, aber dies erfordert häufig, den Benutzenden entgegen zu kommen. Jede Rolle – Entwickelnde, Vorgänge und andere – bezieht sich auf bestimmte Tools und Umgebungen, die die entsprechenden Workflows definieren. Damit neue Umgebungen eingeführt werden, müssen sie an diesen bereits bestehenden Zentren ausgerichtet werden. Ein pragmatischer Ansatz umfasst die Planung mehrerer Benutzeroberflächen, die auf die bereits verwendeten Tools zugeschnitten sind, sodass Teams mit einfachen Verbesserungen beginnen, ihren Wert beweisen und sich bei Bedarf zu anspruchsvolleren Lösungen weiterentwickeln können.

Anstatt völlig neue Umgebungen zu erstellen, sollten Sie vorhandene Tools verbessern und integrieren. Plattformen wie Editoren, Integrierte Entwicklungsumgebungen (IDEs), DevOps-Suites, CLI-Tools und Umgebungen mit geringem Code verfügen häufig über Erweiterbarkeitsmodelle, die Anpassungen und Erweiterungen mit minimalem Aufwand ermöglichen. Dieser Ansatz reduziert die Wartung, wendet vertraute Benutzeroberflächen an und beschleunigt die Einführung. Beispielsweise bieten webbasierte IDE-Erweiterungen wie solche für VS Code oder vscode.dev einen flexiblen, webkompatiblen Ausgangspunkt, der auf lokale Entwicklungsumgebungen skaliert werden kann. Ebenso bieten ChatOps-Schnittstellen in Tools wie Microsoft Teams oder Slack intuitive Möglichkeiten, Automatisierungsworkflows auszulösen und in CI/CD-Plattformen zu integrieren.

Für Organisationen, die eine zentrale Schnittstelle benötigen, kann das Investieren in ein benutzerdefiniertes Entwicklerportal langfristige Vorteile bieten, erfordert jedoch eine sorgfältige Planung und Ressourcen. Lösungen wie Backstage.io, ein Toolkit, das ursprünglich von Spotify entwickelt wurde, bieten hoch anpassbare Portale, die Plug-Ins und Tools von Drittanbietern integrieren können, wodurch ein dynamischer, entwicklungsorientierter Hub entsteht. Ganz gleich, ob Sie mit einfachen Lösungen wie Power Pages beginnen oder ein umfassendes Portal erstellen, besteht das Ziel in der Bereitstellung skalierbarer, benutzerfreundlicher Umgebungen, die Entwickelnden die Möglichkeit bieten, sich an die Anforderungen der Organisation anzupassen.