Server
The micro server is a distributed systems runtime for the cloud and beyond.
Overview
The Micro Server is a distributed systems runtime or also known as a cloud services operating system. The server builds on the Go Micro framework, providing service level abstractions of the interfaces as RPC. The server started as a toolkit for entrypoints such as CLI, API Gateway and Web dashboard. It’s since evolved into a full operating environment for microservices which abstracts away the complexity of the underlying infrastructure.
Design
The server starts as a single binary called micro
available at github.com/micro/micro. It takes
every Go Micro interface and provides it as a service with RPC endpoints equivalent to the interface.
These RPC services then leverage the Go Micro interfaces internally making them entirely pluggable.
So creating a runtime agnostic operating system and anti-corruption layer that forms the basis
of a platform.
Services included:
- CLI - a standard command line interface for the terminal
- API - external api gateway serving http/json and sending internal RPC
- Web - Web dashboard that provides a proxy for serving web apps as microservices
- Proxy - service to service gRPC proxy encapsulating the go-micro client/server
- Bot - A Slack bot for ChatOps with all the same commands as the CLI
- Runtime - Service deployment
- Registry - Service discovery
- Broker - Asynchronous pubsub messaging
- Proxy - Service to service proxy for gRPC communication
- Store - Distributed key-value storage
- Debug - Stats, logs and tracing for debugging
- Auth - User and service authentication and authorization
- Config - Dynamic configuration service
TODO
Open source related requirements
- Micro as a server
- Code generated gRPC clients
- Clean idiomatic libraries wrapping the gRPC clients
- Angular based web templates
- API service interface and code generation