You might not need Kubernetes!

A cargo ship with containers stacked

Courtesy of: Ian Taylor

Kubernetes is a container orchestration tool. According to the 2024 Stackoverflow survey, Kubernetes is the 3rd most popular tool among developers. Nowadays, Kubernetes has become the prevalent choice in the industry, to the point that it's difficult to notice any significant competitors.

However, setting up and maintaining a Kubernetes cluster can be a complex, resource-intensive, and technical task. There are providers like Google GKE and Amazon EKS that remove the hassle of upgrading and maintaining clusters, allowing teams to solely focus on the application configurations.

But there is still a challenge. Even when outsourcing Kubernetes cluster management to a third-party provider, the tool itself has a steep learning curve. For small teams with strict budget limitations, this might be a barrier to adopting Kubernetes in their infrastructure. So what options remain?

Docker, on its own, comes bundled with an orchestration tool called Swarm. Interestingly, the same docker-compose file used in development environments can be repurposed to setup a Swarm stack. With minor tweaks to the YAML file, Swarm-specific settings like the number of replicas or rolling update configs can be applied.

Docker Swarm offers extensive configurations and shares many similarities with Kubernetes while being easier to adopt. For small teams where reducing maintenance costs and human resource investment is crucial, and where having operational control over clusters is necessary, using Docker Swarm can be justified. On the other hand, in more complex scenarios where there's a need to fine-tune every aspect of the system, such as implementing access control over deployed objects, Kubernetes offers undeniable advantages.