Micro addresses the key requirements for building services in the cloud. It leverages the microservices architecture pattern and provides a set of services that act as the building blocks of a platform.
Micro deals with distributed systems’ complexity and provides simpler programmable abstractions to build on.
Below are the core components that make up Micro.
Micro is built as a microservices architecture and abstracts away the complexity of the underlying infrastructure. We compose this as a single logical server to the user but decompose that into the various building block primitives that can be plugged into any underlying system.
The server is composed of the following services.
- API – A Gateway that dynamically maps HTTP requests to RPC using path-based resolution
- Auth – Authentication and authorization out of the box using JWT tokens and rule-based access control.
- Config – Dynamic configuration and secrets management for service level config without reload
- Events – Event streaming with ordered messaging, replay from offsets and persistent storage
- Broker – Ephemeral pubsub messaging for asynchronous communication and distributing notifications
- Network – Inter-service networking, isolation and routing plane for all internal request traffic
- Proxy – An identity-aware proxy used for remote access and any external grpc request traffic
- Runtime – Service lifecycle and process management with support for source to running auto build
- Registry – Centralised service discovery and API endpoint explorer with feature-rich metadata
- Store – Key-Value storage with TTL expiry and persistent crud to keep microservices stateless
Micro comes with a built-in Golang framework for service development. The Go framework makes it drop-dead simple to write your services without having to piece together endless lines of boilerplate code. Auto configured and initialized by default, just import and get started quickly.
Micro brings not only a rich architectural model but a command line experience tailored for that need. The command line interface includes dynamic command mapping for all services on the platform. Turns any service instantly into a CLI command and flag parsing for inputs. Provides support for multiple environments and namespaces, automatic refreshing of auth credentials, creating and running services, status info and log streaming, and more.
Explore, discover and consume services via a browser using Micro Web. The dashboard uses your env configuration to locate the server and provides dynamic form fill for services.
Golang Development Environments
Micro bakes in the concept of
Environments multi-tenancy through
Namespaces. Run your server locally for development and in the cloud for staging and production, seamlessly switch between them using the CLI commands
micro env set [environment] and
micro user set [namespace].