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.
Zielpublikum: Architekten, Entwickler, Projektleiter
Voraussetzungen: Java-Kenntnisse, SOAP- und RESTful Services, Web-Protokolle, Web-Performance
Schwierigkeitsgrad: Fortgeschritten
Extended Abstract
Alle Vorteile von HTTP/2 (Multiplexing, HTTP-Push und auch die HTTP-Header-Komprimierung mit dem HPACK-Algorithmus) haben das Potenzial, auch die Webservice-Kommunikation performanter zu machen. Viele Enterprise-Anwendungen basieren auf SOAP- oder RESTful-Webservices.
Grund genug also, einmal zu untersuchen, ob man neue Webservices nicht gleich auf Basis von HTTP/2 implementieren sollte. Die HTTP-Anfragemethoden, also der Befehlssatz u.a. aus GET, POST, PUT, DELETE, haben sich mit dem Versionssprung nicht geändert. Lohnt für bestehende Anwendungen eventuell sogar eine Migration von HTTP/1.1 auf seinen Nachfolger?
Ein Grund, der dagegen sprechen würde, ist der Einsatz der Verschlüsselung mit HTTPS. Diese ist zwar nicht durch die Protokolldefinition für HTTP/2 vorgeschrieben (RFC 7540 und 7541), allerdings gibt es keine HTTP/2-Implementierung, die HTTPS nicht voraussetzt.
Der Einsatz von HTTP/2 bedeutet folglich immer, dass man sich um das Erzeugen, Verwalten und Verteilen von SSL- bzw. TLS-Zertifikaten Gedanken machen muss.
Die Vorteile von HTTP/2 erkauft man sich für ein IT-System also immer durch ein Mehr an Komplexität.
Rechtfertigen die Vorteile für die Webservice-Kommunikation dieses Mehr an Komplexität?
Wie sieht es mit der Unterstützung von HTTP/2 im aktuellen Java-Umfeld aus? JDK9, Java EE8, Servlet 4.0, JBoss EAP 7, Tomcat 8.5 und 9. Bringen diese Technologien Unterstützung für HTTP/2 mit?
Diese Frage soll in diesem Vortrag diskutiert werden.