Modul 321 Alle Aufgaben

Aufgabe 4: Vom Monolithen zu Microservices: TrackZilla & Spring Data REST

Zielsetzung

In dieser Aufgabe vollziehen Sie den Schritt von einer monolithischen Anwendung zu einer verteilten Microservice-Architektur. Am Beispiel des Bugtrackers TrackZilla untersuchen Sie, wie bestehende Fachdomänen geschnitten werden, wie Spring Data REST (@RepositoryRestResource) Standard-Endpunkte bereitstellt und welche Hürden entstehen, wenn Entitäten über Servicegrenzen hinweg verknüpft sind.


Material & Vorlagen

Alle benötigten Dateien finden Sie im Aufgabenordner:


Die Fachdomänen von TrackZilla

TrackZilla verwaltet Fehlerberichte und Aufgaben für Softwareanwendungen. Das System gliedert sich in drei Kernbereiche:

  1. Applications: Welche Software-Applikationen werden betreut? Wer ist zuständig (Owner)?
  2. Users: Welche Benutzer und Rollen existieren im System?
  3. Tickets: Welche Bugs oder Aufgaben gehören zu welcher Applikation und wem sind sie zugewiesen?

Im Monolithen liegen alle Tabellen in einer einzigen relationalen Datenbank und sind über Fremdschlüssel verknüpft. In der Microservice-Variante erhält jede Domäne einen eigenen Service und eine eigene Datenhaltung.

Service Port Verantwortung
ApplicationCatalog 8081 Verwaltung von Applikationen und Metadaten
TicketManagement 8082 Verwaltung von Tickets, Status und Zuweisungen
UserManagement 8083 Verwaltung von Personen, Kontaktdaten und Rollen

Vorgehen

Teil 1: Projektstruktur einrichten

  1. Entpacken Sie bugtracker25-Ticket.zip und öffnen Sie den Ordner in IntelliJ IDEA als Maven-Projekt.
  2. Kontrollieren Sie im Maven-Toolfenster, ob alle Module erkannt wurden (bei Bedarf «Reload All Maven Projects» ausführen).
  3. Öffnen Sie im Modul TicketManagement das Interface TicketRepository. Beachten Sie die Annotation @RepositoryRestResource. Für normale CRUD-Operationen existiert kein eigener @RestController.

Teil 2: Spring Data REST untersuchen

Spring Data REST nimmt ein normales Repository und stellt automatisch eine Hypermedia-API (HATEOAS / HAL) bereit.


Teil 3: Services starten

Im Monolithen startet eine einzige main()-Methode das gesamte System. Bei Microservices besitzt jeder Service eine eigene Starterklasse.


Teil 4: Testen mit Postman

  1. Importieren Sie die Datei 11.1_MicroServices-SpringDataRest.postman_collection.json in Postman.
  2. Führen Sie die vorbereiteten Abfragen aus:

Teil 5: Beziehungen zwischen Services (Complex Relations)

Im Monolithen lässt sich in Java direkt ticket.getApplication().getOwner().getName() aufrufen, da die relationale Datenbank die Tabellen über JOINs verbindet.

Bei getrennten Services funktioniert dieser direkte Zugriff nicht mehr:


Hinweise zur Fehlerbehebung