Developers delivering their Product Code

-Sri Kanishk S

Coding Club, IIT Guwahati
4 min readFeb 18, 2022

This article is a part of the Debugged Magazine released by Coding Club of Indian Institute of Technology, Guwahati. To read the entire magazine click here

Every developer wants to develop an application for their customers. But development is not the only necessary area which should be focused. Another important area is the delivery of the product code to customers, and the way to do so is through ‘deployment’. If you are a person who wants to become a developer, then it is a must to know about the various deployment methods in the market and also trace its evolution.

The first generation of deployment came with the monoliths. In a monolithic application, a single-tiered software application, in which the UI and data access code are combined into a single program from a single platform. These applications are self-contained and independent from other computer applications. But this type of deployment has several setbacks. One of them is scaling (Scaling is a process of extending the existing configuration to handle a large number of user requests or to manage the amount of load in the server). The deployment also takes time in this case because all of it has to roll together. The programmer faces the problem of increased complexity.

Microservices were created as an alternative for monoliths. You can compare microservices to Lego bricks needed to complete a model whereas monoliths can be compared to a model carved from wood. To reduce the complexity of the program, each part of the functionality is split into various pieces. So, each service is handled by a separate computer. This also means that in case of an update, only that specific piece is updated. But a lot of resources are used in running such a microservice.

PC: www.medium.com

In the field of development, newer and more efficient ways to make an application are found each day. Since microservices are not all that efficient, the technology of containers came into being. This implements the concept of microservices in a neater way. Every service is put into different containers. So basically, each container behaves like a separate computer where a service runs. Also, services will run the same wherever they run.

An important software which goes hand to hand with containers is Docker. Docker is an open platform for developing, shipping and running applications. It uses OS level virtualization to deliver applications in the form of containers. Docker images are read-only templates used to build containers. Containers are deployed instances created from those templates. Docker containers make it easy to put new versions of software, with new business features, into production quickly; and to quickly roll back to a previous version if you need to. Docker isn’t the only container engine, rather it is the most commonly used (Just like how google is associated with search engines).

PC: www.docker.com

Kubernetes, also called K8s, is an open source project created by Google. It is a container orchestration tool. Kubernetes automates the process which needs to be done manually to manage these containers. Even monoliths can be run on Kubernetes. Its applications are limitless.

Kubernetes can be deployed on different environments which include VMs, physical or cloud, or a hybrid of these environments. Kubernetes provides highly resilient infrastructure with zero downtime deployment capabilities, automatic rollback, scaling, and self-healing of containers (which consists of auto-placement, auto-restart, auto-replication, and scaling of containers on the basis of CPU usage).

Kubernetes follows a client-server architecture. Master node is composed of the etcd cluster, kube-API server, kube-controller-manager, cloud-controller-manager, scheduler. Client (worker) nodes are composed of kube-proxy and kubelet components. Nodes also include pods, which is a group of containers deployed together. Thus, in the case of Kubernetes we define services as a group of logical pods with a stable IP address.

PC: www.kubernates.io

Etcd is an open-source distributed key-value pair store. It is used to manage configuration data, state data, and meta data for Kubernetes. Kube-API server validates and configures data for pods, services etc. There is a non-terminating loop running which regulates the state of a Kubernetes system. Such a loop is called a control loop and controller-managers embed the core control loops in the Kubernetes system.

Kube-proxy is a network proxy which maintains network rules on nodes. These network rules allow network communication to your pods from sessions inside or outside the cluster. Important component in nodes is Kubelet. Kubelet’s purpose on nodes is to simply register that node to the API server.

The methods for deployment of a software application have come a long way. Starting from monolith all the way to K8s. The processes become easier and more efficient to run every time a new architecture is introduced in this domain. Right now, popular apps and games like Pokémon Go, Airbnb, WordPress and so many more run on K8s.

--

--

Coding Club, IIT Guwahati

A series of short informative blogs where the best programmers have your back with all the new technologies you need help exploring. So dive in!