Tradeoff between building own distributed system and using kubernetes to deploy my application Tradeoff between building own distributed system and using kubernetes to deploy my application kubernetes kubernetes

Tradeoff between building own distributed system and using kubernetes to deploy my application


You didn't give any details of your app, so I'll provide some generic thoughts. Shortly speaking, Kubernetes gives you scheduling, load balancing and (sort of) high availability for free. You still have to plan proper application architecture but Kubernetes gives you a good starting point where you can say like "ok, I want this number of app containers to run on this number of nodes". It also gives you internal load balancing and DNS resolution.

Of course, the tradeoff is that you have to learn Kubernetes and Docker up to some certain point. But I wouldn't say it's too hard for enthusiast.


I’m proposing a project to my school supervisor, which is to improve our current server to be more fault tolerant, easily scaling and able to handle high traffic.

This is a great idea. What you really want to do here is to use as many existing tools as you can, to let you focus on improving the core functionality of your current server - e.g. serving your users with your business logic and data and increase availability of this.

Focusing on your core functionality means that you should NOT do, e.g.

  • NOT write your own memory allocation algorithm or garbage collection
  • NOT write you own operating system
  • NOT write your own container scheduler (e.g. what Kubernetes can do for you)

I have a plan to build a distributed system starting from deploying our server to different PCs and implement caching and load balancing

Most applications deployed on Kubernetes or that have your availability requirements actually should be a distributed system - e.g. be composed of more than one instance, designed for elasticity and resiliency.

what are the tradeoff between using Kubernetes and building own distributed system to deploy applications?

Kubernetes is a tool, almost an distributed operating system that e.g. schedules containerized apps to a server farm. It is a tool that can help you a lot when developing and designing your distribued application that should follow the Twelve Factor principles.