Zum Hauptinhalt springen
Version: 1.89.x (Q2 26)

Übersicht Managed Services

Mit Managed Services lassen sich Services und Abhängigkeiten zusammen mit dem eigenen Anwendungscode bereitstellen und verwalten. Das Modul wird mit einer Reihe von Kernservices ausgeliefert, die vollständig von Codesphere verwaltet werden, und dient gleichzeitig als Grundlage für zusätzliche, individuell entwickelte und von der Community 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 im Modul – von der Veröffentlichung von Providern bis zur Bereitstellung und Verwaltung von Services – steht über die Codesphere Public API zur Verfügung. Dadurch lässt sich das Service-Management vollständig automatisieren oder es lassen sich komplett individuelle Workflows darauf aufbauen.

Anwendungsfälle

Managed Services unterstützen ein breites Spektrum an Szenarien – von der Bereitstellung gängiger Anwendungsabhängigkeiten bis zum Aufbau einer vollständigen Internal Developer Platform auf Basis von Codesphere.

Anwendungsabhängigkeiten

Der Servicekatalog enthält verwaltete Abhängigkeiten wie Datenbanken und Objektspeicher, die von den eigenen Anwendungen direkt genutzt werden. Statt diese unterstützenden Services selbst einzurichten und zu betreiben, werden sie einfach aus dem Katalog bereitgestellt. Codesphere übernimmt dabei die Bereitstellung, das Lifecycle-Management und die Konnektivität. Die eigene Anwendung verbindet sich über ein privates Netzwerk mit diesen Services, die Verwaltung erfolgt über die Benutzeroberfläche oder die Public API.

Internal Developer Platform

Über die Kernservices hinaus unterstützt das Modul den Aufbau einer Internal Developer Platform (IDP). Plattform-Teams erstellen Landscape-basierte Service-Provider, um Anwendungen in wiederverwendbare Services zu verpacken, die andere Teams mit einem einzigen Klick bereitstellen können, ohne die zugrunde liegende Konfiguration verstehen zu müssen. Statt separate Tools für Deployment-Automatisierung, Entwicklerportale und Servicekataloge zusammenzustellen, läuft der gesamte Workflow innerhalb einer einzigen Plattform.

Architekturübersicht

Die Architektur basiert auf drei zentralen Elementen. 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 tatsächlichen Services bereitgestellt werden und laufen.

Diese drei Elemente arbeiten in einem kontinuierlichen Kreislauf zusammen: Nutzer wählen und konfigurieren Services über die Benutzeroberfläche von Codesphere oder die Public API, Codesphere speichert den gewünschten Zielzustand in seiner internen Datenbank, und der Reconciler fragt die Backends fortlaufend ab, um sicherzustellen, dass die Infrastruktur dem angeforderten Zustand entspricht.

Managed Service Architecture

Entsprechende barrierefreie Textbeschreibung

Service Provider

Öffnet man den Tab „Managed Services“ in Codesphere, erscheint ein Raster mit verfügbaren Providern. Jede Kachel in diesem Raster steht für einen einzelnen Service-Provider.

Ansicht des Managed-Services-Katalogs mit verfügbaren Service-Providern und Deployment-Kacheln.

Ein Provider ist eine reproduzierbare Vorlage für die Bereitstellung eines bestimmten Servicetyps. 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. Ein einzelner Provider kann mehreren Deployments zugrunde liegen. Beispielsweise können mehrere unabhängige PostgreSQL-Datenbanken aus demselben Provider bereitgestellt werden, jede mit eigener Konfiguration.

Individuelle Provider erstellen

Mehr dazu, wie ein Provider erstellt wird, findet sich im Artikel Service Provider erstellen.

Provider-Backends

Ein Provider-Backend verbindet einen Provider mit der tatsächlichen Rechenleistung, auf der der Service bereitgestellt wird. Es ist verantwortlich für die Ausführung aller Erstellungs-, Aktualisierungs- und Löschvorgänge für einen bestimmten Service und gibt den aktuellen Servicestatus an den Codesphere-Reconciler zurück.

Codesphere stellt eigene Backends für alle Kernservices bereit. Einige davon teilen sich zugrunde liegende Ressourcen: So nutzen beispielsweise sowohl der PostgreSQL- als auch der Babelfish-Provider ein gemeinsames Backend. Über die Kernservices hinaus lassen sich individuelle Backends erstellen, die sich mit jedem beliebigen System verbinden, das selbst betrieben wird – sei es ein Cloud-Anbieter, ein On-Premise-System oder eine proprietäre Anwendung. Dadurch lassen sich bestehende Systeme in das Codesphere-Ökosystem integrieren, ohne dass eine Migration oder ein Neuaufbau notwendig ist. Alles, was das eigene Backend bereitstellt, wird zu einem vollwertigen Managed Service, der über die standardisierte Codesphere API und Benutzeroberfläche nutzbar ist – mit vollständigem Lifecycle-Management und Reconciliation.

Individuelle REST-Backends erstellen

