Kubernetes is Ruby on Rails | ✉️ #74

Illustration featuring "MKDEV Dispatch #74" text, with "Kubernetes is Ruby on Rails" on an orange background. A person is smiling while holding a fluffy cat. Paper plane icons are present in the background.
Last updated: | Published:

Hey! 👋

I’ve been helping out one of mkdev’s customers with interviewing for a senior infra engineer position. That particular customer is heavy on cloud-specific services and tools and there is no Kubernetes in sight - I support and approve both of this choices. Speaking on a technical level, there is no technical reason to use Kubernetes inside cloud provider in most cases. I spoke about this on conferences, and also described “why” at length in a series of blog posts.

There is however a none-technical reason to pick (or learn) Kubernetes: you are simply more likely to find professionals who know Kubernetes, than the ones who know in-depth your particular combination of cloud-specific services. And, in reverse, you are more likely to find a new job if you know Kubernetes, because there are more companies that use it, than the ones which don’t.

As fantastic as some serverless offerings like Lambda or ECS Fargate are, our industry decided that Kubernetes is the way to go for any reasonably sized company. I can disagree with this, but I can’t ignore the state of things. Kubernetes won and, luckily, Kubernetes is a great technology. But it won for a none-technical reasons - and it’s definitely not the simplest or the cheapest or the most performant way to run your applications (even though it can be all of those things, if you have a team that is capable of bringing your clusters there).

Let’s take a simple case: my company uses Kubernetes, and I hire someone who never worked with our Kubernetes clusters, but did work with Kubernetes since few years or more. This new team member will instantly know what’s inside our clusters - it’s Namespaces, Deployments, ServiceAccounts, Ingresses, Gateways, Secrets, ConfigMaps, load of Pods and some CRDs. Of course, we structure our namespaces the certain way and we might deploy our applications with Helm, Kustomize, Skaffold, even Terraform - whatever. But the environment is familiar, the tooling is well-known. This new team member will be able to roughly understand the setup on the first day, and learn it inside out in a matter of couple of weeks max.

This reminds me of Ruby on Rails, with it’s beautiful conventions and standards. Throw at me any Rails application, and I will be able to figure out how it works very, very fast - not because I am smart, but because all Ruby on Rails applications have the same familiar skeleton and primitives, regardless if they are sprinkled with today’s most fashionable approach to configure domain logic.

It makes sense to pick Kubernetes both as a company and as a professional, because supply and demand are in the healthy state.

There are many reasons why it became the case, including the fact that it’s the most succesful attempt to bring proper open infrastructure abstractions and the alphabet to build new abstractions, the ones that are understood by developers and infrastructure engineers alike.

It does not mean that Kubernetes should be your first or second choice, and I am not going to start recommending it to every customer of mkdev.

But, as a company, you need to be mindful about the none-engineering implications of choosing against Kubernetes.


What We've Shared

  • Buildah: A Complete Overview: In the 6th Dockerless Course lesson, Kirill introduces Buildah, the rootless tool for building container images without needing Docker or a privileged daemon. You’ll learn how to build images both via Containerfiles and manual shell scripting, and why Buildah is perfect for CI/CD automation.

  • Container Managers and ContainerD: The 7th lesson from our Dockerless Course explains what a container manager is and why tools like Podman and ContainerD matter.


What We've Discovered


The 75th mkdev dispatch will arrive on Friday, August 8th. See you next time!