paint-brush
Book Review: Effortless Cloud Native App Development Using Skaffoldby@shai.almog

Book Review: Effortless Cloud Native App Development Using Skaffold

by Shai AlmogNovember 19th, 2021
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Skaffold is a cloud native open source framework from Google that lets Spring Boot developers build Kubernetes apps easily and deploy effortlessly. In this post we review the book that covers that useful tool and the supporting ecosystem.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Book Review: Effortless Cloud Native App Development Using Skaffold
Shai Almog HackerNoon profile picture


I’m a developer who cares deeply about production. But I’m not a DevOps person, and unfortunately, I’m pretty bad at that. That’s why when I heard about Skaffold, it instantly got my interest.


Writing Kubernetes cloud-native apps without, well, writing Kubernetes native apps - Sign me up!


That’s why when Ashish Choudhary, the author of the book “Effortless Cloud-Native App Development Using Skaffold,” asked for reviewers in the foojay slack group; I jumped on the opportunity. I can learn something interesting and be productive (this book review).


Disclaimer:

  • I don’t know Ashish Choudhary personally

  • I receive nothing for this review and don’t provide any affiliate links or stuff like that. This is the only link to the book in this post.

  • I did some work for the publisher Packt in the past (an online course) - I don’t think that affects my judgment here. It’s been a while since I did that work.


Another important detail: I didn’t run the code. I just read the book. I also did that relatively quickly and used the PDF version. I feel I lost some of the core experience in the book.

What’s Skaffold


Skaffold is an open-source project started by a Google engineer after suffering the pain of cloud-native Kubernetes deployments. It’s effectively a command-line tool that automates the build, push, and deploy steps for Kubernetes applications.


The surrounding system integrates with Maven/Gradle/Spring etc., to create a smooth development experience. This makes building/debugging Kubernetes apps locally almost as easy as running a regular Spring Boot application.


There’s obviously additional complexity and configuration, but the core idea is the same. Developers still need to understand basic Kubernetes ideas; there’s no way around it. But you can remove some of the hassle involved in it. Kubernetes is aimed at DevOps, and a lot of its features are redundant for developers. This way, we can build cloud-native microservices without the hassle.

The Book

Choudhary divided the book into three sections:


  1. The Kubernetes Nightmare - Skaffold to the Rescue
  2. Getting Started with Skaffold
  3. Building and Deploying Cloud-Native Spring Boot Applications with Skaffold


In the first section, we get a glimpse into the “problem” of building Kubernetes applications with chapters such as “Developing Cloud-Native Applications with Kubernetes - A Developer's Nightmare”.


Choudhary introduces Skaffold in the second section. The third section gets into the finer points of deployment, alternatives, etc.

Cloud-Native

The book focuses on the separation of the inner/outer loop of the development cycle. The inner loop is the local development environment, whereas the outer loop is the production/CI/CD environment. What makes this development style “Cloud Native” is the similarity between the inner and outer loops.


There’s a similar focus on the value delivered in integration tests during the CI cycle and finally in pushing to production via tools like GitOps. The cool thing is that we use an environment that’s pretty close to production in all stages of development.


Another aspect that makes Skaffold native to the cloud is the instant deployment via jib. As a result, we can instantly see changes in our local Kubernetes environment as we save changes in the IDE. That’s pretty cool, and this alone is worth the price of admission to Skaffold (which admittedly is free).

What I Liked

Writing and Focus

Choudhary is a talented writer who uses clear language and examples. The examples weren’t too verbose, as is sometimes the case with such books. He wrote the book targeting Kotlin/Java developers, which is great.


The core ideas and benefits of Skaffold are covered early on in the book and are pretty obvious. There are a few diagrams that illustrate the big set pieces.

Objectivity

The book covers competitors to Skaffold and seems to be reasonably objective with its treatment. This is at the end of the book, so if you have doubts about Skaffold, I suggest reading the ending first.

Publishing

While somewhat wasteful (more on that later), the layout of the Packt books is as usual pretty great. Packt books have an excellent layout, table of contents, and index. This makes the reading/referencing process much smoother.

What I Didn’t Like

Cloud-Native

I feel the phrase cloud-native was ‌co-opted by GraalVM and frameworks such as Quarkus. I understand what Choudhary is aiming at and think this makes sense for the book. But it’s one of those overused phrases that loses some of its meaning. A cloud-native book is a pretty vague statement, Skaffold narrows it down, but only after you know what that means.


There’s an entire chapter on GKE, which I skipped entirely for that reason. It just isn’t relevant to me.

Publishing

While I like Packt books, I have two grievances. I hope they improve on these:


  • I don’t like filler in books. The book could be 100 pages shorter. This is due to blank pages, large margins, over spacing, etc. Think of the tree’s Packt (this goes to other publishers, too!).
  • I wish other publishers would pick up the source annotation style of Manning. This is hard to do, as I discovered, but the readability is so much better.
  • Notice that both comments aren't unique to Packt and apply to most publishers.

Final Word

I liked the book. I still haven’t made up my mind about Skaffold though. As a latecomer to the cloud native realm, I feel I need to leapfrog some of the hassle. That makes it attractive. But I try to keep away from Google services due to past trauma. Skaffolddoesn'tt require GCP and can still be pretty useful without it, so it's something I intend to try.


I like that Choudhary focused the book on Java/Kotlin as I’m a Java guy. But I’m doing a lot of cloud-native polyglot work recently, and this could be a limitation. I saw a mention in the book of NodeJS debugging, but that’s it. I honestly don’t know if I can use Skaffold for one of my Polyglot demos. It would be really cool for that.


I assume this isn’t discussed much because of a limitation in Skaffold, not because of an omission in the book.


Also published here.