Concurrent Programming with
Actors and Microservices
Common problems require applications to manage multiple concerns simultaneously. A convenient approach is the concept of concurrent programming. We investigate two different models for introducing concurrent computational units into software architectures. One approach is the actor model that defines theoretically well-known constructs supporting concurrent, parallel and distributed execution in a transparent way. The other approach is an architectural style based on microservices, a recent trend that gained academic and industrial popularity. Microservices facilitate many principles of the old Unix philosophy by composing complex functionality through small, independent, highly cohesive and loosely coupled executables. These programs interoperate via lightweight, technology-heterogeneous messaging channels. The deployment modality of microservices conceives concurrent execution through the operating system scheduler. This work compares the programming of concurrent computation through actors and microservices with respect to a non-trivial concurrent system scenario. We argue that both approaches share many conceptual similarities and show few but significant differences. Both models have the same expressive capabilities regarding concurrent programming concerns like communication and scalability, but are subject to different trade-offs. We provide implementations of the system scenario based on actor and microservice architectures. Benchmark results of these implementations suggest that actors provide better system efficiency through a smaller codebase. Microservice architectures consume significantly more system resources and suffer especially from purely synchronous communication mechanisms.
What is this?
I am Maximilian Irro and this is my master thesis ("Diplomarbeit") I worked on in 2017/2018 as a requirement for the completion of my master curriculum Software Engineering & Internet Computing at TU Wien. The supervisor was Franz Puntigam from the Institute for Information Systems Engineering, Compilers and Languages Group.
The submitted PDF version and an equivalent HTML version are provided below. The linked repository contains all materials related to this work (documents and implementation source codes, measurement data, etc.).
If you want to cite this thesis, please use the following BibTeX entry:
@mastersthesis{Irro18,
author = {Maximilian Irro},
title = {Concurrent Programming with Actors and Microservices},
school = {TU Wien},
year = {2018},
keywords = {concurrent programming, actors, microservices},
timestamp = {20180930},
url = {https://repositum.tuwien.ac.at/urn:nbn:at:at-ubtuw:1-115820}
}
Contents
- 1 Introduction
- 2 Concurrent Computation
- 3 Actor Model
- 4 Microservice Paradigm
- 5 Implementation
- 6 Evaluation
- 7 Conclusion
- A Feed Structure Example
- List of Acronyms and Abbreviations
- List of Figures
- List of Tables
- Bibliography
The logos on the cover page are property of the TU Wien and the Faculty of Informatics. The icons are from www.flaticon.com and are licensed by CC 3.0 BY. The PDF and HTML icons were made by Smashicons and the GitHub icon was made by Dave Gandy. The design of this page was inspired from Eloquent JavaScript by Marijn Haverbeke.