HTTP/2: The Weird Parts

HTTP/2: The Weird Parts

2ad55a66b8325eb097612c069ab76231?s=128

Clay Smith

June 03, 2016
Tweet

Transcript

  1. HTTP/2: The Weird Parts @smithclay / New Relic ScotlandJS 2016

  2. ScotlandJS 2016 @smithclay / New Relic What this talk isn't

    about • Code • Implementing HTTP/2 in Production • How HTTP/2 will totally, absolutely solve every performance problem (it won't). • H2 = HTTP/2
  3. ScotlandJS 2016 @smithclay / New Relic Me Server HTTP San

    Francisco Northern Virginia
  4. ScotlandJS 2016 @smithclay / New Relic Me HTTP Server San

    Francisco Northern Virginia Person Paris HTTP
  5. ScotlandJS 2016 @smithclay / New Relic Me ~40 ms roundtrip*

    Server San Francisco Northern Virginia Person Paris ~ 88ms roundtrip* *http://www.timbercon.com/time-delay-of-light-in-fiber-calculator/ *calculated using great-circle distance in fiber (not real life)
  6. ScotlandJS 2016 @smithclay / New Relic More RTs, more latency

    Browser Server Data Transfer { Round trip 1. SYN 2. SYN/ACK 3. ACK { { TLS Full TCP + TLS (i.e. HTTPS) handshake TCP Handshake Cool TLS Demo: https://tls.openmirage.org/
  7. ScotlandJS 2016 @smithclay / New Relic http://httparchive.org/trends.php?s=All&minlabel=May+15+2014&maxlabel=May+15+2016#_connections 2014 2016

  8. ScotlandJS 2016 @smithclay / New Relic http://httparchive.org/trends.php?s=All&minlabel=May+15+2014&maxlabel=May +15+2016#numDomains&maxDomainReqs 2014 2016

  9. Making things better with HTTP/2

  10. ScotlandJS 2016 @smithclay / New Relic

  11. ScotlandJS 2016 @smithclay / New Relic HTTP/2 has 10 frame

    types FRAME FRAME FRAME FRAME FRAME FRAME FRAME Stream 0 Stream 1 Stream 2 Frames get reassembled into standard request/response messages
  12. ScotlandJS 2016 @smithclay / New Relic Front-end implications* Ciao Concatenation

    Sianara Sharding and Spriting Bye Inlining *Assuming most of your traffic has HTTP/2 capable browsers. https://blog.newrelic.com/2016/02/09/http2-best-practices-web-performance/
  13. The Weird Frames

  14. ScotlandJS 2016 @smithclay / New Relic PUSH_PROMISE FRAME • Not

    websockets replacement. • Intention to send responses. • https://www.w3.org/TR/ preload/#server-push-http-2 HTTP Request Precognition YOU WILL WANT THIS
  15. ScotlandJS 2016 @smithclay / New Relic GOAWAY FRAME • Terminates

    the TCP connection. • Helps clients know what streams might not be processed. NO THANKS
  16. ScotlandJS 2016 @smithclay / New Relic PING FRAME • Safely

    tests the connection without a request. • "A mechanism for measuring a minimal round-trip time from the sender, as well as determining whether an idle connection is still functional." STILL THERE?
  17. More frame types to come... https://tools.ietf.org/wg/httpbis/

  18. ScotlandJS 2016 @smithclay / New Relic Takeaways Measure & Profile*

    Reduce Connections Design for latency CDNs: close to your users *http://wireshark.com/ https://mitmproxy.org/
  19. ScotlandJS 2016 @smithclay / New Relic #perfforthepeople

  20. Thanks @smithclay / New Relic ScotlandJS 2016

  21. ScotlandJS 2016 @smithclay / New Relic Additional information • Go

    read High Performance Browser Networking (it's great). • https://daniel.haxx.se/http2/ • https://newrelic.com/browser • https://blogs.dropbox.com/tech/2016/05/enabling-http2-for-dropbox-web- services-experiences-and-observations/ • http://engineering.khanacademy.org/posts/js-packaging-http2.htm • https://blog.newrelic.com/2016/02/09/http2-best-practices-web- performance/