Moving to Kubernetes
Actually we need Kubernetes?

Most applications start their life as a monolith. It is quick and easy to make and deploy changes. But if your application finds success and grows quickly, you will soon need to find ways to scale it. It is time for Kubernetes now? Not probably.

What Does Kubernetes Do?

Kubernetes is an orchestration tool for containerized applications. Starting with a collection of Docker containers, Kubernetes can control resource allocation and traffic management for cloud applications and micro-services. It is responsible for:

Scaling a Application

Before you decide to split apart your application, there are a number of tactics you can use to scale. Spend a significant amount of time trying to solve your existing problems before making big changes. There are two types of scaling for monolithic and micro-services.

  1. Scale-Up (Vertical way) It’s very simple in action, this method just adding more hardware resources such as CPU, RAM, Disk Space to the server to handle the requests.

  2. Scale-Out (Horizontal way) It refers to adding more instances (VMs) to handle the requests. It’s a point that driving us to the Kubernetes.
    Scaling Types

Some Aspects of Kubernetes

  1. Kubernetes is a distributed system that needs two machines at least, one machine as main that controls other worker machines.
  2. Kubernetes is a complex system with many different services, systems, pieces and its own concepts called Pods. Before you can run a single application, you need the following highly-simplified architecture.(Kubernetes documentation) A diagram of a Kubernetes cluster and its components
  3. Kubernetes has very efficient management of containers and self healing. Also makes it super easy to establish a proper CI/CD pipeline.
  4. Understanding Kubernetes is little hard and has a steep learning curve.
  5. Local development, Kubernetes does tend to be a bit complicated and unnecessary in environments where all development is done locally.
  6. Kubernetes has Fault Tolerance feature to handle failure. This ability is magical nearly.

If you do not intend to develop anything complex for a large or with high computing resource needs (e.g. machine learning applications), there is not much benefit for you from the technical power of Kubernetes. There is no easy answer if adopting Kubernetes is the right choice for you or not, in some situations Kubernetes is a really great idea, Kubernetes might be useful if you need to scale a lot but in others it’s a time-waster with no benefit.