SOFTWARE
P I C K N I C K#
Technische Gründe für schlechte
Entwicklungsperformance
Thorben Kuck, OPEN KNOWLEDGE GmbH
www.softwarepicknick.de @_openknowledge @openknowledge.de @openknowledg
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Warum eine manche Applikation so lange braucht zum Starten und
was wir dagegen tun könnten
Technische Gründe für
schlechte
Entwicklungsperformance
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Die drei Phasen des Wartens
Startup Time
First Response
Time
Drücke
auf den
grünen
Knopf
Runtime
Warte bis die
Applikation
sagt
“Ich bin
hochgefahren”
Sende einen
Request und
warte bis der
erste Response
kommt
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Startup Time
Suche alle Notwendigen
Klassen zusammen
Erstelle Proxy
Klassen
Löse
Abhängigkeiten
auf und validiere
sie
Klassen
Metadaten
analysieren
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Startup Time
● Wir wollen wenig Code schreiben (nur eine Zeile Code wenn möglich)
○ Reduzierung von “Zeremoniellen Code”
○ Aber: Wenig Code muss viel Code erzeugen
● Dynamische Metaprogrammierung wird genutzt
○ Klassen suchen andere annotierte Klassen
○ Neue Klassen entstehen
○ Bestehende Funktionalität wird erweitert
- Aber warum erst zur Laufzeit?
- Geht das auch schon vorher?
- Ja! Mit Annotation Processing!
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Annotation Processing
● Wird direkt im Compiler aufgerufen
● Klassen sind bereits zerlegt in AST-Repräsentation
● Metadaten sind analysiert
● API bietet Schnittstelle zum Erstellen neuer Klassen
● Fehler können direkt an den Compiler gegeben werden
“Pluggable Annotation Processing API”
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Startup Time
Suche alle Notwendigen
Klassen zusammen
Erstelle Proxy
Klassen
Löse
Abhängigkeiten
auf und validiere
sie
Klassen
Metadaten
analysieren
Erstelle Proxy
Klassen
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Annotation Processing
Suche alle Notwendigen
Klassen zusammen
Erstelle Proxy
KlassenLöse
Abhängigkeiten
auf und validiere
sie
Klassen
Metadaten
analysieren
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Annotation Processing
● Mehrere Frameworks existieren auch hier
○ JavaPoet
○ Google Auto Service
○ …
● Rekursion durch mehrere Runden
○ Erstellte Klassen gehen zurück an den Compiler
Aber damit noch nicht genug!
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Und was hat Quarkus
jetzt bitte damit zu tun?
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
“Amazingly fast boot time, incredibly low RSS memory
(not just heap size!) offering near instant scale up and high density memory
utilization in container orchestration platforms like Kubernetes.”
=> Verbraucht wenig Speicher und fährt sehr schnell hoch
Was ist Quarkus
SUPERSONIC SUBATOMIC JAVA
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Was ist Quarkus
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Wie funktioniert das?
● First Class Support for Graal/SubstrateVM
● Build Time Metadata Processing
● Reduction in Reflection Usage
● Native Image Pre Boot
“We use a technique we call compile time boot”
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Wie funktioniert das?
● First Class Support for Graal/SubstrateVM
● Build Time Metadata Processing
● Reduction in Reflection Usage
● Native Image Pre Boot
“We use a technique we call compile time boot”
Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Sollten wir jetzt immer Quarkus nutzen?
● Besonders bei Framework Design: Ja, bitte!
○ Leichter Fehler sehen
○ Mehr Transparenz im Code
● Standard Enterprise Entwicklung? Hängt davon ab
○ Ihr könnt Quarkus oder eine ähnliche Technologie nutzen? Vielleicht..
○ Ihr müsstet Raum und Zeit dafür ändern? Nein!
SOFTWARE
P I C K N I C K#
Du hast Fragen zum Thema?
Schreibe uns eine E-Mail an:
softwarepicknick@openknowledge.de
Unsere Experten melden sich persönlich bei dir.
www.softwarepicknick.de @_openknowledge @openknowledge.de @openknowledg

