CHOReOS Enactment Engine

Leonardo Leite, Carlos Eduardo Moreira, Daniel Cordeiro, Marco Aurélio Gerosa, Fabio Kon
In: IEEE 13th International Symposium on Network Computing and Applications (NCA), pp 121 - 128, 2014.

The CHOReOS Enactment Engine provides a Platform as a Service (PaaS) that automates the distributed deployment of service compositions (also called choreographies) in cloud environments.

Published paper

The published version on IEEE Xplore Digital Library is here.
  • Automated creation of cloud nodes (virtual machines).
  • APIs to automate the deployment of choreographies on the cloud.
  • Scalable deployment for large-scale choreographies.
  • Support to multi-cloud deployment.
  • Usage of already-running services within a choreography.
  • Automated deployment of monitoring infrastructure:
    • Ganglia probes to monitor low level resources (memory, cpu, and disk) of cloud nodes;
  • Automatic deletion of unused cloud resources.
  • APIs to vertical and horizontal scaling.

How does it work

Enactment Engine (EE) is an open source middleware that provides an Platform as a Service (PaaS) layer to automate choreography deployment. The person responsible for the deployment of a choreography (the deployer) may write a simple declarative choreography description and leave it to Enactment Engine to perform all the deployment process, installing choreography services in a virtualized environment using several virtual machines.

Enactment Engine depends on an Infrastructure as a Layer (IaaS) provider. The role of this IaaS provider is to provide virtual machines (VMs). EE decides how many VMs to create as well as which service install in each VM, and installs the service on the selected VM together with the required platform dependencies (Operational System configurations, application servers, etc.).

Deployers that would like to use Enactment Engine to deploy their choreographies must first set up and start EE as a service. Afterwards, the deployer must write the choreography specification (Java POJOs or XML format) and use the EE REST interface to request the choreography deployment (a Java client is also provided to invoke the REST API).

Targeted audience

Deployers that would like to automate the deployment of a service composition. This is specially useful in large-scale choreography deployments where manual deployment would be too much time consuming and error prone. Automated deployment is also very useful when choreographies must be redeployed frequently, which may happen for testing purposes. Therefore, automated deployment leverages the construction of an automated acceptance test suite, which brings agility to the software development process.

Researchers studying service compositions can also take advantage from EE, since our middleware provides all the low level handling for services deployment, enabling the researcher to focus on higher level aspects (e.g. measuring response time with different service substitutions), and leveraging easily repeatable experiments.


The main requirements to run Enactment Engine are an IaaS provider account. The IaaS providers supported out of the box are Amazon EC2 and Open Stack. Please note that, when using Amazon as the IaaS provider, you are responsible for the costs. Similarly, when using Open Stack, you are responsible for setting up and administering an Open Stack instance (or getting access to an already existing one). You need also a server to install and run Enactment Engine as a service. Such server may be able to run Java 7 and Maven 3.

Supported technologies

Enactment Engine deploys web services developed by their clients. Such services may use different technologies, standards, languages, etc. Out of the box, EE supports SOAP services distributed as JAR or WAR packages. EE has an extensible design to allow for its customization so new types of services may be deployed by it.

Enactment Engine also supports multi-cloud deployment, which means the services of a single choreography may be distributed among different clouds. The current supported cloud technologies to instantiate virtual machines are Amazon EC2 and Open Stack. Enactment Engine may be also easily extended to support new cloud technologies.


If you want to run EE, you can download the binaries here: snapshot of 2014-03-03.

If you want to use the Java API in your own program to invoke the EE, please, refer to the "2.4 Java client" section on the User Guide.

Source code


The EE's license is the Mozilla Public License v2, which means you are free to use Enactment Engine within your business, and that services provided by EE may be invoked from any software application. It also means you are invited to contribute to the EE improvement as long the original source code remains open.

User guide


    • Leonardo Leite.
    • E-mail: leofl at ime dot usp dot br