Friday 5 August 2022

Why Kubernetes is so important for the cloud future

In the past the way we did hosting was using cheap VPS or Dedicated hosting websites like those offeres in the old forums: 




Remember those ???

Those usually offered a VPS (which is basically a VM) with FTP and Apache2 server for you to connect to the server and deploy your app. Many used CPanel and other solutions for that as well. 

Some of the vendors were over-committing their hardware in order to get you a cheaper price, that's why the review systems like the above were so important.

These were the good old days, where hosting your website/forum/app was insanely cheap and easy (IMO). 


In time, things got complex, suddenly the FTP/Apache2 offered was not enough for IT/Developers, the application got bigger in terms of users and resource consumption, monitoring become much more important, availability and security is suddenly a big concern, and so on.

This is right about where the era of the cloud started. I always felt the cloud back then was promising to companies "we will get rid of your IT department and all the insane cost of servers" yet more than 10 years later, I felt like the opposite really happened:


( https://www.facebook.com/groups/ProgrammersJokes/permalink/10159896506161138/ )
Sorry for the Hebrew non English speakers, but its really untranslatable :(

Basically, we replaced IT with DevOps (which are sometimes 3x or more expensive) and we are paying much more for servers, as many times cloud providers get their money back 3 in months for the hardware. 

So how did we end up in this situation?

Cloud become a buzzword/silver bullet for everyone, developers, DevOps, managers, etc. 
Cloud is complex and very difficult to actually use right. Many "wanabees" IT who become "DevOps" have no idea what they are doing use it and making it cost a lot for the organization. 

Also, as indicated in this post second point - many people are just dumb and do not have that much understanding of technology regardless, and it's easy to just make it "another man's problem". For the developers, its easy to make it a "DevOps" problem, the actual DevOps does not really care to spend money, and managers usually don't have any clue anyway. 

The perfect business model for the cloud providers :)

How do we solve the expensive cloud?

First, use the Cloud the right way - but I find even when you use it right, its still very expensive, especially compared to what we used to pay for VPS or other kinds of hosting in the past.

The better approach to lower a price is probably competition. There aren't many cloud providers in the market, at least not compared to how many hosting companies they were more than a decade ago. 

One of the issues with Cloud IMO is that the cloud software and hardware are hard coupled together. I must buy both. It's great for the Cloud providers but very bad for us customers. It kind of creates a monopoly, where you must choose a cloud provider and stick with it no matter what.

When comparing it to the past, the VPS hosting did not develop either the Apache2, FTP server or the CPanel, it was just a simple hardware provider, installing open-source/commercial available software on it. 
Hated your VPS provider? probably very easy to move to another provider if you are using common software on top of it.

This is where Kubernetes gets into the picture - in my eyes, Kubernetes is what the FTP/Apache2 servers used to be!
It decouples the hardware from the software.

Kubernetes or other products (preferably open-source) that will follow it, might be the competition we need. 

Picture a world where thousands of companies compete to run your K8S cluster, prices will crash.
Adding to that, if we had the ability to "live" change a provider (without my app availability being affected) and the prices and service we get will be much better than what they are today. 


Kubernetes is still not that popular, unfortunately. People still do not understand the benefits Kubernetes gives and still consider it over-kill and complicated compared to solutions like AWS ECS (which I think it's not).

The ability to have: 
*  CI + CD across your entire stack without managing tons of different cloud services and their bugs - usually with a single tool like Helm. 
* Having K8S operators that in many cases are more mature and easy to work with than their cloud service alternative.
*  A single API for almost everything that makes much more sense usually than its cloud counterpart.
* Usually can be easily tested locally using tools like Minikube instead of having to create complex DevOps environments for local development/testing or to run in the future on a customer hosted network. 

and the list goes on. 

Yet people still work with often broken/buggy cloud services.
Their excuses are usually something like "Kubernetes is too complex", yet their CD across multiple managed cloud services is so complex for example, that Kubernetes looks like a walk in the park compared to that.

If we want to exit the huge expense the Cloud is costing us, we need to shift our development and thinking and hope companies can leverage that way of working and create products that will allow competition and back to the basics of thousands of companies competing for running/hosting our product, and us having to move whenever we are not happy anymore. 



No comments:

Post a Comment