Zum Hauptinhalt springen
Version: Weekly Build

Managed Services Übersicht

Managed Services ermöglichen es, Services und Abhängigkeiten gemeinsam mit dem eigenen Anwendungscode zu deployen und zu verwalten. Sie werden mit einer Reihe von Kern-Services ausgeliefert, die vollständig von Codesphere verwaltet werden, und dienen gleichzeitig als Grundlage für zusätzliche, von der Community und dem Ökosystem gepflegte Service-Anbieter. 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

Jede Operation innerhalb des Moduls – vom Veröffentlichen von Providern bis zum Deployment und der Verwaltung von Services – steht über die Codesphere Public API zur Verfügung. Dadurch lässt sich die Service-Verwaltung 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 internen Entwicklerplattform auf Basis von Codesphere.

Anwendungsabhängigkeiten

Der Service-Katalog umfasst verwaltete Abhängigkeiten wie Datenbanken und Objektspeicher, die direkt von den eigenen Anwendungen genutzt werden. Anstatt diese Backing-Services selbst einzurichten und zu betreiben, werden sie einfach aus dem Katalog deployt. Codesphere übernimmt die Bereitstellung, das Lifecycle-Management und die Konnektivität. Die eigene Anwendung verbindet sich über ein privates Netzwerk mit diesen Services, die über die Benutzeroberfläche oder die Public API verwaltet werden.

Interne Entwicklerplattform

Über die Kern-Services hinaus unterstützt das Modul den Aufbau einer internen Entwicklerplattform (IDP). Plattform-Teams erstellen landscape-basierte Service-Anbieter, um Anwendungen in wiederverwendbare Services zu verpacken, die andere Teams mit einem einzigen Klick deployen können, ohne das zugrunde liegende Setup verstehen zu müssen. Anstatt separate Tools für Deployment-Automatisierung, Entwicklerportale und Service-Kataloge zusammenzufügen, findet der gesamte Workflow innerhalb einer einzigen Plattform statt.

Architektur-Überblick

Die Architektur basiert auf drei zentralen Elementen. Service-Anbieter (Service Providers) definieren, was ein Service ist und wie er konfiguriert wird. Provider-Backends verbinden Anbieter mit der zugrunde liegenden Compute-Infrastruktur. 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 Benutzeroberfläche von Codesphere oder die Public API, Codesphere speichert den gewünschten Zielzustand in seiner internen Datenbank, und der Reconciler fragt kontinuierlich die Backends ab, um sicherzustellen, dass die Infrastruktur dem angeforderten Zustand entspricht.

Managed Service Architektur

Entsprechende barrierefreie Textbeschreibung

Service-Anbieter

Beim Öffnen des Tabs „Managed Services“ in Codesphere wird ein Raster verfügbarer Anbieter angezeigt. Jede Kachel in diesem Raster repräsentiert einen einzelnen Service-Anbieter.

Katalogansicht der Managed Services mit verfügbaren Service-Anbietern und Deployment-Kacheln.

Ein Anbieter ist eine reproduzierbare Vorlage für das Deployment eines bestimmten Service-Typs. Anbieter werden über die CRUD-Operationen des Provider-Endpunkts der Public API, über die Cluster-Konfiguration oder (bei landscape-basierten Anbietern) in einer provider.yaml-Datei definiert. Ein einzelner Anbieter kann mehrere Deployments unterstützen. So können beispielsweise mehrere unabhängige PostgreSQL-Datenbanken vom selben Anbieter deployt werden, jede mit ihrer eigenen Konfiguration.

Eigene Anbieter erstellen

Mehr darüber, wie ein Anbieter erstellt wird, erfährst du im Artikel Service-Anbieter erstellen.

Provider-Backends

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

Codesphere stellt eigene Backends für alle Kern-Services bereit. Einige davon teilen sich zugrunde liegende Ressourcen: So verwenden beispielsweise sowohl der PostgreSQL- als auch der Babelfish-Anbieter ein gemeinsames Backend. Über die Kern-Services hinaus lassen sich eigene Backends erstellen, die eine Verbindung zu beliebigen selbst betriebenen Systemen herstellen – sei es ein Cloud-Anbieter, ein On-Premise-System oder eine proprietäre Anwendung. Das bedeutet, dass bestehende Systeme in das Codesphere-Ökosystem integriert werden können, 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 Benutzeroberfläche mit vollständigem Lifecycle-Management und Reconciliation genutzt werden kann.

