© Excellent backgrounds/Shutterstock.com
Teil 2: Cloud Foundry Services mithilfe von Spring Cloud Connectors verwenden

Wie der Zustandslose Zustände managt


Ein Merkmal, das jede Cloud-App aufweisen sollte, ist die Zustandslosigkeit. Zustände sollen in externen Services persistiert werden. Um diese Services und deren Anbindung an unsere App aus dem ersten Teil der Serie geht es in diesem Artikel.

Artikelserie

Teil 1: Cloud-Foundry-Architektur und Hello-World-App

Teil 2: Verwendung von Cloud Foundry Services mithilfe von Spring Cloud Connectors

Zunächst wollen wir uns mit einer typischen Anforderung an eine Cloud-App befassen: die Zustandslosigkeit. Damit ist gemeint, dass eine App-Instanz keinen eigenen Zustand hat. So kann die App beliebig auf mehrere Instanzen hoch- und wieder runterskaliert werden. Ein klassischer Fall, in dem eine App-Instanz lokale Zustände aufweist, ist die Verwendung von HTTP-Sessions. Skalieren wir unsere App beispielsweise um eine Instanz runter, verlieren alle Benutzer ihre Session, die vorher auf dieser einen Instanz waren. Deshalb ist es besser, die Session zentral zu persistieren und sie über alle Instanzen hinweg zu teilen.

Command Line Interface

Wer den letzten Artikel der Serie verpasst hat oder sich nicht mehr an die Command-Line-Interface-Befehle [1] erinnern kann, findet untenstehend eine Auflistung der wichtigsten Cloud-Foundry-Kommandos. Bei dem API-URL wird angenommen, dass ein Pivotal-Web-Services-Account [2] registriert wurde. Wird eine andere Umgebung verwendet, muss der URL entsprechend angepasst werden.

  • API anvisieren: cf api api.run.pivotal.io

  • Einloggen: cf login

  • JAR pushen (installieren): cf push my-unique-app-name -p my.jar

  • Infos zu einer App: cf app my-unique-app-name

  • Auf zwei Instanzen skalieren: cf scale my-unique-app-name -i 2

  • Umgebungsvariable setzen: cf set-env my-unique-app-name ENV_VAR value

  • App neu starten: cf restart my-unique-app-name

Dies klingt nach Mehraufwand, der in klassischen Architekturen nicht nötig wäre. Mit Spring Boot und Spring Cloud ist dieser aber minimal. Um das zu zeigen, erweitern wir die Hello-Cloud-Foundry-App [3] aus dem letzten Artikel mit einer Session, die in einen Redis-Service [4] ausgelagert wird. Redis ist die wohl am weitesten verbreitete In-Memory-Key/Value-Datenbank. Sie kann als Cache, Message Broker oder als Datenbank für einfache Strukturen verwendet werden.

Zuerst schreiben wir unseren HelloController so um, dass der zufällig generierte Wert nicht in den Speicher, sondern in die HttpSession gespeichert wird (Listing 1). Dies wird uns noch nichts nützen, da die Session ohne Zusatzkonfiguration in jeder Instanz...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang