Factors to consider while choosing CICD Tool

Vinay Wadagavi
Nggawe Nirman Tech Blog
4 min readMay 8, 2020

CICD which translates to Continuous Integration & Continuous Delivery, helps Organisations to automate the delivery process of the software by initiating the build process, creating an artifact, storing the object, and then deploying it to the server or the containers based on one’s requirement. To achieve this, we use specific tools like Jenkins, techniques like webhooks combined with shell or bash scripting. Such a process improves the pace of software deliverables, in turn helping the Organization to improve developer productivity. The tools used for setting up CICD are called CICD Tools.

CICD Flow Process

Today, we can find many CICD tools available in the market. But the most popular one is Jenkins. As a DevOps Engineer, it is good to know other CICD tools available in the market, which helps to improve one’s skillset. Knowing the pros and cons of these tools help one to choose a proper tool based on your requirement. If one has used an On Host CICD tool like Jenkins for setting up the CICD, there is a high chance that you might have come across one of the below problems.

  • Service Monitoring
  • Disk Space
  • Maintenance of the Server
  • Upgradation of tools
  • User & Access Management … etc.

Similarly, if you have used the CICD tools provided as a service you might have come across issues like

  • Security of the deployment package
  • State of the build.
  • Flexibility of the tool.

In a nutshell, if one wants to choose one of the CICD tools for use, one might look for the combination of the below main features.

  • Service availability of the tool
  • Security of the deployment servers
  • Cost involved for the tool
  • Flexibility of the tool usage
  • Maintenance required for the tool
  • Versioning of the build script included in the Job
  • User & Access Management

Keeping the above features in mind, AWS is providing CICD tools for building and deploying the packages as three different services mainly,

  1. AWS CodeBuild
  2. AWS CodeDeploy
  3. AWS CodePipeline

AWS CodeBuild

AWS Codebuild is a fully managed service by AWS service. CodeBuild can be used to clone the source code, compile it, run the test cases, package the artifact, and upload it to the artifact server. With this continuous integration service, one need not worry about the scaling of the build server and handling the concurrency of the builds. One can use a prebuilt docker image along with the required tools and configuration as a build environment and choose the memory capacity based on the requirement. Few of the advantages over other CI tools are:

  • Based on the type of source code and needs, one can use different images for different builds as a build environment.
  • Pay as you go. Since CodeBuild charges you based on the build time, you pay only for what you use. Moreover, you would get an additional benefit of the first 100mins of build time free for t1.small(3GB RAM).
  • From a security perspective, since you can also run the CodeBuild inside a private subnet of the VPC, one need not worry about the security aspect of the build info and even operations on Database.
  • One can have the buildspec used for the CodeBuild versioned as a part of the source code.
  • It requires very minimal to zero maintenance.

To know more on how to configure and use AWS CodeBuild, you can follow the link here.

AWS CodeDeploy

AWS CodeDeploy is a fully managed Continuous Delivery service. AWS CodeBuild deploys the code package built during the CodeBuild process into Ec2 Servers, ECS Container, On-Premise Servers, and AWS Lambda Function based on the need. Few of the significant advantages of CodeDeploy over other tools are:

  • AWS CodeDeploy supports different kinds of deployments seamlessly.
  • It also Supports an easy way out for rollback to previous versions of the build package.
  • Deploying to On-Premise and Ec2 servers can be done quickly using AWS SSM Agent.
  • Apart from CodeBuild, CodeDeploy can integrate with other third-party tools like Jenkins, Bit Bucket, and more.
  • It can be one centralized place for monitoring the deployments.

To know more on how to configure and use AWS CodeDeploy, you can follow the link here.

AWS CodePipeline

AWS CodePipeline is again a fully managed Continuous Delivery Service. It combines the three stages, i.e., Source Control, CodeBuild & CodeDeploy, to form the CICD pipeline. The source control would download the source code based on the trigger of the repo, the CodeBuild uses this source code to create an artifact after the build, and finally the CodeDeploy uses this package for deployment.

The most significant advantage of CodePipeline is the combining capacity of all the three stages in one place. Hence, this ensures the deployments without manual intervention. One can find more information on AWS CodePipeline here.

Comparing with Other CICD Tools

Below is a comparison table of AWS CICD Tools with two of the most popular tools, Jenkins & CircleCI.

Comparison of different tools

Conclusion

The AWS CICD tools have useful features, require low maintenance, can be spun inside a VPC, and can be deployed to various services. One need not worry about the support in terms of User Accessibility, Logs and Alerts. It can be used to setup Cron too. In a nutshell, these tools can be a good alternative for the On-Host CICD tools like Jenkins.

For more such blogs, keep following Nggawe Nirman.

You can reach me on LinkedIn for any queries.

--

--