Mehr dazu, wie ein Backend erstellt wird, findet sich im Artikel Ein individuelles REST-Backend erstellen.

Service-Infrastruktur

Die Service-Infrastruktur ist der Ort, an dem der eigentliche Service bereitgestellt wird und läuft. Für Codesphere-Kernservices befindet sich diese Infrastruktur innerhalb des Codesphere-Clusters selbst. Für individuelle Services kann es sich um jede 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 es die Service-Infrastruktur, in der diese Vorgänge ausgeführt werden.

Servicekategorien

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 Objektspeicher, die standardmäßig mit der Plattform ausgeliefert werden. Codesphere pflegt und betreibt den gesamten Stack für diese Services: den Provider, das Backend und die zugrunde liegende Infrastruktur, alles innerhalb des Codesphere-Clusters.

Jeder Kernservice verfügt über ein dediziertes Provider-Backend, das den Vertrag der Provider REST API implementiert. Beispiele sind PostgreSQL, Babelfish und S3-kompatibler Objektspeicher (unterstützt durch Ceph/Rados Gateway).

Da Codesphere jede Schicht kontrolliert, sind diese Services vollständig verwaltet – einschließlich Bereitstellung, Updates, Skalierung, Monitoring und, sofern anwendbar, SLAs.

Ecosystem / Self Managed

Diese Managed Services werden von jemand anderem als Codesphere definiert, betrieben und gepflegt. Dabei kann auf Service-Provider aus dem Ökosystem zurückgegriffen werden, oder man erstellt und stellt den Service-Provider selbst bereit, implementiert oder konfiguriert das Backend und entscheidet selbst, wo der Service läuft. Das bietet volle Flexibilität, um auch externe Services in den Codesphere-Servicekatalog zu integrieren. Im Gegensatz zu den von Codesphere gepflegten Kernservices sind diese selbst verwaltet. Werden solche Instanzen erstellt, befinden sie sich auf der Anwendungsschicht des Kunden und nicht auf der PaaS-Schicht, wodurch sie in die Verantwortung des Nutzers fallen.

Diese Managed Services können auf eine von zwei Arten eingerichtet werden:

Landscape-basiert

Eine Landscape in Codesphere ist eine Deployment-Konfiguration der eigenen Anwendung, vollständig definiert durch eine einzige ci.yml-Datei. Sie beschreibt die Services, deren Abhängigkeiten und wie sie über ein sicheres, privates Netzwerk miteinander verbunden sind.

Landscape-basierte Managed Services nutzen dieses Konzept, um Services direkt als Landscape-Workloads innerhalb des Codesphere-Clusters bereitzustellen. Statt ein individuelles REST-Backend zu implementieren, orchestriert die Plattform diese Services intern über die Landscape API. Dadurch lässt sich jede bereitgestellte Anwendung – oder solche mit gut gepflegten Open-Source-Deployment-Rezepten wie Nextcloud oder Grafana – unkompliziert in einen Managed Service verwandeln, ohne dass Backend-Code geschrieben werden muss. Mehr dazu, wie eine solche Landscape erstellt wird, findet sich im Artikel Eine Landscape konfigurieren.

REST-basiert

REST-basierte Services ermöglichen es, Codesphere mit Infrastruktur zu verbinden, die vollständig außerhalb der Plattform liegt. Dazu wird ein individuelles Backend implementiert, das der Provider-REST-API-Spezifikation aus dem Artikel Ein individuelles REST-Backend erstellen entspricht. Dieses Backend kann mit beliebigen Systemen zusammenarbeiten: einem Hyperscaler, einem On-Premise-Rechenzentrum, einer proprietären Drittanbieteranwendung oder jeder Kombination davon.

Dadurch lässt sich bestehende Infrastruktur in das Codesphere-Ökosystem 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 besitzt. Der Reconciler kommuniziert mit individuellen Backends auf dieselbe Weise wie mit den eigenen, sodass individuelle Services das gleiche Lifecycle-Management, die gleiche Statusverfolgung und die gleiche UI-Integration erhalten wie Kernservices.

Wann was verwenden

SzenarioEmpfohlene KategorieWarum
Es werden gängige Abhängigkeiten benötigt, für die ein entsprechender Codesphere-Service existiertCodesphere ManagedKernservices sind vollständig verwaltet und erfordern über die Konfiguration hinaus keine Einrichtung.
Es wird eine neue Anwendung entwickelt oder für die Nutzung durch andere Teams verpacktCustomer Managed (Landscape-basiert)Die eigene Anwendung wird als Landscape definiert und als Provider veröffentlicht. Der Service läuft souverän im Codesphere-Cluster, ohne dass individueller Backend-Code erforderlich ist.
Es soll eine Integration mit bestehender externer Infrastruktur oder einem proprietären System erfolgenCustomer Managed (REST-basiert)Durch die Implementierung des REST-API-Vertrags lässt sich jedes externe System als vollständig verwalteter Service in Codesphere einbinden, ohne davon wegmigrieren zu müssen.

Nächste Schritte