Eigene REST-Backends erstellen

Mehr darüber, wie ein Backend erstellt wird, erfährst du 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-Kern-Services befindet sich diese Infrastruktur innerhalb des Codesphere-Clusters selbst. Bei eigenen 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 die Service-Infrastruktur der Ort, an dem diese Operationen 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.

Codesphere Managed

Von Codesphere verwaltete Services sind gängige Abhängigkeiten wie Datenbanken und Objektspeicher, die von Haus aus mit der Plattform ausgeliefert werden. Codesphere pflegt und betreibt für diese Services den gesamten Stack: den Anbieter, das Backend und die zugrunde liegende Infrastruktur, alles innerhalb des Codesphere-Clusters.

Jeder Kern-Service verfügt über ein dediziertes Provider-Backend, das den REST-API-Vertrag des Providers implementiert. Beispiele hierfür sind PostgreSQL, Babelfish und S3-kompatibler Objektspeicher (auf Basis von Ceph/Rados Gateway).

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

Ecosystem / Self Managed

Diese Managed Services werden von jemand anderem als Codesphere definiert, betrieben und gepflegt. Man kann dabei auf Service-Anbieter aus dem Ökosystem zurückgreifen oder selbst einen Service-Anbieter erstellen und bereitstellen, das Backend implementieren oder konfigurieren und selbst festlegen, wo der Service ausgeführt wird. Dies bietet volle Flexibilität, auch externe Services in den Codesphere-Service-Katalog zu integrieren. Im Gegensatz zu den von Codesphere gepflegten Kern-Services sind diese selbst verwaltet. Beim Erstellen dieser Instanzen befinden sie sich innerhalb der Kundenanwendungsschicht und nicht 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 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 zu deployen. Anstatt ein eigenes REST-Backend zu implementieren, orchestriert die Plattform diese Services intern über die Landscape API. Dadurch lässt sich jede deployte Anwendung – oder Anwendungen mit gut gepflegten Open-Source-Deployment-Rezepten wie Nextcloud oder Grafana – ganz einfach in einen Managed Service verwandeln, ohne dass Backend-Code geschrieben werden muss. Mehr über die Erstellung erfährst du 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. Dabei wird ein eigenes Backend implementiert, das der im Artikel Ein eigenes REST-Backend erstellen beschriebenen Provider-REST-API-Spezifikation entspricht. Dieses Backend kann mit beliebigen Systemen kommunizieren: einem Hyperscaler, einem On-Premise-Rechenzentrum, einer proprietären Drittanbieteranwendung oder jeder beliebigen Kombination davon.

Dies ermöglicht es, bestehende Infrastruktur in das Codesphere-Ökosystem zu integrieren, ohne davon migrieren zu müssen, oder Anbieter zu erstellen, die Ressourcen in Systemen bereitstellen, für die Codesphere keine native Integration besitzt. Der Reconciler kommuniziert mit eigenen Backends auf die gleiche Weise wie mit seinen eigenen, sodass eigene Services dasselbe Lifecycle-Management, Status-Tracking und dieselbe UI-Integration erhalten wie Kern-Services.

Wann was verwenden

SzenarioEmpfohlene KategorieWarum
Es werden gängige Abhängigkeiten benötigt, für die es einen entsprechenden Codesphere-Service gibtCodesphere ManagedKern-Services sind vollständig verwaltet und erfordern über die Konfiguration hinaus keine Einrichtung.
Es wird eine neue Anwendung entwickelt oder für andere Teams zur Nutzung verpacktCustomer Managed (Landscape-basiert)Definiere deine Anwendung als Landscape und veröffentliche sie als Anbieter. 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 erfolgenCustomer Managed (REST-basiert)Implementiere den REST-API-Vertrag, um jedes externe System als vollständig verwalteten Service in Codesphere einzubinden, ohne davon migrieren zu müssen.

Nächste Schritte