Small EC2 cloud usage demo for choreographies

The CHOReOS middleware must be capable of providing the required runtime support to deploy, enact, monitor, and dynamically reconfigure large-scale choreographies. These choreographies might be large scale in one or more of the following dimensions: number of requests, users, roles, services, nodes, and communication among services. For instance, the middleware should be scalable enough to accommodate choreography with 1 thousand simultaneous users or with 100 different roles, or with 100 services for a given role, or with thousands of messages exchanged per second.

To be able to accommodate such large magnitudes, the current solution provided by the state of the art of parallel and distributed computing relies on clusters of machines, often organized in federated groups across the Internet in geographically distributed locations. The CHOReOS middleware will benefit from two modern technologies developed within the last 10 years: Cloud and Grid Computing. Cloud Computing will be the default mechanism for providing scalability within CHOReOS while Grid Computing will be used in more specific cases in which parallel computation is required.
The video demo is the initial prototype of the Node Pool Manager component, responsible for providing the infrastructure over which service choreographies will run.

To develop this system, we used the following technologies:
  • Eclipse – one of the most used and mature environment for Java development;
  • Git / Github – a decentralized source code repository, where the code is available.
  • Java programming Language (version 1.6) – Java language was the official language adopted by the the CHOReOS project, so we decided to use it to follow the projects needs;
  • Chef – a very respectful configuration management tool.
  • JAX-RS – Apache CXF implementation – for the REST services;
  • JClouds – a very mature implementation of the OCCI specification;
  • Petals DSB – A distributed service bus software,
  • jsch – a library for SSH access to machines;
  • JUnit 4 for Unit and Integration Tests – the project has a high test coverage (84% of code is covered by tests). Some of the tests use stubs and mocks, other do real things (really creates machines, and executes code in them using SSH protocol).
To download code and run the tests, the simplest way is through command line interface by following these steps (requires maven version 3 or above):
$ git clone git://
$ cd choreos_middleware/NodePoolManager
#configure your keys in src/main/resources/ following the template in the same directory
$ mvn test
Some exceptions will be thrown, but they are expected, just notice the final report that should be ready in about four minutes.
This prototype was developed with my friend Carlos Eduardo Moreira dos Santos

Leave a Reply

Your email address will not be published. Required fields are marked *