SlideShare a Scribd company logo

HTTP/2 – Ist das auch gut für java-basierte Webservices?

Die neue Version 2 des HTTP-Protokolls macht das Netz schneller. Dazu nutzt es viele ausgefeilte technische Raffinessen: Request-Multiplexing, komprimierte Protokoll-Metadaten und Server-Push. All dies macht das Surfen sehr viel angenehmer und sorgt für eine bessere User-Experience. HTTP/2 zielt darauf ab, die Netzbandbreite besser auszunutzen. Profitieren auch SOAP- und RESTful-Webservices vom neuen HTTP? HTTP/2 bringt Mehraufwand für die Entwickler. Lohnt sich das am Ende? Meist schon, es gibt aber auch Aspekte, die einen echt Nerven kosten.

1 of 39
Download to read offline
HTTP/2 – Ist das auch gut
für java-basierte
Webservices?
JAN WEINSCHENKER
20. Februar 2018 @JANWEINSCHENKER 1
Agenda
20. Februar 2018 @JANWEINSCHENKER 2
1. HTTP von damals bis heute
2. Die Technik in HTTP
3. Java und Servlet4
4. Fragen
20. Februar 2018 @JANWEINSCHENKER 3
PROFESSIONALS
INDIVIDUALS
N3RDS
Die Holisticon AG ist eine Management- und IT-
Beratung aus Hamburg.
Wir entwickeln beste Individualsoftware,
Webplattformen und Apps.
Geschäftsprozesse durchdringen wir und
automatisieren sie.
Große Datenmengen machen wir mit Smart-Data-
Ansätzen beherrschbar.
HTTP von damals bis
heute
DIE VORGESCHICHTE VON HTTP/2 (H2)
20. Februar 2018 @JANWEINSCHENKER 4
HTTP/1.0 - 1990
Line Mode Browser (LMB) von Nicola Pellow (CERN)
20. Februar 2018 @JANWEINSCHENKER 5
HTTP/1.0 – 1991: Nexus Browser
Entwickelt von Tim
Berners-Lee
20. Februar 2018 @JANWEINSCHENKER 6

Recommended

Webservices auf Basis von HTTP/2 und Servlet4
Webservices auf Basis von HTTP/2 und Servlet4Webservices auf Basis von HTTP/2 und Servlet4
Webservices auf Basis von HTTP/2 und Servlet4JanWeinschenker
 
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
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
 
Redaktionelle Hochlastwebseiten am Beispiel von stern.de
Redaktionelle Hochlastwebseiten am Beispiel von stern.deRedaktionelle Hochlastwebseiten am Beispiel von stern.de
Redaktionelle Hochlastwebseiten am Beispiel von stern.deNils Langner
 
Webtechnologien Grundlagen und Auswahl geeigneter Web Rahmenwerke
Webtechnologien Grundlagen und Auswahl geeigneter Web RahmenwerkeWebtechnologien Grundlagen und Auswahl geeigneter Web Rahmenwerke
Webtechnologien Grundlagen und Auswahl geeigneter Web Rahmenwerkeadoubleu
 
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenBidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenMarco Rico Gomez
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHSebastian Heuer
 
REST Problems
REST ProblemsREST Problems
REST Problemspredic8
 

More Related Content

Similar to HTTP/2 – Ist das auch gut für java-basierte Webservices?

HTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterHTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterQAware GmbH
 
Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Kai Donato
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoOliver Lemm
 
02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportale02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportaleklickandbau
 
Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015Walter Andreas Pucko
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Michael Kirst-Neshva
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
PHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformancePHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformanceNico Steiner
 
Hypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIHypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIAlexander Zeitler
 
Eclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status QuoEclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status QuoMarkus Kett
 
WebSocket my APEX!
WebSocket my APEX!WebSocket my APEX!
WebSocket my APEX!Kai Donato
 
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TUBetriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TUJohannes Kinzig
 
High Performance Websites und Google
High Performance Websites und GoogleHigh Performance Websites und Google
High Performance Websites und GoogleWebmontag MRN
 
Webtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickWebtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickClaus Brell
 
Giessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatzGiessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatzmasem research institute
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenDavid Schneider
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeNico Steiner
 

Similar to HTTP/2 – Ist das auch gut für java-basierte Webservices? (20)

HTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet fasterHTTP/3 und QUIC Making the internet faster
HTTP/3 und QUIC Making the internet faster
 
Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & Co
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportale02 Webtechnologien - Informatiosinstegration und Webportale
02 Webtechnologien - Informatiosinstegration und Webportale
 
Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015Site Speed am Limit - Campixx 2015
Site Speed am Limit - Campixx 2015
 
Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
PHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformancePHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-Performance
 
Hypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIHypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web API
 
Eclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status QuoEclipse RapidClipse - Status Quo
Eclipse RapidClipse - Status Quo
 
WebSocket my APEX!
WebSocket my APEX!WebSocket my APEX!
WebSocket my APEX!
 
Realtime Web Applications with jWebSocket
Realtime Web Applications with jWebSocketRealtime Web Applications with jWebSocket
Realtime Web Applications with jWebSocket
 
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TUBetriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
Betriebsdatenerfassung einer Dimplex Wärmepumpe vom Typ LA 40TU
 
High Performance Websites und Google
High Performance Websites und GoogleHigh Performance Websites und Google
High Performance Websites und Google
 
Webtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickWebtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer Überblick
 
Giessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatzGiessen r user group treffen 10 05-2011 - foliensatz
Giessen r user group treffen 10 05-2011 - foliensatz
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 Bestellsysteme
 

