Managed Services Übersicht
Managed Services ermöglichen es, Services & Abhängigkeiten gemeinsam mit dem Anwendungscode zu deployen und zu verwalten. Sie kommen mit einer Reihe von Kern-Services, die vollständig von Codesphere verwaltet werden, und dienen zugleich als Grundlage für zusätzliche, von der Community und dem Ecosystem gepflegte Service-Provider. So besteht die Möglichkeit, eigene Services zu erstellen und anzubieten – unabhängig davon, ob diese innerhalb des Codesphere-Clusters laufen oder über ein individuelles REST-Backend mit externen Systemen verbunden sind.
API-First
Jede Operation innerhalb des Moduls, vom Veröffentlichen von Providern bis zum Deployment und der Verwaltung von Services, ist über die Codesphere Public API verfügbar. Dadurch lässt sich die Verwaltung von Services vollständig automatisieren oder es lassen sich vollständig individuelle Workflows darauf aufbauen.
Anwendungsfälle
Managed Services unterstützen eine Vielzahl von Szenarien – von der Bereitstellung gängiger Anwendungsabhängigkeiten bis hin zum Aufbau einer vollständigen internen Entwicklerplattform auf Basis von Codesphere.
Anwendungsabhängigkeiten
Der Service-Katalog enthält verwaltete Abhängigkeiten wie Datenbanken und Object Storage, die direkt von Anwendungen genutzt werden. Anstatt diese Backing-Services selbst einzurichten und zu betreiben, werden sie aus dem Katalog deployt. Codesphere übernimmt Provisionierung, Lifecycle-Management und Konnektivität. Die Anwendung verbindet sich über ein privates Netzwerk mit diesen Services, verwaltet werden sie über die UI oder die Public API.
Interne Entwicklerplattform
Über die Kern-Services hinaus unterstützt das Modul den Aufbau einer internen Entwicklerplattform (Internal Developer Platform, IDP). Plattformteams erstellen landscape-basierte Service-Provider, um Anwendungen als wiederverwendbare Services zu paketieren, die andere Teams mit einem einzigen Klick deployen können, ohne den zugrunde liegenden Aufbau verstehen zu müssen. Statt einzelne Tools für Deployment-Automatisierung, Developer-Portale und Service-Kataloge mühsam zu kombinieren, läuft der gesamte Workflow innerhalb einer Plattform.
Architektur-Überblick
Die Architektur basiert auf drei Kernelementen. Service-Provider definieren, was ein Service ist und wie er konfiguriert wird. Provider-Backends verbinden Provider mit der zugrunde liegenden Rechenleistung. Die Service-Infrastruktur ist der Ort, an dem die eigentlichen Services provisioniert werden und laufen.
Diese drei Elemente arbeiten in einem kontinuierlichen Kreislauf zusammen: Nutzer wählen und konfigurieren Services über die Codesphere-UI oder die Public API, Codesphere hält den gewünschten Zustand in seiner internen Datenbank fest, und der Reconciler fragt kontinuierlich die Backends ab, um sicherzustellen, dass die Infrastruktur dem angeforderten Zustand entspricht.

Entsprechende barrierefreie Textbeschreibung
Service-Provider
Öffnet man den Managed Services-Tab in Codesphere, erscheint ein Raster verfügbarer Provider. Jede Karte in diesem Raster repräsentiert einen einzelnen Service-Provider.

