Objective
Make it easier for developers to deploy services that have strict performance requirements, by using Rust’s actix framework, one of the fastest web frameworks available.
Background
Developers love Rust. We run services in Rust. We write libraries in Rust. Yet we’ve failed to further experiment with the language outside a few isolated instances. By making a micros template available, we’ll significantly decrease the barrier of entry to spin up Rust experiments. We hope that this template will be the first port of call for performance sensitive spikes, or ShipIt participants looking for a modern, developer-friendly language to write code in.
Goals
Core goals
- :check_mark: Boilerplate for our HTTP Framework of choice, actix-web, with associated Micros-compatible health check
- ⚠ Basic test scaffolding leveraging cargo’s out-of-the-box support for test running
- :check_mark: JSON (de)serialization using serde
- :check_mark: ADockerfile and docker-compose.yml
- :check_mark: A bitbucket-pipelines.yml deployment plan
- :check_mark: Micros-compatible JSON logging, using slog
- ⚠ ASAP validation middleware and generation utilities using Atlassian’s very own asap library
- :check_mark: Configuration management with config
- :check_mark: Formatting using rustfmt
- :check_mark: StatsD metrics using cadence
- :check_mark: Sentry support using sentry-actix
- :check_mark: A Cargo.toml containing sensible utility libraries like failure
- :check_mark: A task runner using just
Stretch Goals