HTTP/2 – Ist das auch gut für java-basierte Webservices?

  • 1. HTTP/2 – Ist das auch gut für java-basierte Webservices? JAN WEINSCHENKER 20. Februar 2018 @JANWEINSCHENKER 1
  • 2. Agenda 20. Februar 2018 @JANWEINSCHENKER 2 1. HTTP von damals bis heute 2. Die Technik in HTTP 3. Java und Servlet4 4. Fragen
  • 3. 20. Februar 2018 @JANWEINSCHENKER 3 PROFESSIONALS INDIVIDUALS N3RDS Die Holisticon AG ist eine Management- und IT- Beratung aus Hamburg. Wir entwickeln beste Individualsoftware, Webplattformen und Apps. Geschäftsprozesse durchdringen wir und automatisieren sie. Große Datenmengen machen wir mit Smart-Data- Ansätzen beherrschbar.
  • 4. HTTP von damals bis heute DIE VORGESCHICHTE VON HTTP/2 (H2) 20. Februar 2018 @JANWEINSCHENKER 4
  • 5. HTTP/1.0 - 1990 Line Mode Browser (LMB) von Nicola Pellow (CERN) 20. Februar 2018 @JANWEINSCHENKER 5
  • 6. HTTP/1.0 – 1991: Nexus Browser Entwickelt von Tim Berners-Lee 20. Februar 2018 @JANWEINSCHENKER 6
  • 7. 20. Februar 2018 @JANWEINSCHENKER 7 www.muenchen.de - April 1999 Quelle: archive.org www.yahoo.com - April 1999 Quelle: archive.org HTTP/1.1 – 1999
  • 8. Das Web heute 20. Februar 2018 @JANWEINSCHENKER 8 315 Requests 5,79 MB 2,36s
  • 9. Das Web hat sich verändert • Mehr und komplexere Inhalte • JavaScript, CSS, AJAX, Audio/Video, ... • Mobile Endgeräte, also ggf. unzuverlässige Leitungen • „Dickere“ Leitungen • Leistungsfähigere Browser • Das Web bzw. HTTP ist zur Grundlage von SOAP- und RESTful-Webservices geworden. 20. Februar 2018 @JANWEINSCHENKER 9 Aber HTTP/1.* stammt immer noch aus den 90ern!
  • 10. HTTP/2 – Seit 2015 • Connection-Multiplexing • Reduziert Protokoll-Overhead und TCP-Sockets • Server-Push • Reduziert Anzahl der HTTP-Anfragen • Komprimierung der Protokoll-Header (HPACK) • Reduziert Anzahl der TCP-Roundtrips 20. Februar 2018 @JANWEINSCHENKER 10
  • 11. Die Technik in HTTP 20. Februar 2018 @JANWEINSCHENKER 11
  • 12. HTTP Request Roundtrip 20. Februar 2018 @JANWEINSCHENKER 12 Client ServerDNS DNS TCP HTTP GET SSL www.google.de 172.217.20.195 SYN SYN/ACK ACK GET 1x pro Host
  • 13. HTTP/1.1 Request-Pipelining 20. Februar 2018 @JANWEINSCHENKER 13 Client Server GET index.html Abwicklung mehrerer GET-Requests innerhalb einer TCP- Verbindung
  • 14. HTTP/1.1 – Head-Of-Line-Blocking Bei HTTP/1.1 verarbeitet der Client die Antworten des Servers nur in der Reihenfolge, in der er die zugehörigen Anfragen versendet hat. 20. Februar 2018 @JANWEINSCHENKER 14
  • 15. HTTP/1.1 Workarounds • Mehrere TCP-Connections parallel öffnen • Domain Sharding • TCP-Verbindungen sind relativ “teuer“ • Anzahl an Verbindungen wird durch Clients begrenzt. 20. Februar 2018 @JANWEINSCHENKER 15
  • 16. HTTP/1.1 Workarounds - Sharding 20. Februar 2018 @JANWEINSCHENKER 16 www.site.com static1.site.com static2.site.com style.css button.css logo.png product.png
  • 17. HTTP/1.1 Workarounds • Verbindungen reduzieren • Spriting • Zusammenfassen von Ressourcen • CSS und JavaScript • Inlining mittels Base 64 • Probleme beim Caching 20. Februar 2018 @JANWEINSCHENKER 17
  • 18. HTTP/2 - Keine Workarounds mehr nötig • HTTP/2 bietet Multiplexing • Alle Request-Response-Konversationen laufen simultan über ein und dieselbe TCP-Verbindung. 20. Februar 2018 @JANWEINSCHENKER 18
  • 19. HTTP/2 Push und Multiplexing 20. Februar 2018 @JANWEINSCHENKER 19 Client Server HTTP GET GET index.html index.html favicon.ico script.js Style.css via Server-PUSH
  • 20. HTTP/2 - Begrifflichkeiten HTTP/2 HTTP/1.1 Connection Ein TCP Socket Stream Ein Austausch von Request- und Response-Messages zwischen Client und Server Message Ein Request bzw. eine Response Frame Kleinste Einheit zur Kommunikation über die Connection. Eine Message besteht aus einem oder mehreren Frames. 20. Februar 2018 @JANWEINSCHENKER 20
  • 21. 20. Februar 2018 @JANWEINSCHENKER 21 HTTP/2 - Die Bausteine Connection Stream Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Stream Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Message frame frame frame frame frame frame frame frame frame frame frame frame Stream ...
  • 22. 20. Februar 2018 @JANWEINSCHENKER 22 HTTP/2 – Ein Beispiel-Stream Client Server Message 1 Message 2 STREAM-ID 41 HEADERS-Frame GET /index.html +END_HEADER +END_STREAM STREAM-ID 41 HEADERS-Frame STATUS 200 +END_HEADER STREAM-ID 41 DATA-Frame {binary data} STREAM-ID 41 DATA-Frame {binary data} STREAM-ID 41 DATA-Frame {binary data} +END_STREAM
  • 23. 20. Februar 2018 @JANWEINSCHENKER 23 HTTP/2 – Ein Beispiel für Server-PUSH Client Server STREAM-ID 41 HEADERS-Frame GET /index.html +END_HEADER +END_STREAM STREAM-ID 41 HEADERS-Frame STATUS 200 +END_HEADER STREAM-ID 41 PUSH_PROMISE-Frame /style.css via STREAM 42 STREAM-ID 41 DATA-Frame {binary data} +END_STREAM STREAM-ID 42 DATA-Frame {binary data} +END_STREAM STREAM-ID 42 HEADERS-Frame STATUS 200 +END_HEADER
  • 24. 20. Februar 2018 @JANWEINSCHENKER 24 HTTP/2 – Noch ein Beispiel für Server-PUSH Client Server STREAM-ID 41 HEADERS-Frame GET /index.html +END_HEADERS +END_STREAM STREAM-ID 41 HEADERS-Frame STATUS 200 STREAM-ID 41 PUSH_PROMISE-Frame /style.css via STREAM 42 +END_HEADERS STREAM-ID 41 DATA-Frame {binary data} +END_STREAM STREAM-ID 42 HEADERS-Frame STATUS 200 +END_HEADERS STREAM-ID 42 RST_STREAM-Frame <Error Code>
  • 25. Compression in HTTP/1.1 • Keine Header Compression • Komprimierung von Nutzdaten mittels GZIP und DEFLATE 20. Februar 2018 @JANWEINSCHENKER 25
  • 26. Header-Daten im Browser LIVE-DEMO • www.spiegel.de • www.hsv.de • www.netzpolitik.org 20. Februar 2018 @JANWEINSCHENKER 26
  • 27. Header-Daten im Browser 1 Kilobyte an Cookie-Daten pro HTTP-Request • Problem beim initialen Verbindungsaufbau: • TCP definiert eine Maximalgröße für die ersten TCP Pakete: 532 bytes. • MSS (Maximum Segment Size) 20. Februar 2018 @JANWEINSCHENKER 27
  • 28. ACK TCP Slow Start 20. Februar 2018 @JANWEINSCHENKER 28 Browser Server GET GET GET ACK ACK Beispiel: 1 GET-Request mit 1500 Byte an Header-Daten und MSS 500 Byte.
  • 29. Header Compression – HTTP/2 • Komprimierung der HTTP-Header mittels HPACK • Payload-Kompression weiterhin mit GZIP 20. Februar 2018 @JANWEINSCHENKER 29
  • 30. Header Compression mit HPACK Dreistufige Komprimierung von HTTP Headern. 1. Vordefiniertes Kompressionswörterbuch für 61 sehr gebräuchliche Header. Z.B.: ◦ 2 = :method GET ◦ 3 = :method POST ◦ 8 = :status 200 ◦ 16 = accept-encoding gzip, deflate 2. Dynamisches Kompressionswörterbuch ◦ Wird zum Zeitpunkt der Verbindungsaufnahme ausgehandelt 3. Statische Huffman-Kodierung 20. Februar 2018 @JANWEINSCHENKER 30
  • 32. Java und Servlet4 20. Februar 2018 @JANWEINSCHENKER 32
  • 33. Die Servlet API 20. Februar 2018 @JANWEINSCHENKER 33 • Die meisten Änderungen sind für Entwickler transparent. • Multiplexing und HPACK erfolgen automatisch. • Lediglich Server Push ist mit eigenem Implementierungsaufwand verbunden.
  • 34. Java: HTTP/2 Verfügbarkeit Name HTTP/2 Servlet 4 JBOSS EAP 7.1 ja nein Wildfly 9+ ja nein Glassfish 5 ja ja Spring Boot 2 (RC1) ja ja (mit Embedded Tomcat 9) Tomcat 9 ja ja OkHttp 3 Client ja nein Jetty Serve und Client v9.3+ ja nein Undertow Server 1.4 ja nein Apache Commons HTTP Client ja nein 20. Februar 2018 @JANWEINSCHENKER 34
  • 36. Fazit • Mittlerweile gibt es Java- Implementierungen • HTTP/2 setzt sich zu langsam durch. 20. Februar 2018 @JANWEINSCHENKER 36
  • 37. Fragen? ??? 20. Februar 2018 @JANWEINSCHENKER 37
  • 38. Ende Vielen Dank! 20. Februar 2018 @JANWEINSCHENKER 38
  • 39. Icons Icons von http://hawcons.com 20. Februar 2018 @JANWEINSCHENKER 39