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 myproject
Use 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:latest
andflowup/mmo-gen-grpc-gateway:0.2
tomyservice
plugins scope of themmo.yaml
manifest - Implement
exampleservice/protobuf/proto.proto
- Lock and install dependencies using
dep ensure
- Run
mmo gen
to generate API stubs, servers and gateway - Implement
exampleservice/service.go
according to new generated API server