Cipher โ distributed Secret Rotation Service
โ Rust ๐ 2026-04-09 ๐ค surdeus ๐๏ธ 5Hi everyone,
I'd appreciate a code review of my project Cipher โ a distributed Secret Rotation Service built as a capstone project for RustCamp UA certification.
Repo: GitHub - misikdmytro/cipher ยท GitHub
PR with full implementation: cipher by misikdmytro ยท Pull Request #1 ยท misikdmytro/cipher ยท GitHub
What it does
Cipher automates rotation of secrets stored in AWS Secrets Manager. It's split into 4 services in a Cargo workspace:
- API โ HTTP REST (Actix-web), owns secrets metadata & webhook CRUD
- Scheduler โ orchestrates rotation schedules, publishes events via RabbitMQ
- Rotator โ stateless worker, executes actual rotation against AWS (blue/green strategy), publishes status events
- Notificator โ consumes rotation events, delivers webhook notifications
Services talk to each other over gRPC (sync) and RabbitMQ/AMQP (async events). PostgreSQL via sqlx for persistence.
Stack / crates
Actix-web, tonic (gRPC + protobuf), sqlx (Postgres), lapin (RabbitMQ), AWS SDK, tokio, tracing, utoipa (OpenAPI docs).
What I'm looking for feedback on
- Overall architecture โ does the service decomposition and communication pattern (gRPC + AMQP) make sense? Anything over-engineered or missing?
- Idiomatic Rust โ trait usage, error handling, module structure, anything that smells off
- Domain modeling โ the
domaincrate, how types and boundaries are defined - Async patterns โ task spawning, graceful shutdown, RabbitMQ consumer lifecycle
- Testing approach โ integration test setup, mocking strategies
This is a learning project, so don't hold back โ blunt feedback is welcome.
Thanks!
1 post - 1 participant
๐ท๏ธ Rust_feed