Zum Hauptinhalt springen
Version: Weekly Build

Managed Services Übersicht

Mit Managed Services können Services und Abhängigkeiten gemeinsam mit dem Anwendungscode bereitgestellt und verwaltet werden. Das Modul bringt eine Reihe von Core Services mit, die vollständig von Codesphere verwaltet werden, und dient gleichzeitig als Grundlage für zusätzliche, von der Community oder von Drittanbietern gepflegte Service-Provider. Dadurch besteht die Möglichkeit, eigene Services zu erstellen und anzubieten, unabhängig davon, ob diese innerhalb des Codesphere-Clusters laufen oder über ein eigenes REST-Backend mit externen Systemen verbunden sind.

API-First

Jeder Vorgang im Modul – vom Veröffentlichen von Providern bis hin zum Bereitstellen und Verwalten 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 völlig eigene 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 Internal Developer Platform auf Basis von Codesphere.

Anwendungsabhängigkeiten​

Der Service-Katalog enthält verwaltete Abhängigkeiten wie Datenbanken und Objektspeicher, die direkt von den Anwendungen genutzt werden. Anstatt diese Backing Services selbst einzurichten und zu betreiben, werden sie aus dem Katalog bereitgestellt. Codesphere übernimmt Provisionierung, Lifecycle-Management und Konnektivität. Die Anwendung verbindet sich über ein privates Netzwerk mit diesen Services, die Verwaltung erfolgt über die UI oder die Public API.

Internal Developer Platform​

Über die Core Services hinaus unterstützt das Modul den Aufbau einer Internal Developer Platform (IDP). Platform-Teams erstellen Landscape-basierte Service-Provider, um Anwendungen in wiederverwendbare Services zu verpacken, die andere Teams mit einem einzigen Klick bereitstellen können, ohne das zugrunde liegende Setup verstehen zu müssen. Anstatt separate Tools für Deployment-Automatisierung, Developer-Portale und Service-Kataloge zusammenzufügen, 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 eigentlichen Services bereitgestellt werden und laufen.

Diese drei Elemente arbeiten in einer kontinuierlichen Schleife zusammen: Nutzer wählen und konfigurieren Services über die Codesphere-UI oder die Public API, Codesphere erfasst den gewünschten Zustand in seiner internen Datenbank, und der Reconciler fragt die Backends fortlaufend ab, um sicherzustellen, dass die Infrastruktur dem angeforderten Zustand entspricht.

Managed-Services-Architektur

Entsprechende barrierefreie Textbeschreibung

Service Provider​

Öffnet man den Managed-Services-Tab in Codesphere, wird ein Raster der verfügbaren Provider angezeigt. Jede Karte in diesem Raster repräsentiert einen einzelnen Service Provider.

Katalogansicht der Managed Services mit verfügbaren Service-Providern und Deployment-Karten.

Ein Provider ist eine reproduzierbare Vorlage für die Bereitstellung 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. Eine Ausnahme bilden Provider mit teamSingleton: true: Für diese kann jede Resource Group nur ein nicht gelöschtes Deployment der jeweiligen Provider-Version besitzen. So ließen sich beispielsweise mehrere unabhängige PostgreSQL-Datenbanken aus demselben Provider bereitstellen, wenn dieser nicht als Resource-Group-Singleton konfiguriert ist.

Eigene Provider erstellen

Mehr dazu, wie ein eigener 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 für die Ausführung aller Erstellungs-, Aktualisierungs- und Löschvorgänge für einen bestimmten Service verantwortlich und meldet den aktuellen Service-Status an den Codesphere-Reconciler zurück.

Codesphere stellt eigene Backends für alle Core Services bereit. Einige davon teilen sich zugrunde liegende Ressourcen: So verwenden beispielsweise sowohl der PostgreSQL- als auch der Babelfish-Provider ein gemeinsames Backend. Über die Core Services hinaus lassen sich eigene Backends erstellen, die mit jedem beliebigen selbst betriebenen System verbunden werden können – sei es ein Cloud-Anbieter, ein On-Premise-System oder eine proprietäre Anwendung. Dadurch lassen sich bestehende Systeme in das Codesphere-Ökosystem einbinden, ohne sie migrieren oder neu aufbauen zu müssen. Alles, was das eigene Backend bereitstellt, wird zu einem vollwertigen Managed Service, der über die standardisierte Codesphere-API und -UI nutzbar ist, inklusive vollständigem Lifecycle-Management und Reconciliation.

Eigene REST-Backends erstellen

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

Service-Infrastruktur​

Die Service-Infrastruktur ist der Ort, an dem der eigentliche Service bereitgestellt wird und läuft. Bei Codesphere-Core-Services befindet sich diese Infrastruktur innerhalb des Codesphere-Clusters selbst. Bei eigenen Services kann es sich um eine 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 Vorgänge ausgeführt werden.

Service-Kategorien​

Jeder Managed Service fällt in eine von zwei Kategorien, je nachdem, wer für die Bereitstellung und den Betrieb verantwortlich ist.

Von Codesphere verwaltet​

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 für diese Services den gesamten Stack: den Provider, das Backend und die zugrunde liegende Infrastruktur, alles innerhalb des Codesphere-Clusters.

Jeder Core Service verfügt über ein dediziertes Provider-Backend, das den Provider-REST-API-Vertrag implementiert. Beispiele sind PostgreSQL, Babelfish und S3-kompatibler Objektspeicher (basierend auf Ceph/Rados Gateway).

Da Codesphere jede Ebene kontrolliert, sind diese Services vollständig verwaltet, einschließlich Provisionierung, Updates, Skalierung, Monitoring und – soweit zutreffend – SLAs.

Ökosystem / Selbst verwaltet​

Diese Managed Services werden von jemand anderem als Codesphere definiert, betrieben und gepflegt. Es können Service-Provider aus dem Ökosystem genutzt werden, oder man erstellt und stellt den Service-Provider selbst bereit, implementiert bzw. konfiguriert das Backend und entscheidet selbst, 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 Core Services sind diese selbst verwaltet. Beim Erstellen solcher Instanzen befinden sie sich innerhalb der Customer-Application-Ebene und nicht in der PaaS-Ebene, 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 eigenen 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 miteinander verbunden sind.

Landscape-basierte Managed Services nutzen dieses Konzept, um Services direkt als Landscape-Workloads innerhalb des Codesphere-Clusters bereitzustellen. Anstatt ein eigenes REST-Backend zu implementieren, orchestriert die Plattform diese Services intern über die Landscape-API. Dadurch lässt sich jede bereitgestellte Anwendung oder eine mit gut gepflegten Open-Source-Deployment-Rezepten, wie etwa Nextcloud oder Grafana, unkompliziert in einen Managed Service verwandeln, ohne Backend-Code schreiben zu müssen. Mehr zur Erstellung findet sich im Artikel Konfiguration 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 eigenes Backend implementiert, das der im Artikel Ein eigenes 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 Drittanwendung oder jeder beliebigen Kombination davon.

Dadurch lässt sich bestehende Infrastruktur in das Codesphere-Ökosystem integrieren, ohne davon weg migrieren 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 eigenen Backends auf die gleiche Weise wie mit seinen eigenen, sodass eigene Services das gleiche Lifecycle-Management, Status-Tracking und die gleiche UI-Integration erhalten wie Core Services.

Wann was verwenden​

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

Nächste Schritte​