Domain Cloud Native

by actionbook5c40d3ad7851No license1.5K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 6 weeks ago

Use when building cloud-native apps. Keywords: kubernetes, k8s, docker, container, grpc, tonic, microservice, service mesh, observability, tracing, metrics, health check, cloud, deployment, 云原生, 微服务, 容器

AI-generated overview

Guides Rust cloud-native service design with 12-factor, stateless, observability and graceful-shutdown constraints.

What it does
This skill supplies domain constraints for building cloud-native applications, mainly in Rust. It maps rules such as 12-factor configuration, stateless design, health checks, graceful shutdown and observability to design implications and crate choices. It includes code patterns for graceful shutdown and health/readiness endpoints, plus tables of common mistakes and related skills.
When to use it
Use it when designing or reviewing cloud-native services that run in containers or Kubernetes. It fits work needing stateless design, distributed tracing, metrics, health checks or graceful shutdown. It is guidance only and produces no files or scripts.
Requirements
No scripts or special tooling are required; it is an instructions-only document. The code patterns reference Rust crates such as tonic, kube, tracing, opentelemetry, prometheus, config and axum, but nothing needs to be installed to read the guidance.

Cloud-Native Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain RuleDesign ConstraintRust Implication
12-FactorConfig from envEnvironment-based config
ObservabilityMetrics + tracestracing + opentelemetry
Health checksLiveness/readinessDedicated endpoints
Graceful shutdownClean terminationSignal handling
Horizontal scaleStateless designNo local state
Container-friendlySmall binariesRelease optimization

Critical Constraints

Stateless Design

RULE: No local persistent stateWHY: Pods can be killed/rescheduled anytimeRUST: External state (Redis, DB), no static mut

Graceful Shutdown

RULE: Handle SIGTERM, drain connectionsWHY: Zero-downtime deploymentsRUST: tokio::signal + graceful shutdown

Observability

RULE: Every request must be traceableWHY: Debugging distributed systemsRUST: tracing spans, opentelemetry export

Trace Down ↓

From constraints to design (Layer 2):

"Need distributed tracing"    ↓ m12-lifecycle: Span lifecycle    ↓ tracing + opentelemetry
"Need graceful shutdown"    ↓ m07-concurrency: Signal handling    ↓ m12-lifecycle: Connection draining
"Need health checks"    ↓ domain-web: HTTP endpoints    ↓ m06-error-handling: Health status

Key Crates

PurposeCrate
gRPCtonic
Kuberneteskube, kube-runtime
Dockerbollard
Tracingtracing, opentelemetry
Metricsprometheus, metrics
Configconfig, figment
HealthHTTP endpoints

Design Patterns

PatternPurposeImplementation
gRPC servicesService meshtonic + tower
K8s operatorsCustom resourceskube-runtime Controller
ObservabilityDebuggingtracing + OTEL
Health checksOrchestration/health, /ready
Config12-factorEnv vars + secrets

Code Pattern: Graceful Shutdown

rust
use tokio::signal;
async fn run_server() -> anyhow::Result<()> {    let app = Router::new()        .route("/health", get(health))        .route("/ready", get(ready));
    let addr = SocketAddr::from(([0, 0, 0, 0], 8080));
    axum::Server::bind(&addr)        .serve(app.into_make_service())        .with_graceful_shutdown(shutdown_signal())        .await?;
    Ok(())}
async fn shutdown_signal() {    signal::ctrl_c().await.expect("failed to listen for ctrl+c");    tracing::info!("shutdown signal received");}

Health Check Pattern

rust
async fn health() -> StatusCode {    StatusCode::OK}
async fn ready(State(db): State<Arc<DbPool>>) -> StatusCode {    match db.ping().await {        Ok(_) => StatusCode::OK,        Err(_) => StatusCode::SERVICE_UNAVAILABLE,    }}

Common Mistakes

MistakeDomain ViolationFix
Local file stateNot statelessExternal storage
No SIGTERM handlingHard killsGraceful shutdown
No tracingCan't debugtracing spans
Static configNot 12-factorEnv vars

Trace to Layer 1

ConstraintLayer 2 PatternLayer 1 Implementation
StatelessExternal stateArc<Client> for external
Graceful shutdownSignal handlingtokio::signal
TracingSpan lifecycletracing + OTEL
Health checksHTTP endpointsDedicated routes

Related Skills

WhenSee
Async patternsm07-concurrency
HTTP endpointsdomain-web
Error handlingm13-domain-error
Resource lifecyclem12-lifecycle

Source and attribution

Source:actionbook/rust-skillsinskills/domain-cloud-nativeat commit5c40d3a

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal