In this article, we are going to walk you through an overview of Continuous Integration and Continuous Delivery (or CI/CD) pipeline and why it, along with Kubernetes system, Jenkins plugin, and Helm package-manager, has been Axon Active’s choice whenever applicable.
CI/CD pipeline overview
Although a common practice is shared among engineering team members, it’s inevitable that each software developer has their own coding styles. Differences in style allow developers to cover each other’s weaknesses as a team, but it also creates disarray among the team, especially during the “committing the source code” step. To avoid this, the CI/CD process is formalized, which makes it predictable and therefore automatable. Highly flexible, CI/CD pipeline can be modified to fit specific projects and teams.
Compared to the old method, where developers’ manual commits take a terrible toll on time, effort, and the focus that should have been put on their main coding job, the automated CI/CD pipeline makes possible multiple code-commits in a day, cross-checking with coding conventions, and making compatible the existing source codes in just a couple of minutes.
Kubernetes: The jewel in the crown
An open-source container-orchestration system for automating application deployment, scaling, and management, Kubernetes is probably the best of its kind as it helps solving various issues with automation for CI/CD pipeline.
In terms of load balancing:
When dealing with a higher load of network traffic in Kubernetes, more containers should be open, because it ensures the best experience for each user.
Meanwhile, for a lower load, less containers are to be open (i.e. employ graceful shutdowns of some containers) in order to save costs, especially when you’re using pay-as-you-use cloud services like Amazon Web Services (AWS) and Google Cloud Platform (GCP).
If you’re experiencing a system failure, properly implemented Kubernetes clusters automatically shut down faulty containers and open new ones.
For updating, Kubernetes’ containerized system allow 0-downtime software delivery by blue-green and canary deployments.
Learn more about Kubernetes components: https://kubernetes.io/docs/concepts/overview/components/
Jenkins: Axon Active’s CI tool of choice
Whilst there are many tools available at the fingertips, such as Jenkins, TeamCity, or GitLab, Jenkins still remains the most frequently used CI tool at Axon Active.
According to Axon Active’s CTO Khanh Tran, Jenkins is the best open-source framework for several reasons:
Jenkins boasts a full range of integrated and modern features that allow developers to build and test continuously.
The framework sports a built-in, easy-to-use Graphical User Interface (GUI) and doesn’t demand a lot of maintenance.
The over 400 plugins that it provides make Jenkins highly customizable for any developers or any kinds of project.
The fact that Jenkins is an independent and multilingual platform makes it extremely friendly for users.
Helm: The perfect package-manager in Kubernetes
A tool for managing packages of pre-configured Kubernetes resources, Helm “streamlines installing and managing Kubernetes applications” (https://github.com/helm/helm#README).
This package manager is easy to use, update, and revert the last commit. It is not only for developers but also somebody who is not on the technical side, such as a Product Manager, to make changes to the Kubernetes system.
As a scalable, manageable, and easily editable system, CI/CD spares Axon Active developers’ trivial tasks and lets them focus on creating values that are important for our customers. It also increases the flexibility, quality, and stability of our software/applications with much faster deployment.
We hope, with this article, you have now understood why the CI/CD process has become our first choice for software integration and deployment for our valued customers.
What is Kubernetes? (2020, March 31). Retrieved May 13, 2020, from https://kubernetes.io/docs/concepts/overview/what-is-kubernetes
Kubernetes Components. (2019, November 9). Retrieved May 13, 2020, from https://kubernetes.io/docs/concepts/overview/components/
Jenkins. (n.d.). Retrieved May 13, 2020, from https://www.jenkins.io/
Helm. (2020, May 12). helm/helm. Retrieved May 13, 2020, from https://github.com/helm/helm#README