1. Über Container-Automat

Container-Automat ist ein Generator von service-orientierten Anwendungen zu Demonstrationszwecken auf Basis deterministischer endlicher Automaten (abgekürzt DEA).

Der deterministische endliche Automat dient dabei zur Simulation der Anwendungslogik einer service-orientierten Anwendung, die neben den anwendungsspezifischen Komponenten auch einen Message-Broker, eine Datenbank und optionale Komponenten zur Protokollierung der Verarbeitung von Anfragen enthält, so dass relativ komplexe Konglomerate von Services möglich sind.

Die Idee hinter Container-Automat ist, auf einfache Art und Weise Beispielanwendungen generieren zu können,

  • zur Erkundung des Zusammenspiels von Services in Docker Containern.

  • um Erfahrung mit einem Message-Broker oder einer Datenbank zu sammeln.

  • die als Ausgangspunkt für Show-Cases oder Prototypen dienen können.

DEA

Getränkeautomat-Zustandsdiagramm

Services

Getränkeautomat-Services

2. Inhaltsverzeichnis

3. Container-Automat in Kürze

3.1. Ein Getränkeautomat als Beispiel

Das folgende Zustandsdiagramm gehört zu einem DEA, der einen Getränkeautomaten in vereinfachter Form modelliert. [1] [2]

Getränkeautomat-Zustandsdiagramm

Der DEA kann formal durch die Elemente (Q, ∑, δ, q0, F) beschrieben werden.

  • Die Zustandsmenge Q = {S1, S2, S3}

    • S1 entspricht 'Bereit für Getränkewahl (Selection)'

    • S2 entspricht 'Warten auf Zahlung (Payment) oder Abbruch (Abort)'

    • S3 entspricht 'Warten auf Entnahme (Removal) des Getränks'

  • Das Eingabealphabet ∑ = {S, P, A, R}

    • S entspricht 'Selection (Getränkewahl)'

    • P entspricht 'Payment (Zahlung)'

    • A entspricht 'Abort (Abbruch)'

    • R entspricht 'Removal (Getränkeentnahme)'

  • Die Übergangsfunktion δ mit den Zustandsübergängen:

    • δ(S1,S) → S2 entspricht 'Getränk wurde gewählt'

    • δ(S2,A) → S1 entspricht 'Kauf wurde abgebrochen'

    • δ(S2,P) → S3 entspricht 'Getränkepreis wurde gezahlt'

    • δ(S3,R) → S1 entspricht 'Getränk wurde entnommen'

  • Der Startzustand q0 = S1

  • Die Menge der Endzustände F = {S1}

Dieser DEA ist eines der Beispiele, die im Container-Automat Anwendungsgenerator, im Weiteren als Factory bezeichnet, zur Verfügung stehen. [3]

Die aus dem DEA generierte Anwendung besteht aus den Services, die im folgenden Diagramm dargestellt sind. [2]

Getränkeautomat-Services

Der unmittelbare Output der Factory ist ein ZIP-Archiv mit einem Maven-Projekt für die generierte Anwendung.

Das Projektarchiv enthält den Source für die Java-Programme, Dockerfiles, YAML-Konfigurationen für Docker Compose und Kubernetes sowie Shell-Scripte zum Build und zur Ausführung der Anwendung mit Docker und zur Bereitstellung auf Kubernetes. Grundlegende Informationen zur Vorgehensweise sind in der Datei README.md des Projektes zu finden.

Hinweis! Die Container-Automat Factory selbst ist open-source Software unter der Apache Lizenz Version 2.0. [4] Bitte beachten Sie jedoch, dass die generierten Anwendungen externe Dienste nutzen, wie den Message-Broker, die Datenbank und optional weitere. Abhängig von der Umgebung, in der die Anwendung ausgeführt wird, und der Organisation, die sie nutzt, können für diese Dienste unterschiedliche Lizenzierungsanforderungen gelten.

3.2. Merkmale von generierten Anwendungen

  • Die Anwendung als Ganzes implementiert den DEA.

  • Für jeden Zustand des DEA gibt es einen Service, der in Java mit Spring Boot implementiert ist.

  • Anfragen werden in Form von Eingabestrings für den DEA über eine REST-Schnittstelle entgegengenommen.

  • Für Zustandsübergänge werden Commands mittels Message-Broker an den Service des Zielzustands gesendet.

  • Die Verarbeitung kann anhand von Events über den Message-Broker protokolliert werden.

  • Optional können diese Events mit Logstash, Elasticsearch und Kibana verarbeitet werden.

  • Informationen über Anfragen und über die Verarbeitungsschritte werden in einer Datenbank gespeichert.

  • Sowohl der Message-Broker als auch die Datenbank können aus mehreren Systemen ausgewählt werden.

    • Unterstützte Message-Broker: ActiveMQ Artemis, Kafka und RabbitMQ.

    • Unterstützte Datenbanken: MongoDB, PostgreSQL und Redis.

  • Der Message-Broker, die Datenbank und die optionalen ELK-Services werden in Docker Containern gestartet.

  • Die Java-Programme für die Zustände des DEA können sowohl lokal gestartet werden, als auch in Docker Containern.

  • Die gesamte Anwendung kann als Cluster mit Docker Compose ausgeführt oder auf Kubernetes bereitgestellt werden.

3.3. Container-Automat bei GitHub

Die Container-Automat Factory ist open-source Software unter der Apache Lizenz Version 2.0 [4] und steht unter folgender URL als Repository bei GitHub zur Verfügung:

Hinweis! GitHub selbst hat eigene Nutzungsbedingungen und Datenschutzrichtlinien. Bitte machen Sie sich mit den dort geltenden Regeln vertraut, wenn Sie die GitHub Website besuchen oder dort angebotene Leistungen nutzen möchten.

Grundlegende Informationen zum Bauen und Ausführen der Container-Automat Factory in einem Docker Container sind in der Datei README.md des Source-Repositories enthalten.

Weitergehende Informationen über die Verwendung der Factory und die darin enthaltenen Beispiele für deterministische endliche Automaten werden unabhängig von dem Source-Repository bei GitHub nur hier, d.h. im Rahmen dieser Website unter der Domain www.container-automat.de gepflegt. Die im Detail behandelten Themen sind im oben stehenden Inhaltsverzeichnis aufgelistet.

3.4. Über den Autor

Autor des Projektes Container-Automat ist Jörg Schließer, ein

Softwareentwickler aus Leidenschaft

Angaben zum Autor als Anbieter dieser Website, Informationen zu Nutzungsbedingungen und Haftungshinweisen sowie Danksagungen finden Sie auf folgender Seite:



1. Ein sehr ähnlicher Getränkeautomat wird Stand April 2024 auch in der deutschsprachigen Wikipedia auf der Seite mit dem Titel 'Deterministischer endlicher Automat' als Beispiel beschrieben. Bei der Variante in der Container-Automat Factory ist allerdings die Reihenfolge von Münzeinwurf und Getränkewahl umgekehrt.
2. Die Diagramme auf dieser Seite wurden mit UMLet erstellt, einem freien, open-source UML-Tool. Detaillierte Informationen zu UMLet finden Sie auf der UMLet Website.
3. Die Symbole S, P, A und R sind aus den englischen Bezeichnungen hergeleitet, da die Oberfläche der Container-Automat Factory und die dort vorhandenen Beispiele derzeit ausschließlich in Englisch gehalten sind. Eine Lokalisierung ist für eine zukünftige Version angedacht.
4. Eine Kopie der Apache Lizenz Version 2.0 ist unter folgender URL verfügbar: https://www.apache.org/licenses/LICENSE-2.0.