Melhores Práticas de Implantação
Vinte hábitos para enviar binários e contêineres Rust que sejam pequenos, reproduzíveis e observáveis.
Busque em todas as páginas da documentação
Vinte hábitos para enviar binários e contêineres Rust que sejam pequenos, reproduzíveis e observáveis.
Sempre cargo build --release --locked no CI: Artefatos de debug nunca devem chegar à produção.
Commit Cargo.lock para aplicações: Implantações reproduzíveis dependem de um grafo de dependências congelado.
Fixar rust-version e toolchain de CI: Corresponder MSRV entre laptops de desenvolvimento e pipelines.
Dockerfiles multi-estágio: Compilar no builder; a imagem de runtime contém apenas o binário e certificados CA.
Executar como não-root em contêineres: nonroot do Distroless ou diretiva USER explícita.
Preferir rustls em vez de OpenSSL em imagens: Menos dependências nativas e menor superfície de cross-compile.
Expor /health e /ready: Liveness vs readiness devem diferir quando o DB estiver inativo.
Desligamento gracioso em SIGTERM: Drenar requisições em andamento antes de sair (manipuladores de sinal do Tokio).
Configuração via ambiente: Injeção do Twelve-factor; sem segredos em imagens ou repositórios.
Logs JSON estruturados: tracing-subscriber JSON para busca centralizada.
Métricas RED em serviços HTTP: Taxa, erros, histogramas de duração exportados para Prometheus.
Amostrar traces distribuídos: Exportação OTLP em 1-10% a menos que esteja depurando um incidente ativo.
Cross-compile em matriz de CI: Construir amd64 e arm64 antes que usuários relatem binários da arquitetura errada.
Stripar ou usar LTO em binários de release: Imagens menores e inicializações a frio mais rápidas.
Executar migrações como um Job separado: Alterações de esquema concluídas antes que os novos pods do aplicativo sirvam tráfego.
Marcar releases com SemVer: Tags de contêiner e tags git alinhadas (v1.2.3).
Cache de dependências de CI: Swatinem/rust-cache ou sccache para feedback de PR abaixo de 10 minutos.
Falhar CI em clippy -D warnings e fmt --check: Dívida de estilo e linting bloqueia o merge.
Documentar rollback: Tag da imagem anterior retida; kubectl rollout undo testado trimestralmente.
Teste de fumaça pós-implantação: Curl no endpoint de health e um caminho crítico da API a partir do CI ou monitor sintético.
glibc em distribuições Linux padrão; musl para scratch/Alpine quando a portabilidade supera o desempenho máximo do alocador.
Rolling é o padrão no Kubernetes; blue/green quando migrações de esquema exigem reversão instantânea.
Almejar abaixo de 50 MB comprimido para um único serviço Axum; investigar se ultrapassar 100 MB sem dependências de ML.
Manter agentes de observabilidade como sidecars da plataforma; a lógica de negócios permanece um binário Rust por serviço.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4 e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026