Side Story – When not to use Kubernetes

Tram Ho

Introduce

For DevOps brothers, Kubernetes is probably nothing new. You must have read many articles why we should use Kubernetes for production, what problems Kubernetes helps us to solve, but everything has its pros and cons and so does Kubernetes. So in this article we will learn about the problem: when should we not use Kubernetes?

image.png

Here are the cases when we should not use Kubernetes:

  • Project or application with small scale.
  • Applications do not need high availability (High Availability).
  • Our application is monolithic.
  • High-performance computing (HPC).
  • The application is of a very specific type.

Project or application with small scale

The first case that we should not use K8S to deploy our project or application is that it is too small in size.

For example, our project only needs an application running PHP + a simple MySQL database, with less than 1000 users per day. It is not necessary to deploy it on K8S, we just need to deploy it on a simple virtual machine. Because to deploy an application on K8S, we need to do a lot of things, not to mention to build a K8S Cluster and operate it, it also costs a lot.

So for a small-scale project, we don’t need to deploy it on K8S, unless your company can use K8S for every project, then we should consider using K8S or not.

Apps don’t need high availability

One of the outstanding features of K8S is to help us build a highly available application, the time that the application lives to process user requests is always over 90%.

So the second case where we don’t need to use K8S is when our application doesn’t need high availability.

For example, when our application dies without affecting the users, we do not need to deploy it on K8S, because to deploy the application with high availability, it will cost more.

Our application is monolithic

What is a monolithic application? This is the opposite form of application to microservices, all components are concentrated in one place or source code. For monolithic applications, we cannot run many instances at the same time, because it can cause the process of running our application to be wrong.

So the third case we should not use K8S is when our application is monolithic, because when we use K8S to deploy the application, we will often use Deployment, although we can configure our application to only run an instance by configuring the replicas field to 1, but Deployment only supports two implementations: Recreate with RollingUpdate , during application deployment we may have bad luck leading to two instances running at the same time, If our application runs a certain calculation program, then there will be two computation programs running at the same time and leading to incorrect results throughout the system.

We can solve this problem by not using Deployment to deploy the application, but using Pod directly, but every time we deploy we have to delete the Pod and do a lot of manual work, we don’t need to torment ourselves. 😂, so for monolithic applications, we just deploy on the virtual machine for fast.

High-performance computing (HPC)

The fourth case that we should not use K8S is when our application needs very high performance (High-performance computing).

For high-performance computing applications, the processing speed must be at nano or microseconds, extremely fast. Pushing the application into the container and deploying it on K8S will slow down the application’s performance a bit, because when we run the application in the container, there will be a rather complex middle layer added between the application. and operating system, although it will not cause much latency, but for applications that need nanoseconds to process, K8S is not a good choice.

The application is of a very specific type

The fifth case that we should not use K8S is that our application is too specific, which means we cannot convert the application to a container-based form.

For example, our application uses some network library that has too specific hardware requirements and is too complex for us to convert it to container-based. Or our application can only run on Windows but can’t run on Linux, then we can’t convert it into a container, because an application can only convert to a container only if it can run on the operating system. linux .

So for such applications, deploying it on K8S is impossible 😂.

Conclusion

The above are a few cases that I think should not use Kubernetes to deploy, if there are any more cases, please remember to tell me in the comments below 😁.

How did our team improve Hoang Phuc website from 1 Google point to 90 points?

This is the article that I put the title first and hope to write this article in the future. Our Hoang Phuc technology team was established with the task of building an internal technology system for the company, Hoang Phuc is a retail company in the fashion field and has more than 30 years of history, with There are many chain stores nationwide, so the operation of Hoang Phuc is very large and building a technology system to meet the internal operation of the company is a very challenging job. a digital transformation process and our team has taken the initial steps.

The only thing that my team needed was the website, this is a website that before our team was formed, another outsourcing team did it, and what they left us was a website with a bunch of dust, with a score from google of 1 out of 100. So what are we going to do with this site, discouraged? That’s not in the dictionary of my two bosses, and with the leadership of the two team bosses, I will turn those dirty websites into diamonds, just like how we have improved the internal system. We are improving the website every day and every day, from 1 point we have improved it to 40 points, and the goal is 90 points, to meet the needs of as many customers as possible. We didn’t do it because of good technique or anything, but because we have teammates that are willing to support each other and the leadership of two really good bosses, our team members may not be the best. about the most technical expertise but will certainly create the highest efficiency. A member of the team I do not love needs to be good, just sociable, cooperative and willing to cooperate with each other. You may not be the best, but if you join us, you will create the most valuable things.

Currently our team is in need of teammates to participate to improve the website with a large number of users, this is a very interesting challenge, have you ever been involved in designing a system? big from the start, I’m pretty sure that’s a very small number. We already have customers, all that remains is to need teammates to develop a system together to serve so many users. The goal of Hoang Phuc company is to become the largest fashion retailer in Vietnam, imagine you are the first to contribute to building such a large system. Please join us.

Team Backend Engineer (Magento – PHP) .

Team Senior Backend Engineer .

Team Senior Frontend Engineer .

 

Share the news now

Source : Viblo