Expand description
A harness for creating consistently-shaped servers will less boilerplate.
Production-ready servers require a comprehensive collection of basic features to enable easy deployment, integration, diagnostics, monitoring, lifecycle management, and so forth. Individual features may be available in the ecosystem, but each requires its own boilerplate to add and configure. Especially when operating with a microservices paradigm, the effort to bootstrap a basic batteries-included server may even outweigh the application logic.
Comprehensive’s goal is that it should be easy to create a server with a number of important basic features included by default, including:
- Secure servers available by default for both gRPC (mTLS) and HTTP
- easy to provision with keys and certificates using infrastructure like cert-manager in Kubernetes.
- dynamically reloaded so that certificate renewals happen
- Health checking endpoints for servers enabled by default.
- Metrics (which can be scraped by Prometheus) exported.
- Common metrics like RPC counters automatically installed.
- Graceful shutdown
- Server reflection, ACLs, and more.
This framework is opinionated, not because its decisions are considered better than alternatives but because it’s important for consistency. Deployment, configuration, diagnostics, metrics collection and more should happen in the same way across a whole zoo of different servers in a cluster (or other collective environment).
§Status
Comprehensive is still in development. Many more features are planned.
§Examples
Re-exports§
pub use assembly::Assembly;
pub use assembly::NoArgs;
pub use assembly::NoDependencies;
pub use assembly::ResourceDependencies;
pub use v0::Resource;
pub use v0::ShutdownNotify;
Modules§
- assembly
- A collection of assembled runnable application components called Resources.
- health
- Health tracking and reporting support for
comprehensive
. - v0
- Original (version 0)
Resource
for Comprehensive. - v1
- Implementations of the
Resource
form the nodes of a directed acyclic graph formed by a ComprehensiveAssembly
and represent a component of a running stack, such as an HTTP serving instance, an individual gRPC service, a provider for a backend such as a database, and so on.
Enums§
- Comprehensive
Error - Error type returned by various Comprehensive functions
Traits§
- AnyResource
- Trait for expressing any version of resource: either
v0::Resource
orv1::Resource
.
Derive Macros§
- Resource
Dependencies - This macro should be used to derive the
ResourceDependencies
trait for expressing dependencies between resources.