Kubernetes and its Use case: AppDirect
🔰Before we explain what Kubernetes does, we need to explain what containers are and why it is used in the industry.
For provisioning the OS we have different ways but according to industry requirement where OS will be install, start and run the service in a seconds this requirement is solved using container technology. A container is a mini-virtual machine. It is small, as it does not have device drivers and all the other components of a regular virtual machine. Docker is by far the most popular container and it is written in Linux.
When public cloud companies bill you for CPU time or storage then you need to make sure you do not have any orphaned machines spinning out there doing nothing. Plus there is the need to automatically spin up more when a machine needs more memory, CPU, or storage, as well as shut them down when the load lightens.
Orchestration tackles these problems. This is where Kubernetes comes in.
Kubernetes also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery.
Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation (CNCF).
Kubernetes cluster consists of at least one master and multiple compute nodes. The master is responsible for exposing the application program interface (API), scheduling the deployments and managing the overall cluster. Each node runs a container runtime, such as Docker or rkt, along with an agent that communicates with the master. The node also runs additional components for logging, monitoring, service discovery and optional add-ons. Nodes are the workhorses of a Kubernetes cluster.
They expose compute, networking and storage resources to applications. Nodes can be virtual machines (VMs) running in a cloud or bare metal servers running within the data center.
Features of Kubernetes:
👉Kubernetes is open source which helps to take advantage of on-premises, hybrid, or public cloud infrastructure, letting you effortlessly move workloads to where it matters to you.
👉Kubernetes progressively rolls out changes to your application or its configuration, while monitoring application health to ensure it doesn’t kill all your instances at the same time. If something goes wrong, Kubernetes will rollback the change for you.
👉No need to modify your application to use an unfamiliar service discovery mechanism. Kubernetes gives Pods their own IP addresses and a single DNS name for a set of Pods, and can load-balance across them.
👉Routing of service traffic based upon cluster topology.
👉Automatically mount the storage system of your choice, whether from local storage, a public cloud provider such as GCP or AWS, or a network storage system such as NFS, iSCSI, Gluster, Ceph, Cinder, or Flocker.
👉Deploy and update secrets and application configuration without rebuilding your image and without exposing secrets in your stack configuration.
👉In addition to services, Kubernetes can manage your batch and CI workloads, replacing containers that fail, if desired.
👉Scale your application up and down with a simple command, with a UI, or automatically based on CPU usage.
👉Restarts containers that fail, replaces and reschedules containers when nodes die, kills containers that don’t respond to your user-defined health check, and doesn’t advertise them to clients until they are ready to serve.
AppDirect: Challenges of AppDirect and Solution given by Kubernetes
AppDirect provides an end-to-end commerce platform for cloud-based products and services. When Director of Software Development Pierre-Alexandre Lacerte began working there in 2014, the company had a monolith application deployed on a “tomcat infrastructure, and the whole release process was complex for what it should be,” he says.
👉There were a lot of manual steps involved, with one engineer building a feature, then another team picking up the change. So you had bottlenecks in the pipeline to ship a feature to production.
👉At the same time, the engineering team was growing, and the company realized it needed a better infrastructure to both support that growth and increase velocity.
The Kubernetes platform has helped support the engineering team’s 10x growth over the past few years. Coupled with the fact that they were continually adding new features, Lacerte says, “I think our velocity would have slowed down a lot if we didn’t have this new infrastructure.” Moving to Kubernetes and services has meant that deployments have become much faster due to less dependency on custom-made, brittle shell scripts with SCP commands. Time to deploy a new version has shrunk from 4 hours to a few minutes. Additionally, the company invested a lot of effort to make things self-service for developers. “Onboarding a new service doesn’t require Jira tickets or meeting with three different teams,” says Lacerte.
Today, the company sees 1,600 deployments per week, compared to 1–30 before. The company also achieved cost savings by moving its marketplace and billing monoliths to Kubernetes from legacy EC2 hosts as well as by leveraging autoscaling, as traffic is higher during business hours. AppDirect has more than 50 microservices in production and 15 Kubernetes clusters deployed on AWS and on premise around the world.
“We made the right decisions at the right time. Kubernetes and the cloud native technologies are now seen as the de facto ecosystem. We know where to focus our efforts in order to tackle the new wave of challenges we face as we scale out. The community is so active and vibrant, which is a great complement to our awesome internal team.” — ALEXANDRE GERVAIS, STAFF SOFTWARE DEVELOPER, APPDIRECT