carloscastilla - Fotolia
Die Vor- und Nachteile einer internen Entwicklerplattform
Internen Entwicklerplattformen können eine produktive und sichere Umgebung für Entwicklungsteams bieten. Sie haben allerdings auch einige Nachteile.
Unternehmen sind bestrebt, digitale Produkte durch rationalisierte Entwicklungsprozesse schneller bereitzustellen. Die schiere Anzahl von Infrastrukturentscheidungen, die mit komplexen Softwarearchitekturen auf Unternehmensebene verbunden sind, kann dieses Ziel jedoch zunichte machen.
Um dieses Problem zu umgehen, müssen Unternehmen den Entwicklungsteams die Last der operativen Entscheidungen abnehmen und es ihnen ermöglichen, sich auf die Erstellung von Prototypen und das Hinzufügen von Funktionen zu konzentrieren, anstatt sich um Skalierung und Ressourcenbereitstellung zu kümmern.
Die Antwort auf dieses Problem kann in einer internen Entwicklerplattform (Internal Developer Platform, IDP) liegen. Entwickler, die beispielsweise eine neue Staging-Umgebung für sichere Cloud-Anwendungen benötigen, können die vorab genehmigten Public-Cloud-Vorlagen einer IDP nutzen oder bei Bedarf eine Testumgebung einrichten, ohne die Betriebsseite zu belästigen.
Was ist eine interne Entwicklerplattform?
Eine interne Entwicklerplattform ist eine Sammlung von Self-Service-Tools und Diensten, mit denen Entwicklungsteams die Anwendungsinfrastruktur ohne direkte Unterstützung des Betriebsteams konfigurieren und bereitstellen können. Das bedeutet, dass Entwickler bei Bedarf eigenständig Umgebungen für Aufgaben wie automatisierte Tests und Bereitstellungen einrichten können.
Die Infrastruktur-, Entwicklungs-, Betriebs- und Automatisierungsanforderungen eines Unternehmens sind die Schlüsselkomponenten für die Erstellung einer praktikablen interne Entwicklerplattform. Um sicherzustellen, dass alles nach Plan läuft (und gleichzeitig die eigene Arbeitslast zu verringern), kann das Betriebsteam die Plattform so konfigurieren, dass sie mit den Governance- und Berechtigungsanforderungen übereinstimmt und ansonsten sich wiederholende Bereitstellungsaufgaben automatisiert werden.
Eine typische interne Entwicklerplattform unterstützt eine Reihe von Infrastruktur- und Hosting-Optionen, zum Beispiel die On-Premises-Bereitstellung, in einer Private Cloud oder einer Public Cloud. Darüber hinaus unterstützt eine Plattformmanagementebene die Betriebsteams bei der Erstellung und Verwaltung der internen Entwicklerplattform.
Eine weitere Ebene darüber befindet sich eine Sammlung von Diensten, Tools und Ressourcen, die von den Anwendungsentwicklungsteams genutzt werden. Die Serviceschicht wird über APIs oder eine Kombination aus Git-Repositories und YAML-Dateien zur Verfügung gestellt, so dass diese Services vollständig deklarativ und als Code definiert sind.
Schließlich erstellen die Plattformentwickler in der Kundenorganisation eine Schnittstelle für die interne Entwicklerplattform. In der Regel handelt es sich dabei um eine Befehlszeilenschnittstelle (CLI), die grundlegende Befehle zur Erstellung neuer Ressourcen unterstützt, die für die Ausführung der von ihnen erstellten Anwendungen benötigt werden. Mit zunehmender Verfeinerung des Prozesses können die Ingenieure eine Benutzeroberfläche um die CLI herum entwickeln.
Vorteile einer IDP
Eine interne Entwicklerplattform ist vor allem in großen Organisationen unverzichtbar, aber es muss eine faire Diskussion über ihre Vor- und Nachteile geführt werden. Führen Sie eine Kosten-Nutzen-Analyse durch, in der Sie den Aufwand für die Einrichtung und Verwaltung der Plattform und den daraus resultierenden Nutzen abwägen.
Im Folgenden finden Sie eine Liste der wichtigsten Vorteile einer internen Entwicklerplattform:
Fördert Automatisierung. Interne Entwicklerplattformen tragen dazu bei, die Komplexität der Automatisierung in Unternehmen zu verringern. Mühsame Prozesse, wie das Einrichten neuer Umgebungen und die Steuerung komplexer Bereitstellungen, werden durch Automatisierung einfacher.
Beschleunigt Release-Zyklen. Entwickler erhalten Zugang zu neuen Umgebungen und Bereitstellungs-Pipelines und können ihre eigenen Ressourcen im Self-Service-Verfahren bereitstellen. Diese Umgebungen werden vom Betriebsteam gepflegt, so dass sie bereits geprüft und für die Verwendung freigegeben sind. Dies führt zu schnellen, konsistenten und stabilen Release-Zyklen – produktionsbereite Bereitstellungsumgebungen werden innerhalb von Minuten erstellt, im Gegensatz zu einem tage- oder wochenlangen IT-Ticketing-Prozess, der sich hin und her bewegt.
Verbessert Integration. Eine interne Entwicklerplattform lässt sich effizient in die bestehenden Arbeitsabläufe und die Infrastruktur eines Unternehmens integrieren. Sie gleicht die Prioritäten von Entwicklungs- und Betriebsteams an und sorgt für mehr Eigenverantwortung bei jedem Schritt in der Pipeline.
Erhöht Self-Service. Ein Hauptvorteil einer internen Entwicklerplattform besteht darin, dass sie Entwicklern ein Self-Service-Erlebnis bietet – sie haben den gesamten Bereitstellungsprozess zu ihrer Verfügung. Entwickler können an einem Ort Ressourcen anfordern, Umgebungs-Builds steuern und die Bereitstellungsautomatisierung festlegen. Dadurch entfällt oder zumindest verringert sich die Notwendigkeit, Support-Tickets zu erstellen und tagelang zu warten, bis die beschäftigten Betriebsteams die Anfrage manuell bearbeitet haben.
Verbesserte Security. Während ein Entwicklungsteam vielleicht nicht übermäßig auf Sicherheit bedacht ist, kompensieren die Betriebsteams dies in der Regel als Gatekeeper und verhindern viele Releases aufgrund von Sicherheitsbedenken. Eine interne Entwicklerplattform gibt den Betriebsteams die Gewissheit, dass sie den Teil der Pipeline nach der Entwicklung gemäß ihren Sicherheitsstandards erstellt haben. Dies bedeutet, dass die Entwickler die Produktionsumgebungen nicht berühren und keine Änderungen vornehmen müssen, wodurch menschliche Fehler in Bezug auf die Sicherheit drastisch reduziert werden.
Gut definierte Projektgrenzen. Bei der Implementierung einer internen Entwicklerplattform in einem großen Unternehmen, in dem mehrere Entwicklungsteams zusammenarbeiten, sollten die verschiedenen Teams in der Lage sein, unabhängig voneinander an ihren Anwendungen oder Diensten zu arbeiten und sich dabei nicht gegenseitig zu behindern. Eine interne Entwicklerplattform hilft dabei, Grenzen in Form von eindeutigen Kubernetes-Cluster-Namensräumen und genehmigten Ressourcen für jedes Team zu setzen. So können Teams auf ihre eigenen Cluster und Workflows beschränkt werden und eine optimale teamübergreifende Zusammenarbeit gewährleistet werden.
Nachteile einer IDP
Leider können die Nachteile einer internen Entwicklerplattform ihre Effizienz potenziell beeinträchtigen. Einige der größten Herausforderungen sind:
Anpassung an Kulturwandel. Wie jede größere Änderung in der Systemarchitektur und im Betrieb erfordert eine IDP einen Kulturwandel. Die Betriebsteams müssen proaktiv eine Vielzahl von Ressourcen und Vorlagen erstellen, die von den Entwicklungsteams verwendet werden können, und diese Ressourcen standardmäßig aktualisieren und sichern. Ebenso müssen sich die Entwicklungsteams abgewöhnen, Tickets zu erstellen und stattdessen in der internen Entwicklerplattform nach den benötigten Ressourcen suchen.
Erhöhte Komplexität. Obwohl sich interne Entwicklerplattformen hervorragend für die Verwaltung komplexer Prozesse und deren weitgehende Automatisierung eignen, sind sie keineswegs einfach zu erstellen und zu verwalten. Sie müssen ständig gepflegt werden, um sicherzustellen, dass sie aktuell und sicher sind und sich mit den Anforderungen des Unternehmens weiterentwickeln können.
Risiken der Automatisierung und Autonomie. Die Automatisierung ist leistungsstark, aber auch potenziell gefährlich. Da die Entwickler Zugriff auf den Code erhalten, um ihn sofort einzusetzen, müssen sie auch fehlerhaften Code überprüfen, bevor er die Benutzer erreicht. Dies erfordert eine ausgereifte Testautomatisierung und Sicherheitsprüfungen vor jeder Veröffentlichung. Andernfalls werden Automatisierung und Autonomie nach hinten losgehen und jedes Problem auf seinem Weg durch die Softwarebereitstellungs-Pipeline verschlimmern.