Multitier Languages for Reactive Microservice Architectures
Throughout the last years, Microservice Architectures (MSA) became increasingly popular. This architectural style fosters the design of maintainable applications by composing distributed systems out of small services, each of which provides its own well-delimited set of functionalities. Such Microservices are independently develop- and deployable. However, MSAs force developers to deal with a number of low level programming details like communication protocols, data formats, or interface incompatibility. Additionally, retracing data flow across reactive microservices that use asynchronous event-based communication can be troublesome, as service independence can impede obtaining an overarching view of the system.
Multitier programming allows developing the components of a distributed system within a single compilation unit, abstracting away the complexity associated with distribution. Details such as remote communication or data conversion are taken care of by the language. The compiler splits the code into the corresponding tiers, adds necessary network communication, and generates the deployment units.
We present work-in-progress on a novel approach to combine the upsides of both worlds for developing reactive, event-based MSAs by extending the multitier language ScalaLoci with a containerization extension. Our approach provides language-level features to address modular design and development, and compiles down to microservices which are scalable, fault tolerant, and independently deployable.
This paper is submitted as a work-in-progress paper.