How to Set Up a Continuous Integration and Delivery (CI/CD) Pipelines on AWS

Automate your software delivery process using continuous integration and delivery (CI/CD) pipelines offers several advantages:

  • Develop, test and maintain build system, CI/CD framework and deployment tools.
  • Automate and streamline deployment processes.
  • Develop and maintain a monitoring system that overlooks our build landscape.
  • Lead efforts in automation, continuous deployment, build, and configuration management.
  • Assess new technology projects and tools, or migrate our environments to latest versions to keep up with the rapid pace of change.

Requirements to create a CICD pipeline in AWS:

  1. Create a release pipeline that automates your software delivery process using AWS CodePipeline.
  2. Connect a source repository, such as AWS CodeCommit, Amazon S3, or GitHub, to your pipeline.
  3. Automate code deployments by connecting your pipeline to AWS CodeDeploy, a service that deploys code changes committed to your source repository to Amazon EC2 instances.


What you’ll need before starting:

  • An AWS Account: You will need an AWS account to begin setting up your continuous integration and continuous delivery pipeline. Sign up for AWS.
  • AWS Experience: Intermediate familiarity with AWS and its services is recommended.
  • AWS permissions: Before you build your CI/CD pipeline with CodePipeline, you may need to set up AWS IAM permissions to start building. Click here for step-by-step instructions.

Monthly Billing Estimate:

The total cost of running a CI/CD pipeline on AWS depends on the AWS services used in your pipeline. For example, AWS CodePipeline, AWS CodeCommit, Amazon S3, and Amazon EC2 are all AWS services that you can use to build your pipeline – and each product has a different pricing model that impacts your monthly bill. Monthly charges will vary on your configuration and usage of each product, but if you follow the step-by-step instructions in this guide and accept the default configurations, you can expect to be billed around $15 per month. Most of this cost is from leaving the EC2 instance running. To see a detailed breakdown, see Services Used and Costs.

Benefits of Continuous Integration and Delivery (CI/CD)

Increased speed of innovation and ability to compete in the marketplace

Two identical companies: One implements CI/CD technology and the other doesn’t. Who do you think deploys applications faster? While this seems like a silly comparison, because of course the company with more automation deploys faster, there are organizations out there still convinced they don’t need CI/CD because they’re not looking at their competition. Organizations that understand the importance of CI/CD are setting the pace of innovation for everyone else.

Code in production is making money instead of sitting in a queue waiting to be deployed

Organizations that have implemented CI/CD are making revenue on the features they deploy, not waiting for a manual check to see if the code is up to par. They already know the code is good because they have tests that are automated, and continuous delivery means that code is deployed automatically if it meets certain standards. They’ve removed human error and delays from the process.

Great ability to attract and retain talent

Engineers that can focus on what they’re best at will be happier and more productive, and that has far-reaching impact. Turnover can be expensive and disruptive. A good CI/CD strategy means engineers can work on important projects and not worry about time-consuming manual tasks. They can also work confidently knowing that errors are caught automatically, not right before deployment. This kind of cooperative engineering culture inevitably attracts talent.

Higher quality code and operations due to specialization

Dev can focus on dev. Ops can focus on ops. Bad code rarely makes it to production because continuous testing is automated. Developers can focus on the code rather than the production environment, and operations doesn’t have to feel like a gatekeeper or a barrier. Both teams can work to their strengths, and automated handoffs make for seamless processes. This kind of cooperation makes DevOps possible.

What capabilities are required to make this happen?

Robust CI/CD

When we use the term “robust,” it’s all about avoiding half-baked or partial solutions. There are several CI/CD solutions out there but there are varying degrees of effectiveness. Continuous integration and continuous delivery go hand in hand, so having a solution that offers both is ideal. The tool you use should offer the automation you need, not just some. If your CI/CD tool is prone to failure or “brittle,” it can be just one more thing to manage. This was precisely why the team at Ticketmaster replaced Jenkins CI and moved to weekly releases, decreasing their pipeline execution time from two hours to only eight minutes to build, test, and publish artifacts.

Containers and Kubernetes

Containers have made a huge impact on the way companies build and deploy code. While it was once difficult to develop applications with a microservices architecture, over the past five years it has become considerably easier with container orchestration tools like Kubernetes, comprehensive CI/CD tools that automate testing and deployments, and APIs that update automatically. Breaking up services so they can run independently reduces dependencies and creates better workflows.

Functionality for the entire DevOps lifecycle

Visibility is a huge asset when improving DevOps workflows. For some teams, they can have several tools handling different facets of the SDLC, which creates integration issues, maintenance issues, visibility issues, and is just plain expensive from a cost standpoint. A complex toolchain can also weaken security. In a Forrester survey of IT professionals, 45% said that they had difficulty ensuring security across the toolchain.

How would you measure the success of a CI/CD strategy?

Cycle time

Cycle time is the speed at which a DevOps team can deliver a functional application, from the moment work begins to when it is providing value to an end user.

Time to value

Once code is written, how long before it’s released? This delay from when code is written to running in production is the time to value, and is a bottleneck for many organizations. Continuous delivery as well as examining trends in the QA process can help to overcome this barrier to quick deployments.

Uptime, error rate, infrastructure costs

Uptime is one of the biggest priorities for the ops team, and with a good CI/CD strategy that automates different processes, they should be able to focus more on that goal. Likewise, error rates and infrastructure costs can be easily measured once CI/CD is put in place. Operations goals are a key indicator of process success.

Team retention rate

Happy developers stick around, so looking at retention rates is a reliable way to gauge how well new processes and applications are working for the team. It might be tough for developers to speak up if they don’t like how things are going, but looking at retention rates can be one step in identifying potential problems.

The benefits of a good CI/CD strategy are felt throughout an organization: From HR to operations, teams work better and achieve goals. In such a competitive development landscape, having the right CI/CD in place gives any company an edge.

REFERENCES:

AWS. (2020). Set Up a CI/CD Pipeline on AWS. Amazon Web Services. https://aws.amazon.com/getting-started/projects/set-up-ci-cd-pipeline/

Buchanan, C. (2019). 4 Benefits of CI/CD. Gitlab. https://about.gitlab.com/blog/2019/06/27/positive-outcomes-ci-cd/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s