Technische Gründe für schlechte Entwicklungsperformance

  • 1.
    SOFTWARE P I CK N I C K# Technische Gründe für schlechte Entwicklungsperformance Thorben Kuck, OPEN KNOWLEDGE GmbH www.softwarepicknick.de @_openknowledge @openknowledge.de @openknowledg
  • 2.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Warum eine manche Applikation so lange braucht zum Starten und was wir dagegen tun könnten Technische Gründe für schlechte Entwicklungsperformance
  • 3.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck
  • 4.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Die drei Phasen des Wartens Startup Time First Response Time Drücke auf den grünen Knopf Runtime Warte bis die Applikation sagt “Ich bin hochgefahren” Sende einen Request und warte bis der erste Response kommt
  • 5.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Startup Time Suche alle Notwendigen Klassen zusammen Erstelle Proxy Klassen Löse Abhängigkeiten auf und validiere sie Klassen Metadaten analysieren
  • 6.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Startup Time ● Wir wollen wenig Code schreiben (nur eine Zeile Code wenn möglich) ○ Reduzierung von “Zeremoniellen Code” ○ Aber: Wenig Code muss viel Code erzeugen ● Dynamische Metaprogrammierung wird genutzt ○ Klassen suchen andere annotierte Klassen ○ Neue Klassen entstehen ○ Bestehende Funktionalität wird erweitert - Aber warum erst zur Laufzeit? - Geht das auch schon vorher? - Ja! Mit Annotation Processing!
  • 7.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Annotation Processing ● Wird direkt im Compiler aufgerufen ● Klassen sind bereits zerlegt in AST-Repräsentation ● Metadaten sind analysiert ● API bietet Schnittstelle zum Erstellen neuer Klassen ● Fehler können direkt an den Compiler gegeben werden “Pluggable Annotation Processing API”
  • 8.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Startup Time Suche alle Notwendigen Klassen zusammen Erstelle Proxy Klassen Löse Abhängigkeiten auf und validiere sie Klassen Metadaten analysieren Erstelle Proxy Klassen
  • 9.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Annotation Processing Suche alle Notwendigen Klassen zusammen Erstelle Proxy KlassenLöse Abhängigkeiten auf und validiere sie Klassen Metadaten analysieren
  • 10.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Annotation Processing ● Mehrere Frameworks existieren auch hier ○ JavaPoet ○ Google Auto Service ○ … ● Rekursion durch mehrere Runden ○ Erstellte Klassen gehen zurück an den Compiler Aber damit noch nicht genug!
  • 11.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Und was hat Quarkus jetzt bitte damit zu tun?
  • 12.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck “Amazingly fast boot time, incredibly low RSS memory (not just heap size!) offering near instant scale up and high density memory utilization in container orchestration platforms like Kubernetes.” => Verbraucht wenig Speicher und fährt sehr schnell hoch Was ist Quarkus SUPERSONIC SUBATOMIC JAVA
  • 13.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Was ist Quarkus
  • 14.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Wie funktioniert das? ● First Class Support for Graal/SubstrateVM ● Build Time Metadata Processing ● Reduction in Reflection Usage ● Native Image Pre Boot “We use a technique we call compile time boot”
  • 15.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Wie funktioniert das? ● First Class Support for Graal/SubstrateVM ● Build Time Metadata Processing ● Reduction in Reflection Usage ● Native Image Pre Boot “We use a technique we call compile time boot”
  • 16.
    Technische Gründe fürschlechte Entwicklungsperformance | Thorben Kuck Sollten wir jetzt immer Quarkus nutzen? ● Besonders bei Framework Design: Ja, bitte! ○ Leichter Fehler sehen ○ Mehr Transparenz im Code ● Standard Enterprise Entwicklung? Hängt davon ab ○ Ihr könnt Quarkus oder eine ähnliche Technologie nutzen? Vielleicht.. ○ Ihr müsstet Raum und Zeit dafür ändern? Nein!
  • 17.
    SOFTWARE P I CK N I C K# Du hast Fragen zum Thema? Schreibe uns eine E-Mail an: softwarepicknick@openknowledge.de Unsere Experten melden sich persönlich bei dir. www.softwarepicknick.de @_openknowledge @openknowledge.de @openknowledg