Builiding CI/CD Pipeline using AWS Code Pipeline

Customer Profile

Our Customer is one of the world’s leading certification training providers. They provide online training in disciplines such as Cyber Security, Cloud Computing, Project Management, Digital Marketing, and Data Science among others, where technologies and best practices are changing rapidly and demand for qualified candidates significantly exceeds supply. They are based in San Francisco, California and Bangalore, India.

Goal

During our discussion with customer Program Manager, we zeroed in for the following goals:

  1. Implement CI/CD pipeline using AWS Code Pipeline.
  2. Implement efficient, continuous, automated deployment process

Solution

By using best practices of DevOps,we implemented an end to end continuous integration and continuous deployment pipeline for our customer.We took the following steps to achieve our goals:

  1. Implemented Continuous Integration and Continuous Deployment (CI/CD) pipeline using AWS Code Pipeline.
  2. Migrated Code from GitHub to CodeCommit
  3. Used CodeBuild for building the code
  4. Created a Tomcat deployment server on EC2
  5. Restricted access to AWS services through IAM
  6. Implemented CloudWatch for logging
  7. Implemented CodeDeploy for deploying the application
  8. Implemented CodePipeline for creating an automated CI/CD Pipeline

Tech Stack

This solution used following tools, platforms and services:

  1. AWS-Public Cloud Platform. Following services are prominently used:
    • Elastic Compute Cloud(EC2): for tomcat deployment server
    • IAM – for role creation
    • S3 – for storing artifacts
    • CloudWatch – for monitoring,alerting and logging
    • CodeCommit – as code repository
    • CodeBuild – for building the code
    • CodeDeploy – for deploying the application
    • CodePipeline – for creating CICD pipeline
  2. Language – used YAML for scripting

Solution Architecture

AWS Code Pipeline

Click to see large view

Results

Along with the predefined goals , Loves Cloud was able to provide following benefits:-

  1. Exponential reduction in deployment time. Entire commit to deployment cycle gets completed in couple of minutes
  2. Automated CI/CD Pipeline using AWS Resources
  3. Improved developer’s productivity due to continuous integration
  4. Predictable deployments; if unit tests are failing, nothing gets deployed
  5. Stored artififacts on S3
  6. CloudWatch Logging helped the team in knowing the details of the failures during any stage from commit to deploy
  7. Setup real time monitoring and alerting for cost and performance of all AWS resources through CloudWatch