I have been musing for a while over the idea of writing an end-to-end guide to building a production-ready(ish) API using Rust and its async ecosystem.
I finally decided to put the idea out there on a tweet: (ignore the typos, I beg you)
How much interested would there be in a series of blog posts on how to build a production-ready(ish) API in @rustlang from scratch?— Luca Palmieri 🦊 (@algo_luca) May 10, 2020
Think database setup, domain layer, API layer, non-functional requirements (logging, tracing, metrics), integration tests, benchmarks, etc.
The feedback was overwhelmingly positive! So, I guess… I have to do it now?
The idea is to write with a mid-level Rust practioner in mind: familiar with the language, probably a couple of toy experiments under their belt, willing to get started on a serious project.
I am planning to cover:
- Databases (setup, migration management, testing) using Postgres and Diesel;
- Domain modelling, with an emphasis on type-driven development;
- Error handling strategies (the most controversial topic);
- API basics;
- Observability (logging, tracing, metrics, error diagnostics);
- CI setup and integration/black-box testing;
It’s a lot of material - it’s going to be a marathon, not a sprint.
If you’d like to be notified when an episode comes out, I have finally setup a mailing list for this blog:
I am still undecided on a lot of details - e.g. what web framework should I pick for the whole project, Tide or Actix-web?
The focus will of course be biased by my own experience and the challenges I faced along the way - if you feel strongly about the need to cover a certain area/certain details in an area, feel free to send me a DM on Twitter or shoot me an email, I am happy to have a chat.
See you when the first episode is out!