KUBERNETES USE CASE— ADFORM
By: Priyanka Bhide
Tags: Case Study, Kubernetes, Orchestration

What is Kubernetes?

The name KUBERNETES originates from Greek, meaning helmsman or pilot.

Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.

Google open-sourced the Kubernetes project in 2014. Kubernetes combines over 15 years of Google’s experience running production workloads at scale with best-of-breed ideas and practices from the community.

Key Features of Kubernetes:

Given below are the key features of handling Kubernetes in organizations:

Scalability: Kubernetes helps scale without putting the burden on the company’s operation team. Flexibility: Kubernetes also provides ample flexibility during the tasks and grows alongside to deliver you consistent applications — no matter how complicated your task is. Automation: It helps in putting containers automatically in place of their exact resource requirements. It even takes care of other constraints without compromising with availability. Furthermore, it provides the best effort for workloads for driving save resources and utilization. Self-Healing: Kubernetes even replace, restart and reschedule containers that are failing whenever their nodes die. It even kills contains that are not responding on time. Run Anywhere: Kubernetes also gives you proper freedom for enjoying the benefits of on-premises, public or hybrid cloud infrastructure, as well as enables you to move workloads effortlessly anywhere they are needed. Self-Discovery and Load Balancing: This system even provides containers with unique IP addresses, along with a single DNS , load balance and name for different sets of containers. Automated Rollouts and Rollbacks: This system even rolls out progressively to make changes in your application or its overall configuration. Meanwhile, it monitors the health of your application for ensuring it won’t harm any process while working. If something goes unplanned, Kubernetes can automatically roll-back the unwanted change for you. Batch Execution: Besides replacing the failing containers, Kubernetes even manages your continuous integration workloads and batch execution, if desired.

Architecture of Kubernetes :

What is Kubernetes used for?

Kubernetes is used to create applications that are easy to manage and deploy anywhere. When available as a managed service, Kubernetes offers you a range of solutions to meet your needs. Here are some common use cases.

Increasing development velocity :

Kubernetes helps you to build cloud-native microservices-based apps. It also supports containerization of existing apps, thereby becoming the foundation of application modernization and letting you develop apps faster.

Deploying applications anywhere :

Kubernetes is built to be used anywhere, allowing you to run your applications across on-site deployments and public clouds; as well as hybrid deployments in between. So you can run your applications where you need them.

Running efficient services :

Kubernetes can automatically adjust the size of a cluster required to run a service. This enables you to automatically scale your applications, up and down, based on the demand and run them efficiently.

CASE STUDY : ADFORM

Challenge

Adform’s mission is to provide a secure and transparent full stack of advertising technology to enable digital ads across devices. The company has a large infrastructure: OpenStack-based private clouds running on 1,100 physical servers in 7 data centers around the world, 3 of which were opened in the past year. With the company’s growth, the infrastructure team felt that “our private cloud was not really flexible enough,” says IT System Engineer Edgaras Apšega. “The biggest pain point is that our developers need to maintain their virtual machines, so rolling out technology and new software takes time. We were really struggling with our releases, and we didn’t have self-healing infrastructure.”

Solution

The team, which had already been using Prometheus for monitoring, embraced Kubernetes and cloud native practices in 2017. “To start our Kubernetes journey, we had to adapt all our software, so we had to choose newer frameworks,” says Apšega. “We also adopted the microservices way, so observability is much better because you can inspect the bug or the services separately.”

Impact

“Kubernetes helps our business a lot because our features are coming to market faster,” says Apšega. The release process went from several hours to several minutes. Autoscaling has been at least 6 times faster than the semi-manual VM bootstrapping and application deployment required before. The team estimates that the company has experienced cost savings of 4–5x due to less hardware and fewer man hours needed to set up the hardware and virtual machines, metrics, and logging. Utilization of the hardware resources has been reduced as well, with containers notching 2–3 times more efficiency over virtual machines. “The deployments are very easy because developers just push the code and it automatically appears on Kubernetes,” says Apšega. Prometheus has also had a positive impact: “It provides high availability for metrics and alerting. We monitor everything starting from hardware to applications. Having all the metrics in Grafana dashboards provides great insight on your systems.”

Adform made headlines last year when it detected the HyphBot ad fraud network that was costing some businesses hundreds of thousands of dollars a day.

With its mission to provide a secure and transparent full stack of advertising technology to enable an open internet, Adform published a white paper revealing what it did — and others could too — to limit customers’ exposure to the scam.

In that same spirit, Adform is sharing its cloud native journey. “When you see that everyone shares their best practices, it inspires you to contribute back to the project,” says IT Systems Engineer Edgaras Apšega.

The company has a large infrastructure: OpenStack-based private clouds running on 1,100 physical servers in their own seven data centers around the world, three of which were opened in the past year. With the company’s growth, the infrastructure team felt that “our private cloud was not really flexible enough,” says Apšega. “The biggest pain point is that our developers need to maintain their virtual machines, so rolling out technology and new software really takes time. We were really struggling with our releases, and we didn’t have self-healing infrastructure.”

The fact that Cloud Native Computing Foundation incubated Kubernetes was a really big point for us because it was vendor neutral. And we can see that a community really gathers around it. Everyone shares their experiences, their knowledge, and the fact that it’s open source, you can contribute.

The team, which had already been using Prometheus for monitoring, embraced Kubernetes, microservices, and cloud native practices.

A proof of concept project was started, with a Kubernetes cluster running on bare metal in the data center. When developers saw how quickly containers could be spun up compared to the virtual machine process, “they wanted to ship their containers in production right away, and we were still doing proof of concept,” says IT Systems Engineer Andrius Cibulskis.

The first production cluster was launched in the spring of 2018, and is now up to 20 physical machines dedicated for pods throughout three data centers, with plans for separate clusters in the other four data centers. The user-facing Adform application platform, data distribution platform, and back ends are now all running on Kubernetes. “Many APIs for critical applications are being developed for Kubernetes,” says Apšega. “Teams are rewriting their applications to .NET core, because it supports containers, and preparing to move to Kubernetes. And new applications, by default, go in containers.”

Releases are really nice for them, because they just push their code to Git and that’s it. They don’t have to worry about their virtual machines anymore.

This big push has been driven by the real impact that these new practices have had. “Kubernetes helps our business a lot because our features are coming to market faster,” says Apšega. “The deployments are very easy because developers just push the code and it automatically appears on Kubernetes.” The release process went from several hours to several minutes. Autoscaling is at least six times faster than the semi-manual VM bootstrapping and application deployment required before.

The team estimates that the company has experienced cost savings of 4–5x due to less hardware and fewer man hours needed to set up the hardware and virtual machines, metrics, and logging. Utilization of the hardware resources has been reduced as well, with containers notching two to three times more efficiency over virtual machines.

All of these benefits have trickled down to individual team members, whose working lives have been changed for the better. “They used to have to get up at night to re-start some services, and now Kubernetes handles all of that, Even the security teams have been impacted. Security teams are always not happy,” says Apšega, “and now they’re happy because they can easily inspect the containers.”

The company plans to remain in the data centers for now, “mostly because we want to keep all the data, to not share it in any way,” says Cibulskis, “and it’s cheaper at our scale.” But, Apšega says, the possibility of using a hybrid cloud for computing is intriguing: “One of the projects we’re interested in is the Virtual Kubelet that lets you spin up the working nodes on different clouds to do some computing.”

“I think that our company just started our cloud native journey. It seems like a huge road ahead, but we’re really happy that we joined it.”

Thanks for Reading😇😊