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.

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

Implement a simple web service using different technologies and see how they fare against thundering herd of web requests.

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

Implement web clients to simulate thundering herd of web requests.

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 (Coming Soon)
  4. Server Side Observations about Web Service Technologies: Using Apache Bench (Coming Soon)
  5. Observations about Web Service Technologies: Using Custom Web Clients (Coming Soon)
  6. Observations about Web Client Technologies (Coming Soon)

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.

Venkatesh-Prasad Ranganath

Written by

Software Craftsman, Researcher, Axademic. Posts mostly about Software Engineering, Systems, Performance, Scale, and Books.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade