MicroART-Tool is the first prototype implementation of a more generic approach named MicroART.
The overall approach is presented in the Towards Recovering the Software Architecture of Microservice-based Systems published at 1st International Workshop on Architecting with MicroServices, 2017. The slides of the approach are also available.
The details on the tools are presented in MicroART: A Software Architecture Recovery Tool for Maintaining Microservice-based Systems published at [1st International Conference on Software Architecture (ICSA), Tool Papers,2017]. The slides of the tool are also available.
This software is published for academic and non-commercial use only.
The prototype has been tested in the following conditions.
Operative System Host Machine
Linux Kubuntu 16.04
Linux kernel version 4.4.0-31-generic
Docker Client/ Server
Version: 1.13.0
API version: 1.25
Go version: go1.7.3
Git commit: 49bf474
Built: Tue Jan 17 09:58:26 2017
OS/Arch: linux/amd64
Version: 1.13.0
API version: 1.25 (minimum version 1.12)
Go version: go1.7.3
Git commit: 49bf474
Built: Tue Jan 17 09:58:26 2017
OS/Arch: linux/amd64
Experimental: false
docker-machine version 0.9.0, build 15fd4c7
docker-compose version 1.10.0, build 4bd6f1
Eclipse Neon .2 release 4.6.2
Apache Maven 3.3.9
Nodejs 4.2.6
NPM 3.5.2
Openjdk 1.8.0_121
sudo apt-get update
sudo apt-get install curl linux-image-extra-$(uname -r) linux-image-extra-virtual
sudo apt-get install apt-transport-https ca-certificates
curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -
apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-get install software-properties-common
sudo add-apt-repository \
"deb https://apt.dockerproject.org/repo/ \
ubuntu-$(lsb_release -cs) \
main"
sudo apt-get update
sudo apt-get -y install docker-engine
apt-cache madison docker-engine
In this project we have used Docker version 1.13.0-0
sudo apt-get -y install docker-engine=<1.13.0-0>
Manage Docker as a non-root user
sudo groupadd docker
sudo usermod -aG docker $USER
A session logout may be needed.
Configure Docker to start on boot
sudo systemctl enable docker
Docker-Machine
curl -L https://github.com/docker/machine/releases/download/v0.9.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
chmod +x /tmp/docker-machine &&
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
docker-machine version
Docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
To check the docker version you can run
docker-compose --version
We have used AcmeAir as public benchmark for our prototype. AcmeAir uses Docker and is a simple microservice-based application.
git clone https://github.com/wasperf/acmeair-nodejs.git
cd acmeair-nodejs
npm install
cd node_modules/.bin
npm install
cd ..
docker network create --driver bridge my-net
set NETWORK=my-net && export NETWORK=my-net
Before being able to build the DockerFiles, it is necessary to modify each Dockerfile in the root by replacing the first row with the following.
FROM ibmcom/ibmnode
The Dockerfile build may take a while
docker-compose build
docker-compose up
The up command starts the services in only one window, and in the terminal you can look at the application logs and communication logs.
Can take up to one or two minute for all services to be ready to run. You can visit the localhost page of the system at:
http:://127.0.0.1:80/main/acmeair
If the page is not ready, the system might require more time or try the following Docker-machine commands:
docker-machine create --driver virtualbox default
eval "$(docker-machine env default)"
Now AcmeAir is ready to be used, but note that the Support service is not working.
Download and run Eclipse. Clone this repository and copy it inside the given Eclipse workspace.
git clone https://github.com/microart/microART-Tool.git
cd microART
Open eclipse Neon.
Set a Workspace.
Go to *Project Explorer*, Right-Click and choose *Import*.Select *Existing Maven Project*
Select the proper directory and wait until the maven build is completed.
Right-Click on project -> *Properties*
Click on *Java Build Path*
Click on *Add JAR*
Add the JAR inside the project, in src/main
To run just click Start on the top bar of Eclipse.
Download and run Eclipse Epsilon.
Create a workspace
Import, from *General source* all the project present in the directory PresentationProject
Right Click on project called MinimalDSL, Run as an Eclipse Application
Wait until a new runtime eclipse istance is ready.
Once the new eclipse istance is started, create a runtime directory in the workspace and import from *General source*, the project into RunTime/runtime-EclipseApplication