Zum Hauptinhalt springen
Version: Weekly Build

Codesphere Reactives

Teil von Runtimes

Dies ist eine detaillierte Anleitung für Codesphere Reactives. Für einen Überblick über alle Runtime-Typen und wie man zwischen ihnen wählt, siehe Runtimes Übersicht.

Codesphere Reactives sind eine Runtime-Umgebung, mit der die Anwendungsumgebung über gewöhnliche bash-Befehle definiert werden kann – exakt so, wie man es auf einer lokalen Maschine oder VM tun würde – während die Plattform das gesamte Infrastrukturmanagement automatisch übernimmt. Man erhält die Freiheit einer imperativen Linux-Konfiguration, ohne Container bauen, verwalten oder überhaupt darüber nachdenken zu müssen. Die Runtime verbindet die Leistungsfähigkeit klassischer Serverumgebungen mit automatischer Skalierung und minimalem Infrastrukturaufwand, wenn sie nicht läuft.

Überblick

Im Gegensatz zu traditionellen Serverless-Plattformen, die zustandslos und auf kurzlebige Funktionsausführungen beschränkt sind, oder klassischen VMs, die kontinuierlich Ressourcen verbrauchen, vereinen Codesphere Reactives Vorteile aus beiden Paradigmen:

FeatureTraditionelles ServerlessTraditionelle VMsCodesphere Reactives
UmgebungskonfigurationNein – eingeschränkte RuntimesJa – vollständiges OS-Management erforderlichJa – gewöhnliche bash-Befehle
Persistenz des ZustandsNein – zustandslosJa – vollständiger ZustandJa – gemeinsames Dateisystem
RessourceneffizienzJa – Pay-per-UseNein – läuft dauerhaftJa – aus, wenn nicht genutzt
StartzeitSekundenMinutenSekunden
Langlaufende ProzesseNein – ZeitlimitsJa – unbegrenztJa – unbegrenzt
UmgebungskontrolleNein – eingeschränktJa – volle KontrolleJa – flexibel über Nix
InfrastrukturmanagementJa – automatischNein – manuelle Einrichtung & WartungJa – automatisch

Architektur

Codesphere Reactives sind voll funktionsfähige Ubuntu-Container nach offenem Standard, die über unsere patentierte Deployment-Orchestrierung für verbesserte Startleistung orchestriert werden. Für Private Cloud Deployments kann das Basis-Image von Organisationsadministratoren frei angepasst werden. Unsere Architektur ermöglicht die schnellen Startzeiten, die Reactives zu der Technologie machen, die alle Codesphere Workspace-Cockpit-Deployments antreibt. Jede Instanz erhält ein Netzwerk-Dateisystem-Volume, das über Neustarts und Replikate hinweg bestehen bleibt, sodass man in das Dateisystem schreiben kann wie auf einer lokalen Maschine. Im Ruhezustand skalieren Reactives automatisch auf null herunter, geben Rechenressourcen frei und behalten dabei den Zustand des Dateisystems bei. Bei der nächsten Anfrage starten sie aus einem vorgewärmten Pool neu.

Reactive Runtime Architektur

Entsprechende barrierefreie Textbeschreibung

Kernkomponenten

Gemeinsames Netzwerk-Dateisystem

Jedes Reactive hat Zugriff auf ein hochperformantes Netzwerk-Dateisystem, das persistenten Speicher über Neustarts und Replikate hinweg bereitstellt. Man kann jede Datei oder jedes Verzeichnis aus dem Netzwerk-Dateisystem an ein beliebiges Ziel im Container mounten. Standardmäßig werden Dateien in /home/user/app erhalten, während andere Speicherorte flüchtigen Speicher verwenden.

Ressourcenmanagement

Gepoolte Compute-Instanzen über mehrere Nodes hinweg ermöglichen sofortigen Start und automatische Freigabe von Ressourcen während Ruhephasen. Nicht genutzte Ressourcen stehen anderen Workloads sofort zur Verfügung, und eine Wakeup-Logik startet Dienste bei Bedarf neu.

Kubernetes-basierte Orchestrierung

Aufbauend auf Kubernetes mit Health-Monitoring, Load Balancing, Auto-Scaling und geordnetem Herunterfahren – alles von der Plattform verwaltet, ohne dass Kubernetes-Kenntnisse erforderlich sind.

Wann Codesphere Reactives verwendet werden sollten

Anwendungsfälle in der Entwicklung

Reactives glänzen während der Entwicklung, da man Code skalierbar ausführen kann, ohne ständig Container-Images neu bauen zu müssen. Das macht Iterationen schnell und effizient:

  • Schnelles Prototyping und Testen
  • Schnelle Änderungen von Abhängigkeiten ohne Docker-/Container-Image-Rebuilds
  • Sofortige Code-Änderungen mit Hot Reload
  • Skalierbare Entwicklungsumgebungen, die die Produktion widerspiegeln

Anwendungsfälle in der Produktion

Reactives werden in der Produktion von Kunden eingesetzt, die auf über 70 Replikate skalieren, sowie von großen Unternehmen, die die einfache Bedienung und den minimalen DevOps-Aufwand schätzen:

  • Web-Services und APIs mit automatischer Skalierung
  • Microservices-Architekturen
  • Zustandsbehaftete Anwendungen mit Bedarf an persistentem Speicher
  • Services mit geringem bis hohem Traffic bei effizienter Ressourcennutzung
  • Kostensensitive Workloads, die vom „aus, wenn nicht genutzt"-Verhalten profitieren

Migration von VMs

Reactives eignen sich gut für Anwendungen, die von klassischen VMs migriert werden, insbesondere wenn:

  • die Anwendung ohne Root-Zugriff laufen kann
  • lokale Abhängigkeiten (installiert über Nix oder Paketmanager) ausreichen
  • man modernisieren möchte, ohne umfangreiches Refactoring

Überlegungen für den Produktionsbetrieb

Beim Einsatz von Reactives in der Produktion sollte die Reproduzierbarkeit sichergestellt werden durch:

  • explizites Pinnen der Versionen von Abhängigkeiten in den Prepare-Schritten
  • Dokumentation aller Setup-Schritte der Anwendung in der ci.yml
  • Testen des vollständigen Prepare- und Run-Zyklus zur Sicherstellung der Konsistenz
  • Verwendung von Nix für die deterministische Installation von Abhängigkeiten

Wann stattdessen Managed Containers in Betracht gezogen werden sollten

Managed Containers verwenden, wenn:

  • ein bestimmtes Basis-OS oder eine bestimmte Distribution benötigt wird
  • bereits vorhandene OCI-Images genutzt werden sollen
  • Abhängigkeiten für garantierte Reproduzierbarkeit vorab eingebettet sein sollen
  • bestimmte Pakete auf Systemebene benötigt werden, die über Nix nicht verfügbar sind

Konfiguration & Lebenszyklus

Codesphere Reactives werden über die Datei ci.yml im Repository konfiguriert. Umfassende Anleitungen zur Konfiguration und Verwaltung von Reactives finden sich hier: