SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Der Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsDer Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsQAware GmbH
 
Making the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICMaking the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICQAware GmbH
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinStephan Kaps
 
Kubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container OrchestriererKubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container OrchestriererQAware GmbH
 
Agile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more oftenAgile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more oftenpingworks
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Quarkus Quickstart
Quarkus QuickstartQuarkus Quickstart
Quarkus QuickstartQAware GmbH
 
PHP Deployment mit Ansible
PHP Deployment mit AnsiblePHP Deployment mit Ansible
PHP Deployment mit AnsibleMichael Döhler
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapStephan Kaps
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?punkt.de GmbH
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneVorname Nachname
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020Stephan Kaps
 
Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...
Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...
Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...AWS Germany
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 

Tendances (20)

Der Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsDer Status Quo des Chaos Engineerings
Der Status Quo des Chaos Engineerings
 
Making the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICMaking the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUIC
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 
Kubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container OrchestriererKubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container Orchestrierer
 
Agile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more oftenAgile Breakfast - If it hurts do it more often
Agile Breakfast - If it hurts do it more often
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
 
Quarkus Quickstart
Quarkus QuickstartQuarkus Quickstart
Quarkus Quickstart
 
PHP Deployment mit Ansible
PHP Deployment mit AnsiblePHP Deployment mit Ansible
PHP Deployment mit Ansible
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der Schiene
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
 
Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...
Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...
Webinar Neues von der re:invent 2013 Teil 1: PostgreSQL RDS, CloudTrail, neue...
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 

Similaire à Technische Gründe für schlechte Entwicklungsperformance

GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenGjero Krsteski
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsOPEN KNOWLEDGE GmbH
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenPhillip Oertel
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023Johannes Kleinlercher
 
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesChristian Güdemann
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsRamon Anger
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftBart Zwager
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performancegedoplan
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuCédric Hüsler
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen....NET User Group Rhein-Neckar
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 
Maschinelle Übersetzung im Erstellprozess von Displaytexten
Maschinelle Übersetzung im Erstellprozess von DisplaytextenMaschinelle Übersetzung im Erstellprozess von Displaytexten
Maschinelle Übersetzung im Erstellprozess von DisplaytextenKerstin Berns
 
Google Partners, Mobile Websites-Zertifizierung
Google Partners, Mobile Websites-ZertifizierungGoogle Partners, Mobile Websites-Zertifizierung
Google Partners, Mobile Websites-ZertifizierungRichard Joos
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsRamon Anger
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: SecurityMayflower GmbH
 

Similaire à Technische Gründe für schlechte Entwicklungsperformance (20)

GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-Anwendungen
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.js
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen Projekten
 
1. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.20231. Cloud Native Meetup Innsbruck, 23.11.2023
1. Cloud Native Meetup Innsbruck, 23.11.2023
 
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPages
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps Teams
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performance
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neu
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Maschinelle Übersetzung im Erstellprozess von Displaytexten
Maschinelle Übersetzung im Erstellprozess von DisplaytextenMaschinelle Übersetzung im Erstellprozess von Displaytexten
Maschinelle Übersetzung im Erstellprozess von Displaytexten
 
Google Partners, Mobile Websites-Zertifizierung
Google Partners, Mobile Websites-ZertifizierungGoogle Partners, Mobile Websites-Zertifizierung
Google Partners, Mobile Websites-Zertifizierung
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps Teams
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 

Plus de OPEN KNOWLEDGE GmbH

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIOPEN KNOWLEDGE GmbH
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudOPEN KNOWLEDGE GmbH
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationOPEN KNOWLEDGE GmbH
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. OPEN KNOWLEDGE GmbH
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoOPEN KNOWLEDGE GmbH
 
Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenOPEN KNOWLEDGE GmbH
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeOPEN KNOWLEDGE GmbH
 
Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten SystemenOPEN KNOWLEDGE GmbH
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingOPEN KNOWLEDGE GmbH
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!OPEN KNOWLEDGE GmbH
 
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...OPEN KNOWLEDGE GmbH
 
Die Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von MicroservicesDie Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von MicroservicesOPEN KNOWLEDGE GmbH
 
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftMaschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftOPEN KNOWLEDGE GmbH
 

Plus de OPEN KNOWLEDGE GmbH (20)

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
 
Nie wieder Log-Files!
Nie wieder Log-Files!Nie wieder Log-Files!
Nie wieder Log-Files!
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud.
 
API Expand Contract
API Expand ContractAPI Expand Contract
API Expand Contract
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
 
Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten Architekturen
 
KI und Architektur
KI und ArchitekturKI und Architektur
KI und Architektur
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale Netze
 
Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten Systemen
 
Business-Mehrwert durch KI
Business-Mehrwert durch KIBusiness-Mehrwert durch KI
Business-Mehrwert durch KI
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!
 
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
 
Die Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von MicroservicesDie Matrix: Enterprise-Architekturen jenseits von Microservices
Die Matrix: Enterprise-Architekturen jenseits von Microservices
 
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftMaschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
 

Technische Gründe für schlechte Entwicklungsperformance

  • 1. 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
  • 2. 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
  • 3. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
  • 4. 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
  • 5. 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
  • 6. 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!
  • 7. 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”
  • 8. 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
  • 9. 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
  • 10. 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!
  • 11. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck Und was hat Quarkus jetzt bitte damit zu tun?
  • 12. 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
  • 13. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck Was ist Quarkus
  • 14. 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”
  • 15. 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”
  • 16. 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!
  • 17. 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