Motive
Micro-toolkit started to be a smaller project named ZMQ Service Suite, this project included a set of libraries that would allow you to build microservices using ZeroMQ as a transport layer. The libraries were built to solve a single problem, expose business logic as microservices with 0 friction using RPC style.
The libraries were being used in several enterprise projects and some patterns started to appear.
Goal
The idea is to evolve the project into a set of tools and microservices than can be reused across projects.
Current State
Currently the toolkit uses a minimal service broker implemented on top of ZeroMQ. The broker acts as a Service Directory and Load Balancer, this component will do the bridge between services and clients with support for multiple technologies. For more information about this please check ZSS Specs.
The client and services libraries hide the transport layer complexity under a well defined API. This approach will allow changing the implementations and topologies without the need to change the service implementations.
The current stable projects/features:
- Node.js Broker: Node.js ZeroMQ Broker implementation of ZSS Protocol with support for service discovery and load balancing
- Node.js Client: Node.js ZeroMQ Client implementation of ZSS Protocol
- Node.js Service: Node.js ZeroMQ Service implementation of ZSS Protocol
- Node.js API Generators: Node.js API generators, easy bootstraping to create a REST API and connect to microservices using conventions
- Node.js API Example: Node.js API example on how to use the micro-toolkit api generators to build a facade API that connects to microservices from micro-toolkit
- Ruby Client: Ruby ZeroMQ Service implementation of ZSS Protocol
- Ruby Service: Ruby ZeroMQ Service implementation of ZSS Protocol
Future
- HTTP Rest API proxy, the full configurable API is not done yet but you can take a look on the API Generator and API node-js example.
- Administration Console with support for: list available services and their instances, to execute requests to services, replay messages, view service metrics;
- Support service discovery and remove broker single point of failure
- Metrics service
- Authentication service
- Generic HTTP connectors
- Add support to other languages
- Support for event driven services
Where to start
- Ruby Client: Ruby Client sample
- Ruby Service: Ruby Service sample
- Node.js API Example: Node.js API example to easily expose micro toolkit services as HTTP REST API.
Authors and Contributors
The project is currently authored and maintained by @pjanuario and @dadah. Contributors are welcome, feel free to contact us to discuss any idea or any clarification, bonus points for pull requests! :D