More than a year ago the Codacy team decided to switch their cloud infrastructure to Kubernetes (k8s), a popular open source system. Kubernetes allows for the deployment, scaling and management of containerized applications in order to more efficiently manage servers to scale. This is particularly important to support larger enterprise clients with hundreds or thousands of users.

Background

Kubernetes allows for the deployment of containers to clusters or networks of virtual machines. Complex cluster management can be done via simple commands with strong authentication and authorization schemes. The basic idea of Kubernetes is to further abstract machines, storage, and networks away from their physical implementation.

Though initially released by Google six years ago, the Cloud Native Computing Foundation currently maintains and governs the Kubernetes platform. A large community has grown around Kubernetes since its release. This means that extensive documentation exists to smoothen the technology’s learning process. It also ensures regular software updates. Moreover, k8s popularity means a large talent pool of developers to tap into for expertise.

Similar container management software like Apache Mesos and Openshift (Redhat’s version of Kubernetes) exist. However, K8s is the best fit for Codacy due to its community size and support for the cloud providers that could address our problems.

Container technology

To run containers previously we used Docker, one of the largest open source tools. In order to stick to Docker we needed to orchestrate the same architecture with Kubernetes. Today we continue to use Docker in conjunction with K8s and Amazon Web Service’s (AWS) Elastic Kubernetes Service (EKS) for container management.

Scalability and other benefits

As mentioned, scalability is the main reason we switched. Kubernetes ensures delivery of timely static analysis regardless of team size. It also simplifies infrastructure complexity and maintenance requirements. Other benefits include:

Multi cloud adoption for greater reach

Kubernetes is built to be used anywhere so you can deploy to public, private and hybrid clouds. This enables reach to users across locations with greater availability and security. Kubernetes works well with popular cloud platforms including AWS, Google Cloud Platform (GCP), Openstack and Microsoft Azure. All of these provide container services that run Kubernetes—with commercial support options available.

Faster go to market

By enabling deployment and updates to applications at scale Kubernetes allows companies to go to market faster with their products.

Lower long term costs

Although switching to Kubernetes involves upfront costs such as for setup and migration these likely pay off over time. By making it easy to run many containers on the same host Kubernetes maximizes available resources. It can scale up or down based on needed resources and reduce the number of required servers. This directly saves money, particularly for sizable deployments. Users can pay for what they need, when needed, rather than having a large, partially unused server for the majority of the time.

Candidates

Although each use case is different we can make some generalizations to determine if an organization is a strong candidate for Kubernetes. For customers who may not be a good fit, we will provide other solutions.

Already a certain size or planning to scale

Infrastructure and a certain level of expertise to manage Kubernetes clusters may be too costly for startups. Overhead can get expensive for only a few servers that need deployment. For these it may be best to use a hosted solution such as GCS.

Using container technologies

Companies currently using (or planning to use) Docker, microservices or other container technologies will have an easier transition to the k8s platform. Kubernetes has long supported Docker through custom code. Now, its more recent Container Runtime Interface (CRI), provides many ways to store virtual machines and communicate simultaneously. As mentioned, for Codacy, Docker continues to be a fit.

What Codacy’s K8s switch means to customers

For current questions regarding Codacy’s switch please don’t hesitate to reach out to our sales or customer success teams. We will contact customers with details and timelines very soon.

Also, to learn more about our experience switching to k8s check out blog posts such as DNS Problems Scaling To Kubernetes by our DevOps team. We will release more soon.