O problema que queríamos resolver
Sistemas distribuídos precisam de parâmetros de configuração que sejam auditáveis, versionados e consistentes entre serviços. Ferramentas como etcd ou Consul existem para isso, mas nenhuma delas aplica um modelo de imutabilidade real: toda alteração em um parâmetro canonical cria uma nova versão, nunca sobrescreve.
O que é o TruthMetal
TruthMetal é um serviço escrito em Go que implementa um ledger imutável de parâmetros. Cada parâmetro passa por um ciclo de vida definido:
- SUBMITTED: parâmetro enviado para validação
- VALIDATING: verificação de schema e constraints
- CONSENSUS_PENDING: aguardando aprovação do quorum
- CANONICAL: aprovado e ativo no cluster
- REJECTED / REVOKED: negado ou revogado após consenso
A transição entre estados é registrada no ledger com timestamp e contexto. Nenhum registro é deletado.
Stack técnica
- Go 1.22 + connect-go (gRPC e HTTP/JSON na mesma porta, sem grpc-gateway)
- PostgreSQL 16 para o ledger e o store de parâmetros
- Redis para cache de parâmetros canonical com TTL de 5 minutos
- golang-migrate para migrações automáticas no startup
Disponibilidade
TruthMetal está em produção em api.truthmetal.rbx.ia.br e já é consumido internamente pelos produtos RBX. A API é pública e documentada via Protobuf.
