Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hyperactive: HTTP/2 and Python

Hyperactive: HTTP/2 and Python

The internet has spoken, HTTP is to get its first serious update in 15 years. In this talk we'll discuss what HTTP/2 is, why it's happening, and how it's going to affect you and everyone you love. We'll briefly talk about how you can get started with HTTP/2, and some interesting projects associated with it, including Hyper, the first Python HTTP/2 library.

Cory Benfield

April 10, 2015
Tweet

More Decks by Cory Benfield

Other Decks in Programming

Transcript

  1. 2
    Hyperactive
    HTTP/2 and Python

    View Slide

  2. 2
    Hi

    View Slide

  3. 2
    @lukasaoz
    @lukasa

    View Slide

  4. 2

    View Slide

  5. 2
    Requests Core Contributor
    urllib3 Core Contributor
    Maintainer of 10+ others
    PSF Contributing Member

    View Slide

  6. HTTPBis Working Group
    HTTP/2 Stack (hyper)

    View Slide

  7. HTTP/1.1 is
    Old

    View Slide

  8. HTTP/1.1 is
    Inefficient

    View Slide

  9. HTTP/1.1 is
    Slowing Us
    Down

    View Slide

  10. HTTP/2

    View Slide

  11. Binary
    • Text protocols are easy to debug
    but complex to parse
    • Binary is simpler.
    • Simpler (usually) means faster

    View Slide

  12. Efficient
    • Multiplexing (with priority/flow control)
    • Header compression (HPACK)
    • Early stream termination.
    • Server Push

    View Slide

  13. Not
    universally
    well received

    View Slide

  14. Poul-Henning Kamp
    • “HTTP/2.0 is not a technical
    masterpiece…I would flunk
    students in my (hypothetical)
    protocol design class if they
    submitted it.”

    View Slide

  15. View Slide

  16. Imperfect

    View Slide

  17. HTTP/2 is Imperfect
    • Difficult to reason about
    • Challenging to debug
    • Awkward edge cases
    • Inherently concurrent

    View Slide

  18. Bloody
    Good!

    View Slide

  19. HTTP/1.1 HTTP/2

    View Slide

  20. Play

    View Slide

  21. Implementations
    nghttp2
    http2-katana
    node-http2
    Firefox
    http2-perl
    iij-http2
    Akamai Ghost
    Chromium
    GFE
    Twitter
    Wireshark
    Ericsson MSP
    http2
    http2-go
    OkHttp
    Trusterd
    http-2
    hyper
    libcurl
    cl-http2-protocol
    Netty
    Jetty
    F5
    Sasazka
    Internet Explorer
    Lucid
    H2O
    Undertow
    Deuterium
    OpenLiteSpeed
    Haskell
    Warp

    View Slide

  22. View Slide

  23. hyper
    • Actively developed.
    • Come help!
    • github.com/Lukasa/hyper
    • hyper.rtfd.org/en/development

    View Slide

  24. http2bin.org
    • Runscope’s httpbin.
    • Running behind H2O.
    • HTTP/1.1 and HTTP/2.

    View Slide

  25. Further Reading
    • http://daniel.haxx.se/
    http2/
    • http://http2.github.io

    View Slide

  26. Thanks!
    @lukasaoz
    @lukasa

    View Slide