A general framework for microservice based distributed applications
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.idea Removed pipenv Jun 18, 2018
app Fixed autobahn May 12, 2017
components put back the Pipfiles Jul 2, 2018
core Hotfix: transform claims dictionary to string Aug 21, 2018
data/crossbar Initial commit for v1.0 preparation Dec 15, 2017
docker merge context-rework into devel Jun 29, 2018
docs Adjust logo size Jul 11, 2018
mdstudio Hotfix: transform claims dictionary to string Aug 21, 2018
tests removed shared volumes from containers that already use File_path Aug 9, 2018
.coveragerc Added bandit for security analysis May 29, 2017
.docker.env Initial commit for v1.0 preparation Dec 15, 2017
.dockerignore Initial commit for v1.0 preparation Dec 15, 2017
.env.example Initial commit for v1.0 preparation Dec 15, 2017
.gitattributes Eol fixed for .bash_profile Jun 6, 2017
.gitignore Merge remote-tracking branch 'origin/features/v1.0-preparation' into v1 Feb 14, 2018
.isort.cfg Added flake8 May 29, 2017
.style.yapf Added flake8 May 29, 2017
.travis.yml Merge branch 'features/v1.0-preparation' into devel Jul 6, 2018
LICENSE added lincense and codacy badge Sep 13, 2017
README.md fixed typo in README.md Aug 14, 2018
__main__.py Fixed new crossbar run syntax Jun 13, 2018
build.sh change execution permissions of the scripts Feb 16, 2018
clean.sh More aggressive clean of docker containers and images May 14, 2018
codecov.yml Merge remote-tracking branch 'local/features/v1.0-preparation' Jun 13, 2018
crossbar_config.yml WIP: updated crossbar version, started crossbar SCRAM implementation Jun 12, 2018
docker-compose-common.yml Removed pipenv Jun 18, 2018
docker-compose.yml updated lie_structures image #140 Aug 10, 2018
lock-dependencies.sh Update requirement locking, update travis config Jul 6, 2018
requirements-dev.in Removed pipenv Jun 18, 2018
requirements-dev.txt Locked deps on linux Jul 6, 2018
requirements.in Removed pipenv Jun 18, 2018
requirements.txt Locked deps on linux Jul 6, 2018
settings.dev.yml Testing plants docking #87 Apr 6, 2018
standalone.sh added common_resources to standalone script #140 Aug 10, 2018
stop.sh added register components script May 2, 2018
unregister_components.sh stop microservices started with register_components.sh May 4, 2018
update-crossbar.sh Removed pipenv Jun 18, 2018
workspace.sh merge context-rework into devel Jun 29, 2018



Build Status Codacy Badge

Configuration settings

MDStudio is a stand-alone framework to build distributed applications using a broker-based (Crossbar) microservice concept. The only requirement for any piece of software or script to become a microservice is a formal definition of the functional endpoints that expose the functionality the software has to offer. In MDStudio, this definition is a very thin layer available in nearly 12 different languages in which communication is network based using JSON and the input/output of the endpoints is fully described using JSON schemas.


To make development and deployment easier we have setup a docker environment hosting the microservice broker and support microservices in a self consistent environment.

Quick-start docker based installation

The only requirement MDStudio has is Docker. Next, run the builder and start the microservice docker environment under bash as:

Clone the repository using the devel branch
>> git clone -b devel git@github.com:MD-Studio/MDStudio.git
Install the dependencies from the MDStudio folder
>> pip install -r requirements-dev.txt
Install mdstudio
>> pip install -e mdstudio
>> ./build.sh
>> ./standalone.sh

The docker containers only need to be build once and for subsequent usage running standalone.sh is sufficient.

Manual (non-docker) based installation

The docker based environment is the most convenient way for developing microservices and deploying distributed applications. If you are unable to use Docker or want to keep track of the whole environment for yourself, you should follow these installation instructions.

The MDStudio application is written in Python and mostly self contained thanks to the use of an in-application Python virtual environment. The application has currently been successfully tested with Python versions: 2.7

The only external dependencies are:

  • MongoDB - A NoSQL database.
  • Pipenv - A python virtual environment manager.
  • Redis - A fast caching layer.

Install the virtual environment with:

>> pipenv install --skip-lock --dev

The application is started on the command line as:

>> pipenv shell
>> python .

PyCharm IDE Integration

Go to File > Project Settings > Project Interpreter, and add a remote interpreter, and make sure it matches this screen.

Configuration settings

Note specifically:

Interpreter path /root/mdstudio/app-4PlAip0Q/bin/python

Creating microservices

Now that you have successfully installed the MDStudio framework you can start having fun by writing some microservices and using their endpoints in any number of different ways as briefly described in the intro.

For guidance and inspiration on how to write and use microservices, please have a look at the MDStudio examples repository on GitHub.