Monorepo Microservice Orchestration is a CLI tool that helps to easily create, build, test and deploy services within the same repository.
Go >= 1.11
go get -u github.com/flowup/mmo
- Golang
- Python (templates and plugins will be available until RC release)
Default initialization template can be seen within
mmo init --help
To create a new project called myproject, run:
$ mmo init myprojectUse parameter -t to change template and parameter -x to pass additional options to template. List of options can be seen using:
$ mmo template [name]MMO provides simple boilerplate generator to easily add components such as microservices, models and plugins via its mmo add command.
mmo add --help
To create a new microservice called book within your project, simply run:
mmo add service book
MMO is fully pluggable via Docker images. Officialy supported plugins can be found in this repo https://github.com/flowup/mmo-plugins
- gRPC service plugin (protobuf)
- gRPC HTTP gateway plugin
- Swagger plugin
- Angular API client plugin
- ...
All plugins can be launched via:
mmo gen
This functionality is supported to avoid long plugin running times for projects with a large number of services.
This command will run all plugins only for services book and auth within your project. All other services will be ignored.
mmo context book auth
mmo gen
mmo context --reset
- Create project using
mmo init myproject, thencd myproject - Create service with grpc gateway using
mmo add service -x Gateway=true myservice- All template options are available using
mmo template [template name]
- All template options are available using
- Add plugins
flowup/mmo-gen-go-grpc-desc:latestandflowup/mmo-gen-grpc-gateway:0.2tomyserviceplugins scope of themmo.yamlmanifest - Implement
exampleservice/protobuf/proto.proto - Lock and install dependencies using
dep ensure - Run
mmo gento generate API stubs, servers and gateway - Implement
exampleservice/service.goaccording to new generated API server