21 June 2015

High Performance Browser Networking - Book Review

I will try to make it concise and give my personal opinion.

  • Author: Ilya Grigorik, a Web performance engineer at Google
  • Pages: 408
  • Published: September 2013
  • Amazon rating: 4.6/5
  • My rating: 4.1/5

This piece of writing has many levels to it. Ilya goes over all the building blocks which play part in Web performance. He briefly describes work mechanisms for each block and then based on acquired knowledge shows how to squeeze as much as possible out of it.

The fact that Ilya goes all the way from TCP / Mobile network work principles to Javascript API is both an upside and a downside. Many Web developers don't care about such level of detail and are only worried about steps they can do at the top of the stack, not server side TCP tweaks and peculiarities of different Mobile networks.

Nevertheless, if you are like me and you prefer deeper knowledge I advise you to read the whole book. If what interests you is only the top of the stack and you have few coins to spare then go ahead and read just the latter part of the book. I guarantee that you can find of lot of juicy revelations in there.

Brief summary of book contents:

1. Effects of latency and bandwidth
While bandwidth keeps increasing and all ISPs advertise it latency for the most part remains unchanged and it is latency that is often a speed bottleneck.

2. TCP
Describes basics of TCP and how we can tweak our servers to provide best performance

3. UDP
Tells about UDP and when we should use it over TCP.
Also covers STUN, TURN and ICE, techniques allowing to establish a connection between 2 peers even if they are behind NAT.

4. TLS
History, basic principals and performance implications of using a secure connection.

5. Wireless networks
Intro to wireless networks

6. WiFi
Performance characteristics of WiFi connections

7. Mobile Networks
History, all the different types of mobile connections and their performance.

8. Optimizing for Mobile Networks
Being energy efficient for mobile networks is perhaps as important as being fast.
Keep update checks and uploads to a minimum. Batch your uploads. Make your application work well both with good and bad networks.

9. HTTP history
Well... HTTP history

10. Primer on Web Performance
Human perception of speed. How browsers render pages. Different optimizations browser does to make loading process faster. The way we can give tips to a browser on what resources to load.

11. HTTP 1.x
Principles of HTTP 1.x. Protocol imperfections and the way Web developers overcome them (optimizations).

12. HTTP 2.0
Principles of HTTP 2.0. HTTP 2.0 usages in the wild (or more precisely usage of SPDY).

13. Optimizing Application Delivery
Universal optimization tips (apply to all protocols)
Optimizing for HTTP 2.0. Making applications work with both HTTP 2.0 and HTTP 1.x clients.

14. Primer on Browser Networking
Building blocks of a browser

15. XMLHttpRequest
History, use cases, performance, limitations

16. Server Sent Events
SSE API, use cases and performance

17. WebSocket
WebSocket API, use cases and performance.
What makes WebSocket different from other transports and it's flexibility

18. WebRTC
Use cases, work principles, API, possible complications. Delivery audio/video + custom data over WebRTC.

Not sure how useful it is, quickly wrote it at 4 AM :-)