/mono2micro

Primary LanguageHTMLMIT LicenseMIT

Mono2Micro

Tools to migrate a monolith to a microservices architecture, focusing on microservices identification, where the set of identified microservices minimizes the number of system transactions (microservices) associated with a business transaction, aiming to control introduction of relaxed consistency in the system.

Currently implemented for Spring-Boot monoliths that use FenixFramework and Spring Data ORMs.

Pre-Requisites

  • java 8+ (java --version)
  • nodejs 10+ (node --version)
  • npm 6+ (npm --version)
  • python 3.5+ (python --version)
  • (Non docker) run: pip install -r backend/src/main/resources/requirements.txt
  • Create the file specific.properties in backend/src/main/resources with the correct python command (example in file specific.properties.example)

Run Collectors

cd collectors/
see README.md for each collector

Run Decomposition Generator

docker-compose build
docker-compose up

OR

docker-compose build --no-cache
docker-compose up --build

Accessing

The frontend can be accessed in http://localhost:3000 and the mongoDB contents in http://localhost:8081

Experimentation Data

  • The monolith codebases used by the spoon-callgraph and commit-collection Collectors are available here.
  • The monolith representations, Access and Repository Based, for some of the codebases are available here.

Publications Data

Evaluation package using Spoon and Commits collectors

Looking for a reproducible evaluation package? It's available here.

License

This project is licensed under the MIT License - see the LICENSE file for details.