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.
2. Inhaltsverzeichnis
Work in Progress … Weitere Seiten mit detaillierten Informationen zu einzelnen Aspekten von Container-Automat sind noch in Arbeit. Hier wird um Nachsicht gebeten.
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]
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]
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.
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:
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:
Weiter mit Die Container-Automat Factory