Generierte Anwendungen ausführen
Service-Typen
Die Anwendung als Ganzes implementiert zur Laufzeit den zur Generierung verwendeten DEA. Die dazu gestarteten Services können in 2 Gruppen unterteilt werden:
-
Anwendungsspezifische Services
-
Diese Services werden durch individuell generierte Java-Programme in Spring Boot implementiert.
-
Für jeden Zustand des DEA wird ein eigener Service gestartet. Dabei handelt es sich immer um dasselbe Java-Programm, im Folgenden bezeichnet als State-Programm.
-
Anfragen werden in Form von Eingabestrings für den DEA über eine REST-Schnittstelle entgegengenommen, die durch ein separates Java-Programm bereitgestellt wird, im Folgenden bezeichnet als Entry-Programm.
-
-
Allgemeine System-Services
-
Diese Services werden durch individuell konfigurierte Anwendungen ausgewählter Anbieter bereitsgestellt.
-
Über einen Message-Broker werden Command-Messages für Zustandsübergänge des DEA an die State-Programme gesendet, außerdem Event-Messages zur Protokollierung des Ablaufs der Verarbeitung.
-
In einer Datenbank werden Informationen über die Anfragen und die Verarbeitungsschritte dauerhaft gespeichert.
-
Optional verarbeiten weitere Services die oben genannten Event-Messages zur Protokollierung. [1]
-
Varianten zur Ausführung und Laufzeitumgebungen
Auf den folgenden Seiten werden drei Möglichkeiten beschrieben, wie Anwendungen, die mit der Container-Automat Factory generiert wurden, ausgeführt werden können:
-
alle Services mit Docker Compose
-
alle Services in einem Kubernetes-Cluster
-
Java-Programme lokal und die anderen Services in Docker-Containern
Dabei wird das Hauptaugenmerk auf die Ausführung mit Docker Compose gelegt, da hier keine weiteren Anforderungen erfüllt sein müssen. Lediglich Docker selbst muss zur Verfügung stehen.
Datei- und Verzeichnisnamen in Anwendungsprojekten
Einige Datei- und Verzeichnisnamen werden basierend auf dem Anwendungsnamen erstellt, der bei der Generierung angegeben wurde. Wenn solche Namen auf den folgenden Seiten im Text erwähnt oder in Beispielen für Kommandos genannt werden, wird für den Namen der Anwendung der folgende Platzhalter verwendet:
{anwendungsname}
Davon abgesehen werden bei der Erläuterung von konkreten Kommandos oder Beispielen für Ausgaben häufig die Datei- und Verzeichnisnamen so angegeben, wie sie lauten, wenn Sie die Beispielanwendung für den Getränkeautomaten mit dem Namen BeverageVending erstellt haben, wie im Abschnitt Ein Service-Projekt auf Basis eines DEA erstellen beschrieben.
Beispiel 1: Verzeichnisnamen im Stammverzeichnis des Projektes
Unter Verwendung des Platzhalters {anwendungsname} enthält das Stammverzeichnis die folgenden Einträge:
{anwendungsname}-core (Directory)
{anwendungsname}-entry (Directory)
{anwendungsname}-state (Directory)
dockerbuild (Directory)
dockercompose (Directory)
kubernetes (Directory)
localrun (Directory)
pom.xml
README.md
Im Falle der Beispielanwendung BeverageVending liegt konkret folgender Verzeichnisinhalt vor:
beveragevending-core (Directory)
beveragevending-entry (Directory)
beveragevending-state (Directory)
dockerbuild (Directory)
dockercompose (Directory)
kubernetes (Directory)
localrun (Directory)
pom.xml
README.md
Beispiel 2: Script-Files zur Erstellung der Docker-Images der Anwendung
Im Unterverzeichnis dockerbuild befinden sich eine CMD-Datei für die Windows-Eingabeaufforderung und eine SH-Datei für die Linux-Shell, die aufgerufen werden können, um die Docker-Images der Anwendung zu erstellen. Unter Verwendung des Platzhalters {anwendungsname} lauten die Dateinamen folgendermaßen:
dockerbuild-{anwendungsname}.cmd
dockerbuild-{anwendungsname}.sh
Im Falle der Beispielanwendung BeverageVending lauten die Dateinamen konkret folgenermaßen:
dockerbuild-beveragevending.cmd
dockerbuild-beveragevending.sh
Nächste Schritte
-
Varianten für die Ausführung: