
HTTP/2 is Not A Magic Bullet
Don’t expect to see a presentation at the next Velocity, AWS re:Invent, or Interop Conference that states:
HTTP/2 is here. CDNs are no longer necessary. Fire all your performance engineers. Performance is great. Nothing left to improve. We’re done.
What you should expect is a presentation that sounds more like this:
Multiplexing requests via TLS on a single TCP stream to a server that’s 160ms away with 4% packet loss is not the arrival of our long-awaited utopian future. Quite the contrary. We’re not done. We haven’t even started. We have a long way to go.
Here’s why.
Website and application performance are constantly evolving. Everything that we’re doing today with HTTP/1 isn’t what we thought we’d be doing back in 1990 or 1999. Granted, we have a lot more people thinking about these issues today, so we’re seeing performance accelerate.
Today’s contributors have a much deeper understanding of how the HTTP protocol is actually used and bring a significantly wider variety of experience and backgrounds to the effort.
In the end, though, the only reality is that performance will always move forward.
HTTP/2
Regardless of what you read, we are only at the beginning of understanding how to maximize performance with HTTP/2. The performance improvements and strategies around HTTP/2 will continue to change and evolve. While a switch in the protocol is certainly a step in the right direction, it’s just the first step.
Whenever I speak with people, whether they’re a customer, partner or new acquaintance, the perception I get is that HTTP/2 is a magic bullet – that it will right all previous wrongs and solve all existing issues with HTTP and put the web and applications on a perfect path.
The reality is much different.
HTTP/2 is not a magic bullet. It’s a powerful tool that we can use to improve web and application performance — but it needs a skilled engineer to wield it.
Granted, it *is* a much better tool for today’s internet than HTTP/1. Remember, HTTP/1 was designed in 1990 for a very different web environment than we have now.
But ask yourself, are techniques such as CSS sprites, inlining assets, and domain sharding helpful or hurtful on a given HTTP/2 site? How are you measuring? Is the answer the same for all sites and asset types?
There’s no denying that for the majority of sites, HTTP/2 is faster in terms of performance and load time. There are also a minority of sites where HTTP/2 will decrease performance by up to 30%.
Yes, that’s right.
There are known instances where HTTP/2 will make your application or site slower.
We can’t forget, however, that the realities of today’s internet are driven by much more demanding content and a set of protocols that we won’t solve anytime soon:
- We still have TCP at layer 3.
- We still have the speed-of-light constraints.
- TLS requires more packets to deliver the same payload.
We still have all of the original constraints behind the development of CDNs. HTTP/2 is just better at dealing with some of these constraints.
This is why it’s important to remember:
- There are actually a few things that HTTP/2 makes worse.
- There are actually some new problems HTTP/2 introduces.
- HTTP/2 should make you ask more questions.
The takeaway is this: deploying HTTP/2 isn’t the endgame. Rather, it’s a new and exciting beginning.