Is Serverless The End Of Kubernetes?
Ops, I did it again. I used this eye-catching title to be
sure to get your attention, sorry for this. I need your attention to introduce
this big theme for reflection. Do you think Kubernetes is the last ad best tech
on DevOps world? Well, today as never before, technologies are ephemeral and
you have to be ready for changes. I love Kubernetes and I am happy to speak
again about it. It is the hottest buzzword in the DevOps scenario. Reading this
article you will find the answer to the big question:
It is the final solution for infrastructure management or we
need to bet on Serverless, which drives our hearts longer from the operations
team? Remember, NoOps is coming.
I think that changes are usual in technology. Our ancestors
travel in carriages and us on planes. That’s part of the progress.
In the last years, there was a small revolution that brings
more and more applications from the virtual machines to the containers, mostly
thanks to the opportunity to deploy using Kubernetes.
While this revolution occurs, there was a small powerful
buzzword. It is “Serverless”. Most people see it as evil, others like the
Prince Charming that can save developers from operation nightmare. Well, let’s
see what are the issues and the opportunity — and be quiet, no threat on the
horizon!
What is the difference between Kubernetes and serverless?
Serverless is a cloud model where you want to be free from
server and infrastructure. The aim is to avoid the fixed cost, reduce time to
market and friction between teams (operation and dev). In concrete, imagine
there is a layer that can ingest your code and it is responsible for the
execution. Serverless is something like that.
You provide the code, a vendor provides all the other.
The most common serverless implementations have stateless
containers with an SDK that allows your code to be integrated into the system
and invoice to you basing on the usage of resources. In most cases, we can
upload to the cloud our function (“FaaS”, Functions as a Service) and that
function is activated by HTTP calls. Major cloud providers offer a similar
cloud experience:
Amazon: AWS Lambda
Microsoft Azure: Azure Functions
Google Cloud: Cloud Functions
Of course, the servers are not extinct. You don’t see them
because are hidden by the vendor, that uses them to provide the service.
Servers are still alive, but you don’t see any ram, CPU or disk space. You just
focus on code. You can put your effort where it is really needed.
And what is Kubernetes? Think to Kubernetes as a framework
to run distributed systems staring from simple docker images. It takes care of
your scaling requirements, deployment, and load balancing. All that stuff can
be easily described using plain YAML files and reused, creating a replicable
environment by design.
Kubernetes is an infrastructure on your hand.
Just by changing some configuration files you have full
control over container instances (services and pods), networking and deploying.
Kubernetes takes care of your scaling requirements, failover, deployment
patterns, and more. For newbies on Kubernetes, I wrote a good introductive
article on Kubernetes.
Image from “what is exactly Kubernetes”
Kubernetes, like serverless, allows complex architecture
with a low effort from sysadmin. Such technology transforms classic deployment,
which is people-intensive, to be smart and quick. Hey guys, NoOps is coming!
What are the pros of Kubernetes?
The big advantage of using Kubernetes is that you can handle
your cluster like it was a regular server farm, but without the cost of
managing physically. Logically, you can recreate parallelism between servers
and your cluster components. You have pods and services that you can
instantiate like it was a virtual machine. You have networking, storage and so
on. This translates to a deeper control of all single components with low-level
access to the cluster.
So, my list of advantages using Kubernetes instead of
serverless platforms:
great compatibility with the past. If you are on container
move is easy, if not is just the cost of containerizing your app’s components.
great control about what happens
less vendor locking. Kubernetes is Kubernetes, and a Docker
container is just a Docker container. On paper, you can move the infrastructure
in a single click
ability to fine-tune every single component
can run also on-prem (for dev, or extreme cases, or if you
are simply mad)
Prediction of costs. You pay for resources to the cluster,
that can be predicted better than in the serverless approach.
What are the pros of Serverless?
Kubernetes is a big step forward on reducing sysadmin effort
but didn’t reduce to zero. The serverless approach, basically, avoid any
sysadmin component as the only part you have to take care about is the source
code. It’s like picking a set of lego brick and put them together. Each brick
works, individually. You just need to let them communicate properly. Just that.
FaaS solutions may seem too hard to be put in place due to the shift of mindset
they require. In this case, you may approach some softer serverless solution
that hosts directly your app, without changes. A good example of such a
solution is Heroku, which abstracts from the server and traditional DevOps,
providing a NoOps Serverless experience that can boost your application
development reducing all hosting friction (you have also a free tier).
Is Serverless the end of Kubernetes?
Even serverless seems something new nowadays, the first
release of AWS Lambda is in 2014. In that year, Docker was moving firsts steps
(the first official release was in 2013, and I’m not sure when it was ready for
production scenarios at the launch time). Kubernetes borns in 2014. So, we can
tell that serverless was available since the same time of container, less or
more. From this point of view, serverless doesn’t come after Kubernetes and we
cannot consider serverless as a replacement to the containers. They are just
two different approaches to implement the hosting part in a web application.
Maybe in some cases, you may prefer one or the other. When one and when the
other? The right answer, like for so many questions on our like, is “it
depends”. The difference between a consultant and a good consultant is to know
many complementary solutions and find the best one based on the scenario.
What to take home
We already discussed the pros of both solution, then we can
close by telling that just by knowing technologies you can find the best
solution for your scenario. Using a big cloud service like Google Cloud or
others, you will be ready to implement any solution. Just time to experiment
with the tools he provides and understands the pros/cons.[Source]-https://towardsdatascience.com/kubernetes-serverless-differences-84699f370609
Basic & Advanced Kubernetes Course using cloud computing, AWS,
Docker etc. in Mumbai. Advanced Containers Domain is used for 25 hours
Kubernetes Training.
Comments
Post a Comment