Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems

2b3056649bc1f58233eb3c7e54c5cf17?s=47 Dirk Weil
September 15, 2021

Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems

Slides vom Herbstcampus 2021

2b3056649bc1f58233eb3c7e54c5cf17?s=128

Dirk Weil

September 15, 2021
Tweet

Transcript

  1. Java on Tracks Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems

    Dirk Weil GEDOPLAN GmbH
  2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Consulting, coaching,

    concepts, reviews, development GEDOPLAN IT Training Trainings in Berlin, Bielefeld, on-site JEE since 1998 Speaker and author Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 2 gedoplan.de
  3. Die Ausgangslage Job Dachboden gedoplan.de Java on Tracks - Modellbahnsteuerung

    mit JEE, MicroProfile und self-contained Systems 3
  4. v5t11 Visual Train Control VT 11.5 http://commons.wikimedia.org/wiki/ File:601_Verkehrsmuseum_Nuernberg_11092010_complete_train.JPG gedoplan.de Java

    on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 4
  5. Aufgaben von V5T11 Stellwerk Führerstand gedoplan.de Java on Tracks -

    Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 5
  6. Technische Basis: Digitalsteuerung Selectrix Keine getrennten Stromkreise Fahrspannung mit aufgeprägtem

    Digitalsignal Loks enthalten Decoder Fahrstufe Richtung Fahrlicht Zusatzfunktionen (Sound etc.) Systeme meist multiprokollfähig SX (Selectrix) DCC (NMRA-Standard) MM (Motorola/Märklin) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 6 gedoplan.de
  7. Technische Basis: Digitalsteuerung Selectrix Gleise werden mit Besetztmeldern überwacht Weichen

    und Signale werden mit Funktionsdecodern gesteuert Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 7 gedoplan.de 1 Byte 8 Gleise 1 Byte 8 Weichen / Signale
  8. Legacy-Anwendung Java-EE-6 JBoss 7 Monolith GEDOPLAN Code Camp 2012 Java

    on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 8 gedoplan.de
  9. Domäne Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und

    self-contained Systems 9 gedoplan.de Gleis Lok Weiche Signal Lokdecoder Funktionsdecoder Besetztmelder Fahrstraße Gleisverbindung
  10. Fahrstraßen- verwaltung Fahrzeug- verwaltung Statusverwaltung Domäne Java on Tracks -

    Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 10 gedoplan.de Lok Gleis Weiche Signal Lokdecoder Funktionsdecoder Besetztmelder Fahrstraße Gleisverbindung Lok Gleis Weiche Signal Lokdecoder Funktionsdecoder Besetztmelder Fahrstraße Gleisverbindung Gleis Weiche Signal Lokdecoder , Bounded Contexts
  11. Microservices, Self-contained Systems Microservice Modularisierungsansatz hohe innere Kohärenz geringe äußere

    Kopplung passt gut zu Bounded Context "Micro" nicht weiter spezifiziert SCS Autonome (Teil-)Anwendung Alleine lauffähig (Vorsicht bei synchroner Kommunikation!) Eigene Datenhaltung Eigene UI Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 11 gedoplan.de
  12. v5t11-SCSs Teilanwendungen als SCSs Quarkus Jakarta EE + MicroProfile Persistenz

    mit JPA, Hibernate, PostgreSQL Synchrone Kommunikation via REST API und MP Rest Client Asynchrone Kommunikation mit MP Reactive Messaging, MQTT Web-UI mittels JSF (!) (Altlast derzeit noch: Stellwerk hat Swing-UI ) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 12 gedoplan.de
  13. Statusverwaltung v5t11-status Anbindung Digitalzentrale mit serieller Schnittstelle / USB 

    fazecast.github.io/jSerialComm/ Abstraktion Selectrix-"Bytes"  Gleise, Signale, Weichen, … Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 13 gedoplan.de 1 0 0 1 0 0 0 1
  14. Statusverwaltung v5t11-status REST-API für Signale etc. Web-UI für Administration und

    Debugging Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 14 gedoplan.de @Path("signal") @Dependent public class SignalEndpoint { @PUT @Path("{bereich}/{name}") @Consumes(MediaType.MEDIA_TYPE_WILDCARD) public void putSignalStellung(@PathParam("bereich") String
  15. Fahrstraßenverwaltung v5t11-fahrstrassen Reservieren und Freigeben von Fahrstraßen Fahrstraßenauflösung bei/nach Zugdurchfahrt

    Vorsignalautomatik Vorsignale folgen dem nächsten Hauptsignal im Fahrweg Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 15 gedoplan.de
  16. Fahrstraßenverwaltung v5t11-fahrstrassen MP Rest Client zum Stellen von Signalen etc.

    MP Reactive Messaging für asynchrone Änderungsmeldungen Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 16 gedoplan.de @RegisterRestClient(configKey = "v5t11.status") public interface StatusGateway { @PUT @Path("signal/{bereich}/{name}") @Consumes(MediaType.TEXT_PLAIN) void signalStellen(@PathParam("bereich") String bereic @Incoming("gleis-in") void gleisChanged(byte[] msg) { String json = new String(msg); @Inject @Channel("gleis-out") Emitter<String> gleisEmitter; public void publish(Gleis gleis) { String json = … this.gleisEmitter.send(json);
  17. Fahrzeugverwaltung v5t11-fahrzeuge MP Rest Client und MP Reactive Messaging analog

    Web-UI zur Fahrzeugkonfiguration und Steuerung mit JSF Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 17 gedoplan.de
  18. Visualisierung v5t11-leitstand Alte Swing-Anwendung mit Quarkus-Unterbau MP Rest Client und

    MP Reactive Messaging wie zuvor Demo! Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 18 gedoplan.de
  19. Weitere Planung Fahrzeug-Verfolgung Welches Fahrzeug steht/fährt wo? Teilautomatisierung Automatisches Abstellen

    im Schattenbahnhof Ausblenden der Geräusche in unsichtbaren Abschnitten Betrieb als Docker-Container in Kubernetes Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 19 gedoplan.de
  20. Erfahrungen, Rückblick Erste EE-Version war ein Monolith Java EE 6,

    JBoss 7 Aufsplittung in SCSs  überschaubare Einheiten  Entkopplung der Datenmodelle  zügiges (Re-) Deployment  teilredundante Daten  Kommunikationsaufwand Quarkus  schnelle Entwicklungszyklen  schnell wachsendes Ökosystem MicroProfile  simple und leistungsfähige Bausteine (Config, Rest Client, …)  leichte Einbindung von Message Brokern (MQTT, AMQP, …)  Reactive Messaging abstrahiert nicht weit genug (z. B. Nutzlast) Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 20 gedoplan.de
  21. … und was ist mit dem "echten Leben"? Steuerung eines

    fahrerlosen Transportsystems (FTS) gedoplan.de Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 21
  22. More github.com/dirkweil/v5t11 Projekt www.gedoplan.de Trainings in Berlin, Bielefeld, inhouse www.gedoplan.de

    Reviews, Coaching, … Blog  dirk.weil@gedoplan.de @dirkweil Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 22 gedoplan.de