Download as PDF


Abstract

This project studies how a Ruby on Rails application reacts through an increasing number of simultaneous users accessing the service. More specifically, we are going to study Consul,and propose improvements to lower the response time and increase the number of supported simultaneous users.

Consul is an Open Source application under GPLv3 developed by the Madrid city hall.Its goal is to ease the process of citizen participation in the legislation process, debates,and polls. But who is better to define Consul then itself? According to Consul’s website,"Consul is the most complete citizen participation tool for open transparent and democratic government". The amazing part of this software is the community around it, with over 35 countries, 135 institutions, and 90 million citizens participating, not to mention over 1000 stars on GitHub, 700 forks, and 15000 commits.

Aside from the technical challenges, what drove me towards this project is its context under the concept of smart cities. Sticking with the definition, "A smart city is a city that incorporates information and communication technologies (ICT) to enhance the quality and performance of urban services such as energy, transportation, and utilities to reduce resources consumption, wastage, and overall costs". Consul comes right into play helping citizens participate more in the legislation process to help public authorities focus their effort where the problem is.

To understand the application behavior we will use a load test simulation software calledGatling to simulate user loads from a single user to a batch of simultaneous users during fixed time intervals. Consul will be running on a Kubernetes simulated cluster through Minikube,which will range CPU and RAM. The last unknown that we will be simulating is the number of replicas for each cluster size.

Finally, we will discuss some insights on how to improve the reliability and scalability of a Ruby on Rails application, of course, focusing on our scenario, which is the Consul.To do so we will be going through a detailed statistical analysis of how this application handles simultaneous users and how minor improvements could increase the availability of the software. We hope, as well, to convince the reader of the importance of load tests and talk about the advantages Kubernetes bring us.