Zero to Production

API development with Rust

Benjamin published on
3 min, 518 words

This is my first ever project in Rust and involves me following along Luca Palmieri's Zero To Production series of blog posts. You can also buy the corresponding book here.

About

I started "following along" in December 2020, just after having completed a coursework in C, and Rust was a very refreshing change. I quickly caught up with all the published chapters at that time.

The project is focused on writing a "Cloud-native" application from the get-go, and so touches on a lot of the surrounding DevOps space, and not just on the application itself. This is exemplified best in the first chapter, that focusses on setting up the CI pipeline, before writing any code. I'd previously never put much thought to this, potentially due to either only doing coursework for a few weeks or working in a large established codebase with a pre-existing CI pipeline.

I've thoroughly enjoyed this focus and it has helped me with other work, for example all my courseworks now have "deployment" pipelines via GitHub Actions (just packaging them up for submission). This experience has also helped me when I was implementing a CI pipeline from scratch at my latest internship.

This project is also responsible for this very website, Chapter 7.0 required a domain, so I purchased bdoerry.com. At first it was just a domain to be able to register at Postmark, but this then slowly morphed into a site with actual content! Although I have since migrated the site to a different domain name.

I strongly recommend this series, the content is interesting and well thought out, and the author is also very receptive to emails.

You can follow along with my progress here.

2022 Update

My final year of university took up a lot of my time so I was unable to continue work on this project. At the point where I was able to continue work on it, all chapters had been released, but there had also been some changes with regards to dependency versions. I considered trying to update what I had done to catch up with these new dependencies, but since some of these dependencies had also made breaking changes to their APIs I decided against it.

I took this as an opportunity to follow along from scratch, thereby reinforcing my now rather rusty Rust skills. I have now completely caught up with the book, including all the chapters that were released in the last year. These covered topics such as error handling, authentication, and idempotency. I found authentication and idempotency particularly interesting as these are things I've usually always used some sort of library for in past internships. So implementing approaches for these from scratch was quite enlightening.

Following this I decided to brush up my web development skills. I've written about my experience with this here.