Thundering Web Requests

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
  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.

--

--

--

Software Engineer / Researcher interested in software engineering, programming languages/tools, systems, and data.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

A complete Backend only with Kotlin and your favourite text-editor!

Technology Registry — Radar’s Younger Sibling

Get Paid To Write ($200 Or More A Post)

WebSocket: An In-Depth Beginner’s Guide

WebSocket for beginners

A Guide on How to Write a Clean Code

Working with AWS CLI

An Overview: Functions

Automated testing for GitHub actions & Newman automation from Postman

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
Venkatesh-Prasad Ranganath

Venkatesh-Prasad Ranganath

Software Engineer / Researcher interested in software engineering, programming languages/tools, systems, and data.

More from Medium

Reducing Visibility Timeout — Exception Scenarios- Hack I did

How to make your consumption faster in Rabbitmq (Prefetch count)

Microservices Part I

Using Bearer Token Authentication