JAX-Countdown mit Thomas Becker

SPDY = Http 2.0: Eigentlich schon Mainstream

Hartmut Schlosser

Das Web basiert auf Http 1.1 – und damit auf einem Protokoll des letzten Jahrtausends. Höchste Zeit also, das 1999 eingeführte Http-1.1-Transportprotokoll einer Generalüberholung zu unterziehen, denn schließlich haben sich die zu bewegenden Datenmengen in den letzten 13 Jahren um ein Vielfaches vergrößert. Und so wird derzeit fleißig an Http 2.0 gearbeitet, für das erst kürzlich ein erster Entwurf vorgelegt wurde, der auf dem von Google initiierten SPDY-Protokoll basiert. Im JAX-Countdown sprechen wir mit Thomas Becker, als Jetty-Entwickler mit allen Tiefen der SPDY-Spezifikation und -Implementierung vertraut, über die Vorzüge von SPDY, die Arbeiten an Jetty 9 und den aktuellen Stand von Http-2.0.

SPDY auf der JAX 2013

Thomas Becker

Thomas Becker können Sie live auf der JAX 2013 erleben (22. bis 26. April 2013):

In Depth SPDY and Jetty

In dieser Session werden wir über das SPDY-Protokoll reden, das mit ein paar Änderungen HTTP/2.0 werden wird. Ihr werdet anhand einer faszinierenden Demo sehen, wie SPDY und SPDY Push eure Webapplikation deutlich beschleunigen können, und das fast ohne Aufwand und Änderungen an der Applikation selbst! Ich werde dann ein paar der Gedanken hinter SPDY vertiefen und einige Vorteile gegenüber HTTP bis zur Netzwerkebene erklären. Wir werden uns SPDY Frames erst in der Spec und anschließend auf der Netzwerkebene ansehen. Wir werden sehen, wie man mit Wireshark SSL Traffic entschlüsseln und SPDY Frames dekodieren kann. Weiterhin gehe ich kurz auf Jettys komplett asynchrone und Non-blocking-Implementierung der SPDY Spec ein und beschreibe unsere Designziele und Entscheidungen.

www.jax.de

JAXenter: SPDY soll das Web schneller machen. Wie genau tut es das?

Thomas Becker:
Eine der Hauptzielsetzungen von SPDY ist es, die Anzahl der sogenannten Round-Trips zwischen Client und Server zu verringern. Gerade in Netzwerken mit hohen Latenzzeiten (Internet, Mobile Netzwerke) profitiert die Kommunikation zwischen Client und Server deutlich.

SPDY komprimiert sehr effektiv sich wiederholende HTTP Header, welche oft den Großteil an Daten von Request/Response ausmachen, und verringert so die zu versendende Datenmenge deutlich. Im Gegensatz zu HTTP ist SPDY voll multiplex-fähig und benötigt somit pro Client nur noch eine TCP Connection. Das führt zu einer besseren Nutzung von TCP Features, Server/Client-Ressourcen und einer schnelleren Kommunikation zwischen Client und Server.

Dazu kommen viele weitere Detailverbesserungen im Vergleich mit HTTP, welche sich aufsummieren. Eine dieser Verbesserungen ist SPDY Push. Push ermöglicht es dem Server, Dateien an den Client zu senden, ohne auf einen Request zu warten. In Jetty haben wir eine sehr effektive und vollautomatisierte Push-Strategie implementiert. Diese merkt sich auf Page Requests folgende Subrequests (für Bilder, CSS-Dateien, etc.) und pushed diese beim nächsten Page Request direkt an den Client, was zu „deutlich“ schnelleren Seiten-Ladezeiten und einer besseren User Experience führt. Mehr dazu in meiner Session.

JAXenter: Du zeigst in deiner JAX-Session ja eine Demo, in der eine Webanwendung via SPDY und SPDY Push beschleunigt wird. Um welche Dimensionen des Geschwindigkeitszuwachses reden wir hier?

Thomas Becker: Der Geschwindigkeitszuwachs hängt vom Aufbau der Seite ab. Dieser ist in der Regel jedoch signifikant. Zwischen 10% und weit über 50% schnellere Ladezeiten haben wir schon gesehen. Wohlgemerkt nur durch den Switch von HTTP auf SPDY.

Die Demo gerade mit SPDY Push ist beeindruckend und hat bisher bei jeder Session zu spontanem Applaus geführt. Mehr möchte ich nicht vorwegnehmen. Besucht meine Session!

JAXenter: Eine erste Version für das Http 2.0 Protokoll liegt ja schon vor – und zwar wurde dort im Prinzip das SPDY-Protokoll 1:1 übernommen. Welche Änderungen sind in der finalen Http-2.0-Spezifizierung zu erwarten?

Thomas Becker: Es wird gerade intensiv an SPDY/4 gearbeitet. Das Webtide/Jetty Team nimmt intensiv an der Weiterentwicklung der Spec teil, und wir gehören in der Regel zu den ersten, die neue Features implementieren. Die Basis des Protokolls steht, aber es werden interessante Detailverbesserungen vorgenommen werden. So wird z.B. die Priorisierung von einzelnen Streams/Requests über einen „Dependency Tree“ geregelt. Ziel ist es, vom Browser dringend zum Rendern benötigte Dateien schneller auszuliefern und den Seitenaufbau weiter zu beschleunigen. Der erste Entwurf von HTTP/2.0 ist fast eine 1:1-Kopie der SPDY Spec. Ich gehe davon aus, dass dies in ähnlicher Form so bleiben wird. Ich persönlich erwarte, dass die zur Zeit erzwungene TLS-Verschlüsselung kippen wird.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.