A Comparative Review of Microservices and Monolithic Architectures

Status:: 🟩
Links:: Microservices vs. Monolith

Metadata

Authors:: Al-Debagy, Omar; Martinek, Peter
Title:: A Comparative Review of Microservices and Monolithic Architectures
Date:: 2018
URL:: https://ieeexplore.ieee.org/document/8928192
DOI:: 10.1109/CINTI.2018.8928192

Notes & Annotations

Color-coded highlighting system used for annotations

📑 Annotations (imported on 2024-03-23#17:40:54)

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 1)

In a research that was done by Singh and Peddoju, the performance of a monolithic application is compared to a microservices application that they developed and compared the performance of the two applications, their tests consisted of 2000 threads. Their results exhibited that microservices architecture has a better performance in terms of throughput when it is used for a large number of requests [5].

[5] V. Singh and S. K. Peddoju, “Container-based microservice architecture for cloud applications,” in 2017 International Conference on Computing, Communication and Automation (ICCCA), 2017, pp. 847–852.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

Villamizar et al. compared the costs of using the cloud to run web applications with different architectures such as microservices, monolithic and Amazon Web Services Lambda architectures. In addition to cost comparison, they also compared response time of each application that they created, which showed that response time increased when microservices architecture was utilized compared to the monolithic architecture because each request must go through the gateway to every microservice in the system [3].

[3] M. Villamizar et al., “Cost comparison of running web applications in the cloud using monolithic, microservice, and AWS Lambda architectures,” Serv. Oriented Comput. Appl., vol. 11, no. 2, pp. 233– 247, Jun. 2017.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

In another paper, the performance of microservices in container-based and virtual machine (VM)-based environment was compared. Amazon cloud environment was applied to conduct their experiments, and they compared the performance of these environments regarding throughput, response time, and CPU consumption. This paper concludes that VM-based environments on Amazon cloud services outperformed container-based environments on Amazon cloud environment, especially concerning response time where VM-based environment showed a better performance of 125% over container-based environment [8].

[8] T. Salah, M. J. Zemerly, C. Y. Yeun, M. Al-Qutayri, and Y. AlHammadi, “Performance comparison between container-based and VM-based services,” in 2017 20th Conference on Innovations in Clouds, Internet and Networks (ICIN), 2017, pp. 185–190.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

In order to compare the performance of two different architectures, first of all, there should be an application that can produce the results of microservices and monolithic applications, which can be compared and evaluated. This paper presents results created by a development platform known as JHipster utilized to generate web applications that consist of Spring Boot and Angular JS frameworks. The application that was developed for this particular paper consisted of three services.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

Response time and throughput were utilized to compare the performance of the tested applications. Response time is the time it takes for a client to receive a response from the server for a request of a specific service. In other words, “Response Time is the time elapsed between the request and reply” [14].

[14] S. Kumari and S. K. Rath, “Performance comparison of SOAP and REST based Web Services for Enterprise Application Integration,” in 2015 International Conference on Advances in Computing, Communications and Informatics (ICACCI), 2015, pp. 1656–1660.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

Another performance metric is throughput, which is the number of requests an application can handle per second. Therefore, it means dividing the total number of processed requests by the time it took to process all the requests.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

The first test scenario is load testing which is used to monitor the effects of increasing the number of users on the application and how it will affect throughput and response time. It starts with 100 threads with a ramp-up of 2 minutes and holds time of another 2 minutes to analyze the concurrency of the system, then increases the number of threads until 7000 threads each time with 2 minutes for ramp- up and holds time.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

The second test scenario is concurrency testing which is used to check how the system will hold up if all the services are used at the same time, so the test was designed to send requests to each service through their exposed APIs at the same time. It started with 100 requests for each service with no specific ramp-up time and increasing the number of requests gradually until 1000 requests.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 2)

The third testing scenario tested the endurance of the system which consisted of 10000 threads with a 10 minutes ramp up and a 10 minutes hold time, but this time the test included other configurations of microservices architecture using different technologies for the service discovery such as Consul and Eureka.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 4)

Analyzing the results of the first test scenario this research can conclude that microservices and monolithic application can have similar performance under normal load on the application. In the case of a small load with less than 100 users, the monolithic application can perform a little bit better than microservices application. Hence monolithic application is recommended for small applications used only by a few users.

al-debagy.martinek.2018.comparativereviewmicroservices (pg. 4)

In the second test scenario, the results were different in term of the throughput. The number of requests was fixed so that to find the exact number of requests an application can handle per second. The monolithic application showed higher throughput on average. Thus, the monolithic application can handle requests in a faster manner, so the monolithic application can be used when the developer especially aims that the application handles requests in a faster way.