8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) Evaluating the Impact of Inter Process Communication in Microservice Architectures Benyamin Shafabakhsha , Robert Lagerströmb and Simon Hacksb a School of Electrical Engineering and Computer Science, KTH Royal Institute of Technology, Stockholm, Sweden b Division of Network and Systems Engineering, KTH Royal Institute of Technology, Stockholm, Sweden Abstract With the substantial growth of cloud computing over the past decade, microservice architectures have gained significant popularity and have become a prevalent choice for designing cloud-based applications. Microservices based applications are distributed and each service can run on a different machine. Due to its distributed nature, one of the key challenges when designing applications is the mechanism by which services communicate with each other. There are several approaches for implementing inter process communication (IPC) in microservices; each comes with different advantages and trade-offs. While theoretical and informal comparisons exist between them, this paper has taken an experimental approach to compare and contrast the popular forms of IPC communications. Several load test scenarios have been executed to obtain quantitative data related to performance efficiency, and availability of each method. The evaluation of the experiment indicates that, although there is no universal IPC solution that can be applied in all cases, the asynchronous pattern offers various advantages over its synchronous rival. Keywords Microservices, Inter Process Communication, IPC, Inter-Service Communication, Distributed Systems, gRPC, RabbitMQ 1. Introduction croservice systems [7]. IPC is one of the important challenges of microservice architectures [8]. In mono- Over the past few years, microservices have earned lithic based systems, components can call each other enormous attention and gained popularity from the in- at the language-level while in microservices each com- dustry. They helped large organisation such as Ama- ponent is running on its own process and possibly on zon and Netflix to serve millions of requests per min- a different machine than other services. The choice utes [1]. Microservice architecture is a style of devel- of IPC mechanism is an important architectural deci- oping software as a collection of independent services. sion which can impact the software’s non-functional Each service is running on its own process that is in- requirements [8]. dependent from other processes and can be deployed As of today, there are no concrete explanations or separately from other services [2]. Designing a soft- any standardized approach that can help to decide the ware based on microservices involves answering ques- right IPC method when designing microservice based tions and overcoming technical challenges that often applications. Due to this reason, there is an abun- do not exist in monolithic architecture, like inter pro- dant confusion around the question of when to use cess communication (IPC) [3], service discovery [4], which method and what are the trade-offs for choos- decomposition strategy [5], or managing ACID trans- ing that method. Deciding between a synchronous and actions [6]. asynchronous approach is an important decision to Despite the growth and importance of microser- take in regards to how services collaborate with each vices in industry, there has not been sufficient research other [9]. on microservices, partly due to lacking a benchmark There are two questions this paper is working to- system that reflects the characteristics of industrial mi- wards answering: Woodstock’20: Symposium on the irreproducible science, June 01–05, 1. From performance efficiency standpoint, what 2020, Woodstock, NY are the implications for utilizing available email: bensha@kth.se (B. Shafabakhsh); robertl@kth.se (R. Lagerström); shacks@kth.se (S. Hacks) synchronous and asynchronous methods for im- orcid: 0000-0003-3089-3885 (R. Lagerström); 0000-0003-0478-9347 plementing IPC in microservice architectures? (S. Hacks) 2. How does the IPC method choice impact avail- © 2020 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). ability of the system? CEUR Workshop Proceedings http://ceur-ws.org ISSN 1613-0073 CEUR Workshop Proceedings (CEUR-WS.org) 55 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) The motive behind selecting the performance effi- each service exposes a set of endpoints to enable ciency, and availability as the two criteria for this re- the interactions with other microservices and search is that the choice of IPC method directly im- exchange of information between them. The pacts these two non-functional requirements in a mi- server interacts directly with client through its croservices based system, while other non-functional interface also known as Web API. requirements such as security [10] and maintainabil- ity [11] can span over few other areas and goes beyond • gRPC: gRPC is an open source high perfor- IPC. Being able to measure these qualities in the sys- mance RPC framework designed an developed tem are critical in order to achieve an efficient manage- by Google. Remote procedure call (RPC) is a ment of any software system [12, 13]. Moreover, the mechanism used in many distributed applica- chosen quality attributes are among the top priorities tions to facilitate inter process communication. for most modern applications [14, 15]. RPC was first implemented by Birrell and Nel- In this work, we describe a systematic approach for son [18] and it has been regarded as a proto- selecting IPC method when designing microservices col that enables a message exchange between based software. The remainder of this paper focuses two process with characteristics of low over- on state of the art in identifying different IPC models head, simplicity and transparency [19]. By de- in section 2. Next, in section 3, we discuss the develop- fault, when a client sends a request to a server ment of the prototypes built for the purpose of discov- it halt the process and waits for the results to be ering the relationship between each IPC method and returned. RPC is therefore considered as synch- its impact on performance efficiency and availability. ronous form of communication [20]. Figure 1 We then run a test against each prototype to investi- presents the operational process between client gate its outcome and discuss previous work conducted and server in gRPC. In this model, the client im- in this domain. Finally, we draw a conclusion in sec- plements the same method as its correspond- tion 6. ing server through local objects also known as stubs. 2. State of the Art 2.2. Asynchronous Communication When designing IPC mechanism, there are two type The asynchronous form of communication can be im- of interaction style to choose from: synchronous and plemented in microservices when services exchange asynchronous, which we will shortly introduce next. messages with each other through a message broker. In this form of interaction, the message broker acts as 2.1. Synchronous Communication an intermediary between services to coordinate the request and responses [8]. One of the fundamental Synchronous communication is often regarded as re- differences in asynchronous communication as com- quest/response interaction style. One microservice pared to the synchronous mode is that in asynchro- makes a request to another service and waits for the nous communication the client no longer makes a di- services to process the result and send a response back. rect call to the server and expect an immediate answer. In this style, it is common that the requester blocks its Instead, other services subscribe to the same broker to operation while waiting for a response from the re- pick-up the available requests and process them fur- mote server. Representational state transfer (REST) ther before placing them back to the message queue. application programming interfaces (API) [16] and Figure 2 provides an example of the asynchronous gRPC1 are the most common framework for imple- pattern. In this sample, when a new order is created, menting Synchronous form of communication in mi- the customer service publishes a request to the bro- croservices [8]. ker with some metadata such as customer id, customer email address, etc. Other services such as loyalty, post, • REST API: REST is an architectural style that is and email service subscribe to that broker and take the commonly used for designing APIs for modern request from there without having to communicate web services [17]. In a system that uses REST with Customer service directly. API for its IPC communication, each service typically has its own web-server up and run- ning on a specific port such as 8080 or 443, and 1 https://grpc.io 56 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) Figure 1: gRPC architecture [21]. associated with the requested product from its database. • Product Recommendation Service: This mi- croservice is responsible for fetching the prod- uct recommendations based on the requested productId from its database. • Product Shipping Service: This microservice Figure 2: High-level architecture of Asynchronous pattern is responsible for fetching available shipment [9]. options and the delivery estimates based on the given product from its database. 3. Implementation • Customer Shopping Cart Service: This mi- croservices is responsible for fetching the exist- To identify the quality attributes of each IPC method, ing items in the customer’s shopping cart in or- we have designed and developed a set of microservices der to display them to the customer. for an e-commerce scenario. In this scenario, the goal is to simulate fetching all the information required All the microservices have been developed using to display a product page of an e-commerce website. NodeJS2 . A non-relational database system, Mon- A client requests a product page to be displayed on goDB3 , has been used as the database solution for all his/her device and behind the scenes the following mi- the microservices except for the service responsible for croservices work together to serve that request: providing shipment information. Due to the nature of data required by shipping service, the shipping ser- • Product Information Service: This microser- vice uses MYSQL4 . Docker5 has been utilized to con- vice is responsible for fetching the primary tainerize all the microservices. In order to run the test metadata associated with the requested prod- system, the services have been deployed to Microsoft uct. Information such as product name, price, Azure Kubernetes Cluster Service6 . Table 1 shows the description, color, and image are stored in this 2 https://nodejs.org/en/ microservice database. 3 https://www.mongodb.com/ 4 https://www.mysql.com/ • Product Review Service: This microservice is 5 https://www.docker.com/ responsible for fetching the customer reviews 6 https://azure.microsoft.com/sv-se/services/kubernetes- service/ 57 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) Table 1 to understand how each IPC method reacts differently Kubernetes Cluster specification of the test system. when the concurrent requests and traffic to the system Instance Type Azure DS2-v2 increase or decrease. vCPU 2 Throughput is calculated by the total number of re- Memory 7 GiB quests and responses the method managed to make Storage 8 GiB, SSD, 6400 IOPS within the specified duration of 180 seconds; the Kubernetes Version 1.14.8 higher the number, the higher the throughput and the Node Count 3 better it is. The results are presented in figure 3. The data in- dicates that gRPC has outperformed REST API, and hardware specification of the testing system used for RabbitMQ in the first case with 50 users by being this research. able to process 43 requests higher than REST API, and In the synchronous mode both REST API, and gRPC 147 requests more than RabbitMQ; this signifies that have an identical architecture; in both methods, there synchronous form of communication can offer higher is a direct communication between API Gateway7 and throughput than the asynchronous method in the sit- each microservice. Each microservice acts as server, uation when the load to the system is relatively low. and the API Gateway acts as a client of those server. Meanwhile, the result of the first case also reveals The key difference between REST API and gRPC is the that synchronous form of communication can process underlying communication protocol as well as the for- requests slightly faster than asynchronous form and, mat of the messages they exchange. gRPC has adopted therefore, has lower latency when the number of con- protocol buffer8 as its proprietary message format, current threads10 in the system is low. while the REST API uses JSON [22] format to exchange The second case has double the number of virtual data. users as compared to the first one. Increasing the num- The asynchronous architecture uses RabbitMQ as ber of virtual users causes the number of concurrent message broker. In this pattern, the communication threads in the system to grow and results in longer between API gateway and other services does not take processing time. The same data imply that gRPC has place directly, rather it goes through a mediator also the highest throughput by processing a higher num- known as message queue. In both synchronous and ber of requests compared to RabbitMQ and REST API; asynchronous methods, the API Gateway is the entry however, the gap between gRPC and RabbitMQ is now point to the system, which receives a request with spe- more narrowed than in the first case. In this test, gRPC cific product id from client’s device such mobile app or managed to score the best average response time than web browser over HTTPS protocol. The gateway then REST API and RabbitMQ by 200 milliseconds. The communicates back and forth with each microservice processing time between REST API and RabbitMQ are depending on the IPC method the system uses. equal to each other; however, RabbitMQ managed to process extra 25 requests than its synchronous rival. The number of virtual users in the third case has 4. Results and Evaluation increased four times as compared to the first case. The outcome of the third testing experiment im- 4.1. Performance Efficiency plies considerable difference between synchronous Three test cases have been designed and executed us- versus asynchronous form of communication both in ing Apache JMeter9 . All test cases aim to measure throughput and latency when the number of paral- the throughput of each IPC method. Throughput is lel requests increases. In this test, asynchronous form an essential attribute for calculating performance effi- of communication using RabbitMQ has outperformed ciency. In all three test experiments, the test duration the other two methods by being able to process a was 180 seconds, while the number of concurrent vir- total of 4480 requests within the given period while tual users that continuously send requests to the sys- gRPC managed to process 132 requests lower than tem and wait for response has been varied. The motive RabbitMQ, and REST API processed 146 less requests behind having test duration as a constant variable and than its asynchronous rival. What makes the asynch- number of virtual users as the controlled variable is ronous pattern to operate better in the third test case is that, in asynchronous form the performance decline 7 https://microservices.io/patterns/apigateway.html take place more gradually while in the synchronous 8 https://developers.google.com/protocol-buffers 9 https://jmeter.apache.org/ 10 Each virtual user occupies one thread in the system. 58 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) Figure 3: Throughput comparison. pattern the performance begins to drop radically as and the number of requests/responses were not been soon as the load to the system intensifies. tracked since they do not contribute to determining the availability of the method. The first case ran with 4.2. Availability 200 virtual users, the second with 300 virtual users, and third with 400 virtual users. Without having a There are variety of parameters that can affect avail- high number of parallel users measuring availability ability of a system –even hardware components can becomes more challenging as the system remains op- play a role in determining the availability rate of a sys- erational for a significantly longer duration. tem. For this measurement, all the parameters out- Figure 4 provides a summary of the conducted tests. side IPC has been ignored. The availability of each During the first test, it took about seven minutes for IPC method has been calculated by using the following the services to become unavailable using RabbitMQ, equation [23]: while gRPC went down after about five minutes, and the REST API took approximately four and a half 𝑀𝑇 𝑇 𝐹 𝐴𝑣𝑎𝑖𝑙𝑎𝑏𝑖𝑙𝑖𝑡𝑦 = , minutes. These numbers were then dropped in each 𝑀𝑇 𝑇 𝐹 + 𝑀𝑇 𝑇 𝑅 method in the subsequent tests as the number of par- with MTTF standing for "Mean Time to Failure," and allel requests were doubled. After the services became MTTR for "Mean Time to Recovery." MTTF represents unavailable, the Kubernetes cluster has been manu- the duration that the system is expected to last in op- ally restarted. From that moment, both gRPC and eration before failure occurs. In contrast, MTTR rep- REST API took about 20 seconds only to become avail- resents the duration the system requires to return to able again, while RabbitMQ took ten extra seconds. operation after a failure has occurred. The higher the The main reason behind RabbitMQ taking longer than MTTR, the longer it takes for the system to recover synchronous form to return back to operation is the from a failure, which consequently reduces the avail- fact that it has an extra component known as a mes- ability of the system. sage broker that requires to be refreshed and establish Based on this formula, three other tests were exe- a new connection with each service. From this exper- cuted using Apache Jmeter against all the three differ- iment, it is possible to infer that an asynchronous ap- ent IPC methods to discover which one offers higher proach offers higher availability than its synchronous availability. Unlike the previous test cases that had a opponents. fixed duration, these test cases had no specific dura- Consequently, if microservices use a synchronous tion. They ran as long as the services became unavail- based communication both client and server must be able due to the high number of requests coming to the responsive at all time, otherwise the request will fail system. Further, in this test, the average response time, after a specific duration depending on the configura- 59 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) Figure 4: Availability comparison. tion. In contrast, a temporary outage of the server in threats to validity. First, we performed our experi- an asynchronous setting causes minimal to no impact ments just with single technologies as representatives to the consumer, since the consumer is loosely coupled for certain principles (synchronous vs. asynchro- with the server. The requests can stay in the message nous). Therefore, our results can just indicate certain queue and be processed at the later timing when the advantages of these principles. Second, we simulated server is back to operation. The asynchronous pattern no complete system but just a small part of a bigger offers capabilities that can help the system to improve system, e.g., there is no communication between the its availability and resiliency from outage. It allows microservices during our requests. However, this continuous operation even if there is a failure in one ofensures that we are not testing other effects, but the system’s components without compromising the only the interaction between the gateway and the availability of the entire system. microservices. Third, we were using technologies that are highly configurable, thus a completly different 4.3. Discussion and Threats to Validity configuration could lead to other results. However, as we just changed configurations where necessary, we In addition to the two non-functional requirements assume that others can reproduce our results, espe- that have been evaluated throughout this work, it is cially as they are in accordance with our theoretical important to take into account the functional require- expectations. ments for which microservices are being developed for. It is essential to distinguish whether the scenario requires an immediate response back from services or 5. Related Work not. To elaborate further on this, in the proof of con- cept scenario that was built during this work, display- Sufficient work has been done to benchmark the per- ing a product page for an e-commerce was simulated. formance of microservices, and compare and contrast In this scenario, the client sends a request to load the it with other architectures such as service oriented ar- product page and expects an immediate result back. chitecture (SOA) [24], or with the monolithic architec- The result of the request can either be the product page ture [25, 26, 27, 28, 29]. or an error that indicating the request was failed. The Ueda et al. [30] conducted research at IBM that key point in this scenario is that the client expects an aimed to design an infrastructure that is optimized for immediate result. In such scenarios the synchronous running microservice architectures. The team built form of communication can be more suitable as these two versions of the sample application. One based on scenarios cannot take advantage of the features that monolithic and the other based on microservices. The an asynchronous form can offer. team discovered a significant performance overhead Furthermore, our research incorporates some and higher hardware resource consumption in the mi- 60 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) croservices version of the application as compared to Further, the authors argue that microservice archi- monolithic one. The paper has marked poor design tectures lead to a higher availability as the new system of process communication in microservice architec- is broken down into several components and decou- tures as one of the significant performance degrada- pled from each other, which makes it possible to load- tions, and, therefore, unleashed the potential for fur- balance individual services as needed. This was par- ther research and improvements in this topic. The pa- ticularly not possible in the legacy monolithic based per has also pointed out that network virtualization system. At the same time, the new architecture of- techniques, which are often used in a microservice ar- fers higher reliability and can better cope with fail- chitectures, is another non-negligible reason behind ures. This is due to the fact that in the new system the the performance gap of monolithic versus microser- communication relies on a message-broker that can be vice architecture. The paper, however, has not pre- configured to ensure all messages get delivered even- scribed any specific solution or suggestion as to how tually. to overcome these challenges but rather pointed out the potential future work for it. Fernandes et al. [31] compared REST API per- 6. Conclusion formance versus advanced message queuing proto- When developing a microservices based system, the col (AMQP) [32], which is one of the protocols used choice of IPC method is an important decision to in message-based communication that falls under make. In this paper, we compared synchronous and asynchronous category. The study has been done by asynchronous IPC methods with regards to perfor- measuring the averaged exchanged messages for a pe- mance efficiency and availability. The outcome of riod of time using the REST API and AMQP. The au- our evaluation indicates that on average asynchro- thors performed the experiments by setting up two in- nous approach provides better performance efficiency dependent software instances that constantly received and higher availability. We also discussed a scenario messages for a 30 minutes period with an average 226 where synchronous methods are more suitable to be request per second. Each instance processed the re- utilized. Therefore, both synchronous and asynchro- ceived input message and stored them into a persis- nous type of communication has to be adopted accord- tent database. After executing the experiments, the ing to the functional and non-functional requirements authors concluded that for scenarios where there is a of the specific components. need to receive and process-intensive amount of data, AMQP performs far better than REST API as it has a better mechanism for data loss prevention, better References message organization, and utilize lower hardware re- sources. [1] J. Thönes, Microservices, IEEE software 32 (2015) In contrast to Fernandes et al., check we in our work 116–116. the behavior of the systems with different loads. We [2] D. Namiot, M. Sneps-Sneppe, On micro-services recognize that synchronous approaches perform good architecture, International Journal of Open In- with low loads while asynchronous approaches scale formation Technologies 2 (2014) 24–27. better at higher loads. [3] L. L. Peterson, N. C. Buchholz, R. D. Schlicht- Meanwhile, Dragoni et al. [28] have conducted a ing, Preserving and using context information migration for a real-world mission-critical case study in interprocess communication, ACM Trans. in the banking industry by transforming a monolithic Comput. Syst. 7 (1989) 217–246. doi:10.1145/ software into a microservice architecture. They ob- 65000.65001. served how availability and reliability of the system [4] S. Haselböck, R. Weinreich, G. Buchgeher, Deci- changed as a result of the new architecture. The so- sion guidance models for microservices: service lution consists of decomposing several large compo- discovery and fault tolerance, in: Proceedings of nents to which some of them requires to communicate the Fifth European Conference on the Engineer- with third-party services. The services in the new ar- ing of Computer-Based Systems, 2017, pp. 1–10. chitecture use message-based asynchronous commu- [5] J. Fritzsch, J. Bogner, A. Zimmermann, S. Wag- nication as its IPC model to exchange data with each ner, From monolith to microservices: A clas- other. The authors believe that aiming to have a simple sification of refactoring approaches, in: J.-M. and decouple integration between services and follow- Bruel, M. Mazzara, B. Meyer (Eds.), Software En- ing principle to handler failure will eventually lead to gineering Aspects of Continuous Development higher reliability in microservice architecture. 61 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) and New Paradigms of Software Production and Systems (TOCS) 2 (1984) 39–59. Deployment, Springer International Publishing, [19] J.-K. Lee, A group management system anal- Cham, 2019, pp. 128–141. ysis of grpc protocol for distributed network [6] C. K. Rudrabhatla, Comparison of event choreog- management systems, in: SMC’98 Conference raphy and orchestration techniques in microser- Proceedings. 1998 IEEE International Conference vice architecture, Int J Adv Comput Sci Appl 9 on Systems, Man, and Cybernetics (Cat. No. (2018) 18–22. 98CH36218), volume 3, IEEE, 1998, pp. 2507– [7] X. Zhou, X. Peng, T. Xie, J. Sun, C. Xu, C. Ji, 2512. W. Zhao, Poster: Benchmarking microservice [20] R. A. Olsson, A. W. Keen, Remote Procedure systems for software engineering research, in: Call, Springer US, Boston, MA, 2004, pp. 91–105. 2018 IEEE/ACM 40th International Conference doi:10.1007/1-4020-8086-7_8. on Software Engineering: Companion (ICSE- [21] S. G. Du, J. W. Lee, K. Kim, Proposal of grpc as Companion), IEEE, 2018, pp. 323–324. a new northbound api for application layer com- [8] C. Richardson, Microservices patterns: with ex- munication efficiency in sdn, in: Proceedings of amples in Java, Manning Publications, 2019. the 12th International Conference on Ubiquitous [9] S. Newman, Building microservices : designing Information Management and Communication, fine-grained systems, first edition.. ed., 2015. 2018, pp. 1–6. [10] P. Johnson, D. Gorton, R. Lagerström, M. Ekst- [22] C. Severance, Discovering javascript object no- edt, Time between vulnerability disclosures: A tation, Computer 45 (2012) 6–8. measure of software product vulnerability, Com- [23] P. Johnson, R. Lagerström, M. Ekstedt, M. Öster- puters & Security 62 (2016) 278–295. lind, It management with enterprise architecture, [11] R. Lagerström, P. Johnson, M. Ekstedt, Architec- KTH, Stockholm (2014). ture analysis of enterprise systems modifiability: [24] T. Erl, Service-oriented architecture: concepts, a metamodel for software change cost estima- technology, and design, Pearson Education India, tion, Software quality journal 18 (2010) 437–468. 1900. [12] P. Närman, P. Johnson, R. Lagerström, U. Franke, [25] T. Cerny, M. J. Donahoo, J. Pechanec, Dis- M. Ekstedt, Data collection prioritization for sys- ambiguation and comparison of soa, microser- tem quality analysis, Electronic Notes in Theo- vices and self-contained systems, in: Proceed- retical Computer Science 233 (2009) 29–42. ings of the International Conference on Research [13] M. Ekstedt, U. Franke, P. Johnson, R. Lagerström, in Adaptive and Convergent Systems, RACS T. Sommestad, J. Ullberg, M. Buschle, A tool ’17, Association for Computing Machinery, New for enterprise architecture analysis of maintain- York, NY, USA, 2017, p. 228–235. doi:10.1145/ ability, in: 2009 13th European Conference on 3129676.3129682. Software Maintenance and Reengineering, IEEE, [26] D. Taibi, V. Lenarduzzi, C. Pahl, Processes, mo- 2009, pp. 327–328. tivations, and issues for migrating to microser- [14] U. Franke, M. Ekstedt, R. Lagerström, J. Saat, vices architectures: An empirical investigation, R. Winter, Trends in enterprise architecture IEEE Cloud Computing 4 (2017) 22–32. practice–a survey, in: International Workshop [27] R. Chen, S. Li, Z. Li, From monolith to microser- on Trends in Enterprise Architecture Research, vices: A dataflow-driven approach, in: 2017 Springer, 2010, pp. 16–29. 24th Asia-Pacific Software Engineering Confer- [15] P. Johnson, R. Lagerström, P. Närman, M. Simon- ence (APSEC), 2017, pp. 466–475. sson, Extended influence diagrams for system [28] N. Dragoni, S. Dustdar, S. T. Larsen, M. Mazzara, quality analysis, Journal of Software 2 (2007) 30– Microservices: Migration of a mission critical 42. system, arXiv preprint arXiv:1704.04173 (2017). [16] R. T. Fielding, R. N. Taylor, Architectural styles [29] Z. Kozhirbayev, R. O. Sinnott, A performance and the design of network-based software ar- comparison of container-based technologies for chitectures, volume 7, University of California, the cloud, Future Generation Computer Systems Irvine Irvine, 2000. 68 (2017) 175 – 182. doi:10.1016/j.future. [17] M. Masse, REST API Design Rulebook: Design- 2016.08.025. ing Consistent RESTful Web Service Interfaces, " [30] T. Ueda, T. Nakaike, M. Ohara, Workload char- O’Reilly Media, Inc.", 2011. acterization for microservices, in: 2016 IEEE in- [18] A. D. Birrell, B. J. Nelson, Implementing remote ternational symposium on workload characteri- procedure calls, ACM Transactions on Computer zation (IISWC), IEEE, 2016, pp. 1–10. 62 8th International Workshop on Quantitative Approaches to Software Quality (QuASoQ 2020) [31] J. L. Fernandes, I. C. Lopes, J. J. Rodrigues, S. Ul- lah, Performance evaluation of restful web ser- vices and amqp protocol, in: 2013 Fifth Interna- tional Conference on Ubiquitous and Future Net- works (ICUFN), IEEE, 2013, pp. 810–815. [32] S. Vinoski, Advanced message queuing protocol, IEEE Internet Computing 10 (2006) 87–89. 63