Kubernetes. Sometimes my colleagues and I make fun of the fact that just proclaiming the word can trigger a storm of applause at any tech conference. I am deliberately exaggerating, but you probably noticed that Kubernetes (k8s) is currently an absolute rockstar of the IT world and beyond. Its popularity is not accidental - it's supported by a huge community and a great deal of content can be found about k8s. From my own experience, however, I have to say that most articles, videos and podcasts are mainly targeting a technical audience that already uses or wants to use Kubernetes.
Content that would focus on the business or marketing aspects of the technology appears only sporadically, and in the Czech environment you hardly see any at all. Because I'm not a technician myself, but still a big fan of Kubernetes, I'd like to share my point of view. Even if you end up never using Kubernetes actively, there are a few things that are good to know about it. It can provide a business with a wide range of benefits and make things that used to be a complete fantasy just a few years ago possible - for example, the developer writes the code, presses the button, everything works smoothly, and your app generates profits.
But what is Kubernetes actually? Kubernetes is an open source system for orchestration (management) of application containers. To explain it simply, try to imagine the container as something that your app is "packaged" or “wrapped” in and without which it would not work in the system. You can find a precise definition of containers here. I will discuss the benefits of containerisation in another article, so let's skip it for now. Now let's assume that you are using the containers, for whatever reasons you might have for choosing this solution.
In most cases, a large application consists of many containers (and a number of smaller applications wrapped in them) - such as a web server, database, cache, etc. With a number of such applications, the amount of containers that you need to look after, monitor and sort rises. Kubernetes enters the game here to manage the containers. To better understand this, let's use a business analogy here. Just as a company cannot work efficiently without employees being led by someone who determines their goals, the containers cannot work properly without Kubernetes leadership.
So what benefits exactly does Kubernetes provide your business with?
1. Your infrastructure will be rock-solid
Occasionally your container will "die". It is very common and nothing can prevent that from happening 100%. Let's not dig deeper into the details here. But if your containers are managed by Kubernetes, each time one container dies a replacement container is launched immediately - so you do not have to worry about it at all. This way you can prevent financial loss caused by the application outage and your IT team doesn't need to deal with all the stress of trying to roll it back.
2. Peak traffic? No problem
Some applications may be dealing with so-called "peak traffic" or performance spikes (for example, eshops, ticket vendors, or food delivery apps). If Kubernetes finds out that the app and its containers are not able to handle the expected traffic (for example, when tickets to a concert of a superstar are being launched and fans go mad to get them, or during lunch hours when more people order food), it will automatically launch clones of the containers and temporarily increase the performance. On the other hand, when traffic is low, "excess" containers will be destroyed. This way you your service will never be down due to not being able to handle high volumes of requests and you can keep selling your product without worrying about financial loss.
3. Reduce infrastructure costs
In order to keep you from losing profits, you need to find the most optimal use of your infrastructure. You do not want to pay for performance you are not using. For example, if you run a food delivery app, it doesn't make sense to pay for the same performance power at 3am when the traffic is very low, and at noon when the traffic is at its highest. However, you need to have enough power to be able to meet any number of requests at any time to keep your customers satisfied. Kubernetes will be able to optimise the performance according to the real-time requirements of the app. Of course, this benefit is a lot more interesting if you use some cloud infrastructure in pay-as-you-go mode.
4. Seamless Multi-Cloud / Hybrid Strategy
Another huge advantage of Kubernetes is their efficient operation across public cloud providers, private clouds and on-premises infrastructure. You can easily choose where each workload will run and you don’t have to worry about vendor lock-in. You can run a Kubernetes-based architecture anywhere so you can always choose the most suitable environment when it comes to efficiency and cost.
5. Forget about operations. Focus on product development
Human resources are the most important thing you have. There is limited amount of skilled technical people on the market, and it becomes inefficient to burden them with infrastructure management and waste their time on operations. You would make a much better use of their time and energy by allowing them to concentrate on developing your product and help you provide the best customer experience to your clients. Kubernetes in combination with other tools will free them up to do just that. They can, for example, release new versions seamlessly (and go back to the old ones if necessary) several times a day without the slightest sign of an outage. All this thanks to working on a level of container. There’s also a managed Kubernetes series (GKE / EKS) when someone else takes care of their management (it doesn't exist on Windows servers for example). The huge amount of tasks that fall under infrastructure operations are automated thanks to Kubernetes and your people can concentrate on more important things such as building the product.
6. Fast time to market
If you want to be the best, you need to act in a quick and agile way. Being able to respond to customer requirements, delivering the fastest and highest quality new features is crucial nowadays. Kubernetes will take care with that. It provides many tools to help you set up the so-called "Microservices approach" and to divide your development into small agile teams that will be able to deliver new features seamlessly on a day-to-day basis. Kubernetes will help with smoothly launch them into production. Of course, Kubernetes is not the only service that can solve these problems, but it is definitely the most accessible and popular. Keep in mind that Kubernetes is not the answer to everything, and in some cases a completely different solution may work better. It is therefore preferable to consult in advance with a specialist.