Data-Driven Workflows for Microservices: Genericity in Jolie

Larisa Safina, Manuel Mazzara, Fabrizio Montesi, Victor Rivera [2016].
In proceedings of AINA 2016, pp. 430-437.

Microservices is an architectural style inspired by service-oriented computing that has recently started gaining popularity. Jolie is a programming language based on the microservices paradigm: the main building block of Jolie systems are services, in contrast to, e.g., functions or objects. The primitives offered by the Jolie language elicit many of the recurring patterns found in microservices, like load balancers and structured processes. However, Jolie still lacks some useful constructs for dealing with message types and data manipulation that are present in service-oriented computing. In this paper, we focus on the possibility of expressing choices at the level of data types, a feature well represented in standards for Web Services, e.g., WSDL. We extend Jolie to support such type choices, and enable Jolie processes to act on data generically (without knowing which type it has in the choice). We show the impact of our implementation on some of the typical scenarios found in microservice systems. This shows how computation can move from a process-driven to a data-driven approach, and leads to the preliminary identification of recurring communication patterns that can be shaped as design patterns.
Additional notes
Cite (BibTeX)
Click to expand
  author       = {Larisa Safina and
                  Manuel Mazzara and
                  Fabrizio Montesi and
                  Victor Rivera},
  editor       = {Leonard Barolli and
                  Makoto Takizawa and
                  Tomoya Enokido and
                  Antonio J. Jara and
                  Yann Bocchi},
  title        = {Data-Driven Workflows for Microservices: Genericity in Jolie},
  booktitle    = {30th {IEEE} International Conference on Advanced Information Networking
                  and Applications, {AINA} 2016, Crans-Montana, Switzerland, 23-25 March,
  pages        = {430--437},
  publisher    = {{IEEE} Computer Society},
  year         = {2016},
  url          = {},
  doi          = {10.1109/AINA.2016.95},
  timestamp    = {Fri, 24 Mar 2023 00:03:54 +0100},
  biburl       = {},
  bibsource    = {dblp computer science bibliography,}