Book Image

Effortless Cloud-Native App Development Using Skaffold

By : Ashish Choudhary
Book Image

Effortless Cloud-Native App Development Using Skaffold

By: Ashish Choudhary

Overview of this book

Kubernetes has become the de facto standard for container orchestration, drastically improving how we deploy and manage cloud-native apps. Although it has simplified the lives of support professionals, we cannot say the same for developers who need to be equipped with better tools to increase productivity. An automated workflow that solves a wide variety of problems that every developer faces can make all the difference! Enter Skaffold – a command-line tool that automates the build, push, and deploy steps for Kubernetes applications. This book is divided into three parts, starting with common challenges encountered by developers in building apps with Kubernetes. The second part covers Skaffold features, its architecture, supported container image builders, and more. In the last part, you'll focus on practical implementation, learning how to deploy Spring Boot apps to cloud platforms such as Google Cloud Platform (GCP) using Skaffold. You'll also create CI/CD pipelines for your cloud-native apps with Skaffold. Although the examples covered in this book are written in Java and Spring Boot, the techniques can be applied to apps built using other technologies too. By the end of this Skaffold book, you'll develop skills that will help accelerate your inner development loop and be able to build and deploy your apps to the Kubernetes cluster with Skaffold.
Table of Contents (15 chapters)
1
Section 1: The Kubernetes Nightmare – Skaffold to the Rescue
5
Section 2: Getting Started with Skaffold
9
Section 3: Building and Deploying Cloud-Native Spring Boot Applications with Skaffold

Understanding the application development inner loop

The application development inner loop is an iterative process in which a developer changes the code, starts a build, runs the application, and then tests it. If something goes wrong, then we repeat the entire cycle.

So basically, it is the phase before a developer shares the changes done locally with others. Irrespective of your technology stack, the tools used, and personal preferences, the inner loop process may vary, but ideally, it could be summarized into the following three steps:

  1. Code
  2. Build
  3. Test

Here is a quick visual representation of the inner development loop:

Figure 1.1 – Inner loop

Figure 1.1 – Inner loop

If you think about it, coding is the only step that adds value, and the rest of the steps are like a validation of your work, that is, confirming whether your code is compiling and tests are passing or not. Since developers spend most of their time on the inner loop, they don't like spending too much time on any of the steps. It should be swift. Moreover, as developers, we thrive on fast feedback.

All the steps that we have defined until now are happening locally on a developer's machine before committing the code to a source code repository. Once a developer commits and pushes changes to the source code repository, it typically starts their CI/CD pipeline, called the outer development loop (pull request, CI, deployment, and so on). Whether you are developing traditional monolith or container-native microservices applications, you should not neglect the importance of your inner development loop. Here is why you should care about your inner development loop:

  • If your inner development loop is slow and lacks automation, then the developer's productivity will plunge.
  • It would be best if you always aimed to optimize it because a slow inner loop will affect other dependent teams, and it will take much longer to deliver a new feature to your users.

Now that we've had a quick overview of the application development inner loop, let's compare the inner and outer development loops.