Ein Provider ist eine reproduzierbare Vorlage für das Deployment eines bestimmten Service-Typs. Provider werden über die CRUD-Operationen des Provider-Endpunkts der Public API, über die Cluster-Konfiguration oder – bei landscape-basierten Providern – in einer provider.yaml-Datei definiert. Standardmäßig kann ein einzelner Provider mehrere Deployments unterstützen. Provider mit teamSingleton: true sind die Ausnahme: Jedes Team kann für diese Provider-Version nur ein nicht gelöschtes Deployment besitzen. Es lassen sich beispielsweise mehrere unabhängige PostgreSQL-Datenbanken aus demselben Provider deployen, sofern dieser nicht als Team-Singleton konfiguriert ist.
Eigene Provider erstellen
Mehr zur Erstellung eines Providers findet sich im Artikel Erstellen von Service-Providern.
Provider-Backends
Ein Provider-Backend verbindet einen Provider mit der eigentlichen Rechenleistung, auf der der Service provisioniert wird. Es ist verantwortlich für die Ausführung aller Erstellungs-, Aktualisierungs- und Löschoperationen für einen bestimmten Service und stellt den aktuellen Service-Status dem Codesphere-Reconciler zur Verfügung.
Codesphere stellt eigene Backends für alle Kern-Services bereit. Einige davon teilen sich zugrunde liegende Ressourcen: Sowohl der PostgreSQL- als auch der Babelfish-Provider nutzen beispielsweise ein gemeinsames Backend. Über die Kern-Services hinaus lassen sich individuelle Backends erstellen, die mit jedem selbst betriebenen System verbunden werden können – sei es ein Cloud-Provider, ein On-Premise-System oder eine proprietäre Anwendung. Dadurch lassen sich bestehende Systeme in das Codesphere-Ecosystem integrieren, ohne sie migrieren oder neu aufbauen zu müssen. Alles, was das eigene Backend bereitstellt, wird zu einem vollwertigen Managed Service, nutzbar über die standardisierte Codesphere API und UI, mit vollständigem Lifecycle-Management und Reconciliation.
Erstellen individueller REST-Backends
Mehr zur Erstellung eines Backends findet sich im Artikel Ein individuelles REST-Backend erstellen.
Service-Infrastruktur
Die Service-Infrastruktur ist der Ort, an dem der eigentliche Service provisioniert wird und läuft. Für Codesphere-Kern-Services befindet sich diese Infrastruktur innerhalb des Codesphere-Clusters selbst. Für individuelle Services kann es sich um beliebige Infrastruktur handeln: einen Hyperscaler, ein On-Premise-System oder eine Kombination aus beidem.
Wenn ein Backend eine Anfrage zum Erstellen, Aktualisieren oder Löschen eines Services erhält, ist die Service-Infrastruktur der Ort, an dem diese Operationen ausgeführt werden.
Service-Kategorien
Jeder Managed Service fällt in eine von zwei Kategorien, abhängig davon, wer für die Bereitstellung und den Betrieb verantwortlich ist.
Codesphere Managed
Von Codesphere verwaltete Services sind gängige Abhängigkeiten wie Datenbanken und Object Storage, die von Haus aus mit der Plattform mitgeliefert werden. Codesphere pflegt und betreibt für diese Services den gesamten Stack: den Provider, das Backend und die zugrunde liegende Infrastruktur, alles innerhalb des Codesphere-Clusters.
Jeder Kern-Service verfügt über ein dediziertes Provider-Backend, das den Provider-REST-API-Vertrag implementiert. Beispiele sind PostgreSQL, Babelfish und S3-kompatibler Object Storage (unterstützt durch Ceph/Rados Gateway).
Da Codesphere jede Schicht kontrolliert, sind diese Services vollständig verwaltet – einschließlich Provisionierung, Updates, Skalierung, Monitoring und, sofern zutreffend, SLAs.
Ecosystem / Self Managed
Diese Managed Services werden von jemand anderem als Codesphere definiert, betrieben und gepflegt. Es lassen sich Service-Provider aus dem Ecosystem nutzen oder eigene Service-Provider erstellen und anbieten, das Backend implementieren oder konfigurieren und selbst festlegen, wo der Service läuft. Dies bietet volle Flexibilität, um auch externe Services in den Codesphere-Service-Katalog zu integrieren. Im Gegensatz zu den von Codesphere gepflegten Kern-Services sind diese selbst verwaltet. Wenn diese Instanzen erstellt werden, befinden sie sich innerhalb der Anwendungsschicht des Kunden statt in der PaaS-Schicht, wodurch sie in der Verantwortung des Nutzers liegen.
Diese Managed Services können auf zwei Arten eingerichtet werden:
Landscape-basiert
Eine Landscape in Codesphere ist eine Deployment-Konfiguration der Anwendung, vollständig definiert durch eine einzelne ci.yml-Datei. Sie beschreibt die Services, deren Abhängigkeiten und wie sie über ein sicheres privates Netzwerk verbunden sind.
Landscape-basierte Managed Services nutzen dieses Konzept, um Services direkt als Landscape-Workloads innerhalb des Codesphere-Clusters zu deployen. Statt ein individuelles REST-Backend zu implementieren, orchestriert die Plattform diese Services intern über die Landscape-API. Dadurch lässt sich jede deployte Anwendung oder eine mit gut gepflegten Open-Source-Deployment-Rezepten, wie Nextcloud oder Grafana, unkompliziert in einen Managed Service verwandeln, ohne Backend-Code schreiben zu müssen. Mehr zur Erstellung findet sich im Artikel Konfigurieren einer Landscape.
REST-basiert
REST-basierte Services ermöglichen es, Codesphere mit Infrastruktur zu verbinden, die vollständig außerhalb der Plattform liegt. Es wird ein individuelles Backend implementiert, das der im Artikel Ein individuelles REST-Backend erstellen beschriebenen Provider-REST-API-Spezifikation entspricht, und dieses Backend kann mit beliebigen Systemen kommunizieren: einem Hyperscaler, einem On-Premise-Rechenzentrum, einer proprietären Drittanbieteranwendung oder einer beliebigen Kombination.
Dadurch lässt sich bestehende Infrastruktur in das Codesphere-Ecosystem integrieren, ohne davon wegmigrieren zu müssen, oder es lassen sich Provider erstellen, die Ressourcen in Systemen bereitstellen, für die Codesphere keine native Integration bietet. Der Reconciler kommuniziert mit individuellen Backends auf die gleiche Weise wie mit seinen eigenen, sodass individuelle Services das gleiche Lifecycle-Management, Status-Tracking und die gleiche UI-Integration erhalten wie Kern-Services.
Wann was verwenden
| Szenario | Empfohlene Kategorie | Warum |
|---|---|---|
| Es werden gängige Abhängigkeiten benötigt, für die es einen entsprechenden Codesphere-Service gibt | Codesphere Managed | Kern-Services sind vollständig verwaltet und erfordern keine Einrichtung über die Konfiguration hinaus. |
| Es wird eine neue Anwendung entwickelt oder eine Anwendung für andere Teams paketiert | Customer Managed (landscape-basiert) | Die Anwendung wird als Landscape definiert und als Provider veröffentlicht. Der Service läuft sovereign im Codesphere-Cluster, ohne dass individueller Backend-Code erforderlich ist. |
| Es soll eine Integration mit bestehender externer Infrastruktur oder einem proprietären System erfolgen | Customer Managed (REST-basiert) | Der REST-API-Vertrag wird implementiert, um jedes externe System als vollständig verwalteten Service in Codesphere zu bringen, ohne davon wegmigrieren zu müssen. |
Nächste Schritte
- Services deployen: Deployment, Konfiguration und Lifecycle-Management eines Managed Service.
- Erstellen von Service-Providern: Erstellen und Veröffentlichen individueller landscape-basierter oder REST-basierter Provider.
- Ein individuelles REST-Backend erstellen: Implementierung des REST-API-Vertrags für ein individuelles Backend.
- Provider-Referenz: Zugriff auf deployte Services aus den Workspaces über die providerspezifischen Referenzseiten.