Thundering Web Requests

Part 0: What and Why

A friend of mine mentioned using Tornado and Python to implement microservices. Out of curiosity, I asked “why Tornado?” and I did not get a definitive reply.

This got me digging into web service-related technologies that I had heard about but I did not know and had not used. Interestingly, while reading about these technologies, I stumbled on the C10K problem, the web incarnation of the thundering herd problem common in concurrent systems.

Image for post
Image for post

At this point, I figured what better way to learn about different web-serving technologies than to explore them in the context of thundering herd problem. The plan was to

Since the exercise required the simulation of a thundering herd, I decided to

Since I like trying out different programming languages, I figured it would be fun to implement the clients in at least two different languages.

Finally, since I had been itching to use my small cluster of Raspberry Pis for experimentation, I decided to use the cluster to evaluate the technologies in a constrained yet truly distributed setting.

Given the above context, I have documented this exercise in the following blog posts.

  1. Observations from Implementing Web Clients
  2. Observations from Implementing Web Services
  3. Client-side Observations about Web Service Technologies: Using Apache Bench
  4. Server-side Observations about Web Service Technologies: Using Apache Bench
  5. Server-side Observations about Web Service Technologies: Using Custom Web Clients
  6. Observations about Web Client Technologies

Besides describing the experiment and reporting various results, I have tried to describe my experience with and observations about differing languages and technologies that I used to implement clients and servers.

All of the code and artifacts from the experiment is available on GitHub.

I hope you will find these posts and the code artifacts both interesting and useful. If you have any feedback or suggestions, then please leave a comment.

Written by

Programming, experimenting, writing | Past: SWE, Researcher, Professor | Present: SWE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store