Table of Contents
Development and hosting of modern applications or entire IT infrastructure talking about two buzz words – Serverless and Kubernetes. Businesses and developers are concerned about how efficiently specific technology can be used to achieve business goals and how costs of resources can be brought down.
These technologies came into existence way back in 2013 when Google faced issues with increasing traffic load of its services like Gmail, Maps etc and use containerization by a group of developers in their project named seven or Borg.
Today we look more in detail about two important terminologies Serverless computing and Kubernetes understand their key differences, benefits and purpose they adopted for.
What is Serverless Computing?
Serverless is a cloud computing model in which providers let you use its infrastructure and capacities for allocation of resources at runtime or on demand, and take care of all management and maintenance requirements of underlying physical infrastructure such as computing power, storage, databases etc.
Serverless pushes cloud native architectural approach to develop, build, and run applications and removes the need for operations from DevOps model. Serverless in the form of Function as a Service (FaaS) has been there for quite a long time.
Pros and Cons of Serverless Computing
Pros
- Scalable in nature and no infrastructure worries at all
- Only pay for what you use
- Leans towards microservices style architecture having already defined components and responsibilities
Cons
- Continuous integration and continuous delivery requires focus
- No industry standard abstraction for serverless technologies
- Limited to technologies and versions which provider supports
What is Kubernetes?
Kubernetes is an open-source platform for management of containerized workloads and services which facilitate both automation and indicative configuration. The Kubernetes word originated from Greek meaning helmsman or pilot. K8s is an abbreviation resulting from counting eight letters between ‘K’ and the ‘S’.
Google open-sourced the Kubernetes project in 2014. Containers are a good way to bundle applications and run them. In a production environment we need to manage containers which run applications and ensure there is no downtime for them. Kubernetes provides a framework in which distributed systems can run in a resilient manner. It takes care of scaling and failover of applications and provides deployment patterns
Features of Kubernetes
- Can expose containers using a DNS name or IP address of their own. Able to handle load and distribute network traffic during peak for a stable deployment
- Allows to automatically mount a storage system of your choice be it local, public or provide cloud and more
- Change actual state to desired state in controlled manner
- Kubernetes tells how much CPU and memory each container require and fit containers onto nodes to make best use of resources
- Restart containers that fails and replaces them , kill containers which don’t respond to user defined health checks and does not advertise them until user is ready to use them
- Let you store and manage sensitive information such as passwords, SSH keys, OAUTH tokens and let you deploy secret and application configurations without rebuilding container images and exposing secret in stack configurations
Comparison: Serverless vs Kubernetes
Below table enumerates the key points of difference between the two:
Conclusion
Serverless is ideal when load is variable and irregular and looking for auto scalability. Kubernetes is meant for mature deployment options e.g. monitoring, minimal response latency and high performance computing without any resource restrictions.