I am writing a book: Cloud Native Web Development
I am writing a hands-on guidebook on how to develop cloud-native web applications.
On February 28, 2020 I decided to write a book - that was 10 weeks ago. Due to the COVID-19 lockdown, I did not have many opportunities to leave home and spent a good amount of my spare time writing a book and all the source code that comes with it.
One week from today, on May 17, 2020, I am going to start pre-orders with the first 100 copies at a 50% discount! If you would like to get notified, please follow me on Twitter (@mikenikles) or at https://gumroad.com/mikenikles.
Why write a book?
I have developed, tested, deployed and maintained many web applications. With every line of code written, every reported bug fixed and every production outage resolved, I learned something new. I like to share what I have learned, make sure others can fast-track their projects and use my experience as a starting point for their own businesses.
The internet provides in-depth expert advice on pretty much any topic, but you need to know what to look for. The reason I write this book is because I see a lack of comprehensive end-to-end guides on how to develop a web application from scratch. From the initial
git init to production support and anything in between.
What is the book about?
Web applications once were static HTML with CSS and a backend that processed form submissions. Fast forward to today and web development is more complex than it has ever been. With new frameworks, technologies & reusable code packages appearing (what feels like) weekly, where do you begin?
In this book, we will walk through the end-to-end process of developing a cloud-native web application. You will learn technologies, processes, tips & tricks and gain hands-on experience. You will find out about mistakes made (so you can avoid them) by the author based on his two decades of experience in developing web applications.
Links to additional resources such as videos, blog posts and articles are provided where necessary to give you an opportunity to dive deeper into topics of interest. These are resources I found useful and wish I had found earlier.
The book starts with introductions to technologies used throughout the book and explains what alternatives are available.
- Svelte to develop the web application
- Sapper as a static site generator
- Tailwind CSS for styling
- Firebase Hosting to host the web app
- Cypress for component and end-to-end testing
- Node.js services deployed to Cloud Run on Google Cloud Platform to deal with asynchronous tasks (e.g. send a welcome email to new users)
- Cloud Firestore for data persistence
The second part is hands-on, with pull requests that correspond to individual chapters in the book. All readers are part of a community and can collaborate among themselves and with the author.
We will start with a basic boilerplate, configure a CI / CD pipeline to test and deploy the web application and add feature toggles to ensure frequent deployments to production are fearless. For visibility, we will set up production monitoring & alerts and discuss how to perform rollbacks should that become necessary.
A big part is going to be how to test the web application. Component tests and end-to-end tests to make sure new features don’t introduce regression bugs. To have the most impact, tests are going to be part of the continuous integration pipeline and deployments will not happen if a test fails.
We will configure Tailwind CSS to style the pages and components and wrap up the second part by learning about user authentication and how to interact with a database to persist and load data.
Five evenings and two days to go
There is still some work to be done between now and Sunday! Complete and extend certain chapters, process the reviewer feedback, design a cover page (anyone wants to help?), read the book a few more times to make sure it reads smoothly and each step makes sense given its context.
Table of contents
I’m leaving you with the entire table of contents as it stands at the time of this writing. If you have any feedback at all, please do let me know! (Apologies for the formatting…)