- MongoDB uri als Umgebungsvariable
- Graal und noGraal in eine Anwendung kombinieren und verscheidene Maven Profile für Graal und noGraal anlegen
- Daten bei POST direkt bei request mitgeben, nicht mehr über GET von nodejs-api holen
- Konstante Last konfigurieren über extra App in Cloud Run mit verschiedene Testszenarien
- über parameter steuerbar (anfragen, endpunkte,...)
- mit Verlaufsdiagrammen für einzelne Szenarien
- benchmark warm up inklusive, hier wird warm up Zeit ignoriert
- Test-Umgebung dokumentieren (Anzahl CPUs, Memory)
- GraalVM image auf Windows bauen: Wie? + Tutorial/Anleitung
- README mit build prozess vervollständigen
- README mit prozess für local builden
- Root pom.xml, dass alles auf einmal gebaut werden kann
- Übung gestalten
- Automatische Benchmark laufen lassen mit Tool (Lecture-Utilizer mehrmals aufrufen)
- docker compose datei übersichtlicher machen
- stromverbrauch in dashboard einbauen
- python requirements.txt für auto install von requirements
- MongoDB Doku in Doku einbauen (mind. automatisches Setup von DB)
- Verschiedene Tabellen in DB, sodass jeder Student eigene Tabelle bekommt (automatisiert in terraform)
- Übersichts Dashboard für relevanten Metriken (für einzelne Teams?)
- Terraform Skripte zum deployment der Anwendung(en) erstellen, alles in einem deployen (Graal und noGraal und jeweils 1 Tester, gesamt 4 seperate Anwendungen)
- Nutzer für Studierende anlegen Terraform
- Tutorial / Übung aufbauen
- Bücher List auf 100 erweitern (gute baseline)
- (Unnötige) Liste aus else Block ausbauen
- (Docker Container ressourcen begrenzen zur konsistenz)?
- Util Anwendung: Zeit messen die eine bestimmte Anzahl von Anfragen dauert und ausgeben
- Offizielles Maven Plugin für GraalVm verwenden anstelle der lokal installierten Version
- Umgebungsvariablen von Dockerfile zu docker compose verschieben
- SingleInsert zu Util Anwendung bewegen: Anzahl der Bücher pro request festlegen
- Anzahl der Bücher: Zusätzlicher Parameter
- Parallel Bücher Senden: Anzahl der User die gleichzeitig an die Anwendung Bücher schicken
- Evtl von csv zu JSON wechseln
- README in lecture-utilizer vervollständigen
- In Doku/Tutorial Umgebungsvariablen setzen für MongoDB Connection String, Java, GraalVM
- In Doku/Tutorial Erklärung Maven Profile
- In Doku/Tutorial Erklärung Testszenarios
Leitfragen: Wann ist GraalVM besser als die native JVM? Bei welchen Anwendungen würde eine Umstellung Sinn machen? Unterschiede zwischen Community und Enterprice Version von GraalVM?
"Soft Facts": Auswirkungen auf die Entwicklung, wie kompliziert ist diese, Debugging, Wartbarkeit
Auswirkungen von GraalVM vs nativ auf die folgenden Eigenschaften.
- Build zeit (viel builden vs wenig builden)
- Image Ladezeit (größe des Image: Festplattenplatz / Netzwerkauslastung)
- Startzeit (unabhängig von Image Ladezeiten)
- wenig Komonenten
- ohne reflection (micronaut)
- mit reflection (springboot)
- viele Komonenten
- ohne reflection (micronaut)
- mit reflection (springboot)
- künstlich: Daten aus DB laden bei Start
- wenig Komonenten
- Datenverarbeitung / Algorithmen (Vorteile von JIT compiler ausnutzen, z.B. reguläre Ausdrücke)
- viele requests (parallel oder seriell)
- Lange vs kurze requests (Latenz)
- wenige requests (parallel oder seriell)
- Lange vs kurze requests (Latenz)
- viele requests (parallel oder seriell)
- Zeit zum herunterfahren der Anwendung
Qualitative Fragestellungen:
- Wie sieht Debugging von native Images aus? (Evtl. Antwort: Größeres Image, kann sogar verlangsamen) link
- Auswirkung auf den täglichen Entwicklungsprozess (Wartbarkeit des Codes)
Metriken:
- CPU-Zeit (s oder ms)
- CPU-Utilization
- Memory-Total
- Heap
- Start up Zeit
- Latenzen
Aktuelles Szenario:
- wenige, einfache requests (zu kurz für Cloud Metriken)