Benchmarking Performance of Data Serialization and RPC Frameworks in Microservices Architecture: gRPC vs. Apache Thrift vs. Apache Avro

No Thumbnail Available
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu | Master's thesis
Ask about the availability of the thesis by sending email to the Aalto University Learning Centre oppimiskeskus@aalto.fi
Date
2016-10-27
Department
Major/Subject
Digital Media Technology
Mcode
SCI3023
Degree programme
Master's Programme in ICT Innovation
Language
en
Pages
53+6
Series
Abstract
Microservices Architecture is becoming an prominent standard when it comes to designing high-level architecture of complex applications. Each microservice addresses one small part of the application with very specific functionalities for very specific business requirements. With such limited scope, it can be deployed as a standalone service. Different microservices in the same system can be written in different programming languages, depending on the tasks they need to accomplish. Despite its popularity, microservices architecture also has challenging issues and communication between the microservices is one of those. RPC has been universally adopted in large distributed software systems with the client-server model of computing and is suitable for use in microservices architecture. IDT Messaging Oy’s MagicWords system consists of several microservices written in Java and Python and uses MsgPack RPC to facilitate inter-services communication. However, MsgPack is outdated, not widely adopted and hence lacks continuous updates, bug fixes, as well as community support. The goal of this thesis is to investigate which RPC framework I should implement to replace MsgPack. I choose three popular open-source data serialization and RPC frameworks for my investigation, they are gRPC, Apache Thrift, and Avro. I perform extensive benchmarking tests to evaluate their performance in terms of message serialization and end-to-end communication for both Java and Python implementations. The execution time, CPU usage and memory usage are recorded. I then analyze the performance results as well as the implementation style of each framework. The performance of gRPC even though is not the best in all scenarios, it is in general very good. Furthermore, gRPC has comprehensive documentation, follows modern style, and is still actively developed and therefore the conclusion is to adopt gRPC for MagicWords.
Description
Supervisor
Vuorimaa, Petri
Thesis advisor
Gurel, Tayfun
Keywords
microservices, RPC, performance, gRPC, apache thrift, apache avro
Other note
Citation