We may earn an affiliate commission when you visit our partners.
Course image
Ali Rizavi

Automated Continuous Integration (CI) and Continuous Deployment (CD) is a critical part of DevOps and is a skill that is in high demand.

Read more

Automated Continuous Integration (CI) and Continuous Deployment (CD) is a critical part of DevOps and is a skill that is in high demand.

In this course, we will examine the subject in complete depth by walking through an example project and building a complex CI/CD pipeline on AWS. You will gain the following five extremely valuable and highly sought after skills:

  1. Learn to conceptualize and design CI/CD pipelines for your own web applications
  2. Deploy and scale web applications on Amazon's Cloud infrastructure using AWS Elastic Beanstalk
  3. Build pipelines on Amazon's Cloud infrastructure using AWS CodePipeline
  4. Learn advance topics such as Elastic Beanstalk Extensions and AWS Lambda to run custom actions in your CodePipeline
  5. Monitor your automated CI/CD pipelines

The tech landscape today is extremely competitive and is moving at an incredibly fast pace. With the emergence of cloud-based infrastructure, many startups are disrupting long-established businesses, industries and sectors almost on a daily basis as their entry barriers and costs keep on going down. DevOps and continuous integration / continuous deployment processes allows team to iterate often and innovate faster.

After taking this course, you will have a comprehensive understanding of continuous integration and continuous deployment processes. You will be able to confidently design a CI/CD pipeline for your own web applications. You will gain an in-depth understanding of AWS CodePipeline and AWS Elastic Beanstalk services.

With these skills, you will be able to build fully automate deployments of your web applications on Amazon’s Cloud infrastructure.

The course is very hands-on and together we will walk through an example project. We will pick a web application and deploy it on Amazon’s Cloud using AWS Elastic Beanstalk. I will then demonstrate and create a fully automated CI/CD pipeline for our web application using AWS CodePipeline. I will cover both of these AWS services in complete depth while also giving you easy to follow step-by-step instructions.

We will also cover some advance topics such as ebextensions and adding AWS Lambda functions in your AWS CodePipeline.

4000+ students enrolled Rated highly by students 70% course is practical based

Enroll now

What's inside

Learning objectives

  • Conceptualize and design fully automated continuous integration & deployment pipelines
  • Use aws codepipeline to setup ci/cd pipelines
  • Use aws elastic beanstalk to deploy applications
  • Map any real-world application into a ci/cd pipeline
  • Integrate custom builds / actions in aws codepipeline
  • Adding aws lambda functions in aws codepipeline
  • Monitor their aws codepipeline

Syllabus

This section outlines the structure of the course along with key learning goals and objectives that we will achieve in the course.

In this lecture I will give you a short background on DevOps, Continuous integration and deployment. I will also introduce myself and explain why and how CI/CD/DevOps can help you in your career.

Read more

In this lecture, I will describe how the course is structured. I have also uploaded two files in the resources section that will help you track our progress throughout the course.

Learn the fundamental concepts around CI / CD and the building blocks for CI / CD pipelines.

In this lecture, I will give a high level overview of what we are going to cover in this section. We will cover some basic concepts around Continuous integration, continuous delivery and continuous deployment. 

Continuous Integration means regularly and frequently merging and building changes to your software.

Continuous Delivery / Deployment means regularly releasing your software to a destination.

Continuous integration or continuous deployment pipeline means a sequence of steps a code change goes through.

What are the benefits of using Continuous Integration / Continuous Deployment processes? I will share some of my own personal experiences where I observed the benefits of using CI/CD.

What is a key challenge associated with fully automated CD pipelines?

Overview of the topics that we have covered so far.

Quiz: Basic CI/CD concepts
Learn how to apply CI / CD concepts to a web application. Discuss common challenges and their solutions.

In this lecture, I will give a high level overview of what we are going to cover in this section. We will learn to conceptualize and design a CI/CD pipeline for web applications. 

Let's take a look at the anatomy of a basic web application (e.g. architecture and components involved). We need to understand the architecture of our web applications in order to design an effective CI/CD process. I have formulated a 4-step process to help you conceptualize and design a CI/CD pipeline -- we will cover 3 of those steps in this lecture.

We will talk about the fourth step i.e. how to model a pipeline. We will walk through our example and design a basic CD pipeline using the four steps.

In this lecture, we will talk about how you can manage relational database changes as part of your continuous deployment pipeline.

We will talk about different types of actions that can be performed as part of your CI/CD pipeline (stand-alone vs. deployment actions).

Monitoring is important for automated CI/CD pipelines - what are the different types of approaches you can use to monitor your application as it progresses through your CD pipeline.

What are some of the common challenges associated with fully automated CD pipelines? We will talk about two most common challenges associated with web applications that you will encounter.

Summary
CI/CD Checklist
Assignment: Design a pipeline
Quiz: Assignment Checkpoint
Assignment: Example solution
Let's build a quick and simple PHP web application that we will use as our project in the rest of the course.

In this section we will dive deeper into our example web application (built in  PHP). Our web application is called 'Fuzzy Telegram' and displays a random quote of the day.

Quick Cloud9 IDE Overview

Cloud9 IDE and Amazon Web Services: We use Cloud9 (C9) IDE in our course to quickly get to coding and workshops without going through the hassles of installing various applications such as PHP, Apache, etc. 

Cloud9 (C9) has recently been acquired by Amazon. They have changed the workflow and user interfaces a bit. In this text handout I will illustrate the major differences between the old Cloud9 IDE setup and the new AWS based one. 

Fuzzy Telegram web application talks to the Quotes API (https://theysaidso.com/api/) and fetches the random quote of the day. It stores it in a database so that any likes and # of views can be recorded against the quote. 

  • If you prefer another language: please feel free to replicate a similar web application in your preferred language of choice.
  • If you already have a web application: please feel free to skip to the next section however I will highly recommend you to atleast go through the 'Environment Variables' and 'Writing Database Migrations' lectures in this section as we will refer back to them when we are configuring our AWS CodePipeline and AWS Elastic Beanstalk environments

Most modern web applications use environment variables as a way to store configuration options (e.g. database credentials). We will use environment variables in our web application. 

Another reason why we are keen to use environment variables is because Elastic Beanstalk supports this method so it is quite handy to rely on it for configuration options.

We will configure our database credentials using environment variables.

We will learn more about how / why to write database migration scripts. This enables us to automate database deployments in our CD pipelines. 

We will use PHINX (PHP Database Migration tool) in our example but the concept is broadly applicable to any Database change migration script  or tool that you choose going forward.

We will quickly take a look at some example unit tests in our web application.

Last step for us is to check everything into a code repository.

In this section we will deploy the PHP application that we have built in the previous section using AWS Elastic Beanstalk. We will also setup a MySQL database using AWS Relational Database Service.

In this lecture, I will give a high level overview of what we are going to cover in this section. We will will now dive deeper into AWS Elastic Beanstalk and deploy our web application on EB. We will also cover advance topics such as ebextensions and application versions.

Let's start configuring our AWS Elastic Beanstalk environment to deploy the web application. I will walk you through the advance configuration options available in Elastic Beanstalk.

Continuing our discussion around advance configuration options available in Elastic Beanstalk.

A quick tour of the Elastic Beanstalk dashboard that is available after you have setup your application.

Let's see how you can manually deploy your web application on AWS Elastic Beanstalk.

Manually running database migration scripts on our EC2 instance (in our example we will run phinx migration scripts).

Introducing AWS Elastic Beanstalk Extensions (.ebextensions). A great way of customizing your EC2 / AWS environment. We will focus on how you can run custom scripts using ebextensions but their features are more broad (we won't cover all the features).

Writing our first .ebextension script. The script will run our database migration script (phinx) as part of the deployment process to Elastic Beanstalk.

Let's put everything together and create a new environment in our elastic beanstalk application. In this workshop we will create a new environment that will serve as the 'production' stage for our web application.

A quick overview of application versions in Elastic Beanstalk and why they are useful

In this section we will setup a basic CodePipeline for our web application.

In this lecture, I will give a high level overview of what we are going to cover in this section. We will dive deeper into AWS CodePipeline. We will setup our first CD pipeline using AWS CodePipeline.

Let's just quickly check everything in to our code repository (github). We will use this code repository in our AWS codepipeline later.

Let's create our first AWS CodePipeline. I will walk you through some of the configuration options available when creating a new pipeline in AWS CodePipeline.

AWS CodePipeline in Action

We will cover AWS CodePipeline concepts such as stages, actions and transitions.

Let's take a look at how you can manually release changes in AWS CodePipeline.

We will talk about stage transitions in AWS CodePipeline and how you can disable/enable them.

In this advance section we will learn how to run build and testing steps in the pipeline.

We will discuss different ways you can execute your actions in AWS CodePipeline.

We will talk about the actions offered by AWS CodePipeline.

AWS CodePipeline has a notion of artifacts. In this lecture we will cover what those are and how to use them in your AWS CodePipeline.

In order for our CI/CD pipeline to be effective, we will most likely wish to run some custom script or custom logic. We will talk about the four different ways you can execute custom builds / custom scripts as part of your AWS CodePipeline.

Adding a custom action to AWS CodePipeline (Method # 1)

1st method to run custom scripts in Pipeline is by executing deployment actions (e.g. ebextensions). In this lecture we will setup a new environment in Elastic Beanstalk that we will use to run our tests.

Continuing on from our previous lecture, we will write a new ebextension script to execute unit tests. We will configure this as part of our pipeline and see how our pipeline reacts to success/failures.

Learn to build a new AWS Lambda Function and add it to the CodePipeline

2nd method to run custom scripts in Pipeline is by invoking AWS Lambda functions. 


We will talk about lambda functions and start our 3 part workshop to create a new lambda function that will upload our assets (CSS, JS and images) to S3.  We will then use the S3 bucket to serve static content for our web application.

Part 1 of 3: In this lecture, we will configure our S3 bucket to serve static content publicly.

Part 2 of 3: In this lecture, we will setup our AWS Lambda function to upload static assets to an S3 bucket. We will also briefly talk about IAM permissions in AWS.

Part 3 of 3: In this lecture, we will take our newly created AWS Lambda function and configure it in our AWS CodePipeline.

Workshop to integrate a third party service

The last two methods of running custom scripts in AWS CodePipeline is by integrating 3rd party services. We can do it either as Build or Test actions. In this lecture, I will just cover how to integrate a 3rd party 'Test' action but the same principle applies to the 'Build' action as well.

I will integrate GhostInspector (UI Testing Tool) in our AWS CodePipeline.

In this section we will discuss some real-life scenarios and how to map them to a CI/CD Pipeline

In many practical situations, it is preferable to limit risks that automated CD pipelines pose to your business / customers. For example: their might be a critical launch event and you don't wish to be automatically deploying changes during the event as a precautionary step. Manual approval steps in CI/CD pipelines allow you to restrict transitions in pipeline.

Bugs and errors are a fact. We will talk about how you can quickly (albeit manually) rollback to a previous version of your application in AWS Elastic Beanstalk.

In this section we will learn about monitoring and logging in pipeline.

In this lecture, I will give a high level overview of what we are going to cover in this section. Monitoring is a key part of automated CI/CD pipelines. We will discuss different ways you can configure monitoring for your web applications when they are part of a fully automated CD process.

We will configure a lambda function to do a basic sanity HTTP test on our web application and configure it as part of our pipeline. 

Quick overview of AWS CloudWatch and how you can use it to monitor your application / pipeline in AWS Elastic Beanstalk.

Summarizing our key learnings

Well done! You have successfully completed the course. I hope the course was insightful and that you picked up a couple of new skills along the way. Please don't forget to leave your feedback and ratings. They will help me improve this course as well as future courses.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Suitable for individuals looking to gain experience in DevOps and Continuous Integration/Continuous Deployment (CI/CD)
Well-suited for students with a basic understanding of web application development and cloud infrastructure
Appropriate for learners interested in developing skills for software engineering roles that involve CI/CD
May require prior knowledge of AWS Elastic Beanstalk and AWS CodePipeline for a seamless learning experience

Save this course

Save DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk to your list so you can find it easily later:
Save

Reviews summary

Devops course with practical aws

According to students, this course on DevOps CI/CD for AWS is , though dated. While learners appreciate its basics-first approach and concise length, they note that it is outdated for a rapidly-changing platform like AWS.
Course uses hands-on exercises for practical skills
Course is short and to the point
"the duration ( short and chrisp)"
Course starts with the basics and builds up
"What i liked about the couurse was starting from the basics"
Course content is out of date
"Course is too old for something like AWS which changes rapidly."
"2016 course for 2020 is just not right."
"There are lot many options included , even the GUI has changed a lot."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk with these activities:
Read "Continuous Delivery" by Jez Humble and David Farley
Build a strong foundation in continuous delivery principles and practices by reading a seminal work on the topic.
Show steps
  • Obtain a copy of the book
  • Read the book thoroughly
  • Summarize key concepts and ideas
  • Identify areas for further research or exploration
  • Discuss key takeaways with peers or a mentor
Follow a tutorial series on AWS CodePipeline
Reinforce knowledge of AWS CodePipeline by following a structured tutorial series.
Browse courses on AWS
Show steps
  • Identify and start a tutorial series on AWS CodePipeline
  • Follow the tutorials step-by-step
  • Complete the exercises and assignments
  • Apply the learned concepts to personal projects or work
  • Share knowledge and experiences with peers
Deploy "Hello World" app on AWS Elastic Beanstalk
Run a simple deployment to solidify foundational understanding of AWS Elastic Beanstalk and deployment process.
Browse courses on AWS Elastic Beanstalk
Show steps
  • Set up AWS account and install AWS CLI
  • Create a new Elastic Beanstalk application
  • Upload code for simple "Hello World" app
  • Deploy the application
  • Test the deployed application
Four other activities
Expand to see all activities and additional details
Show all seven activities
Participate in a CI/CD hands-on workshop
Gain practical experience and refine skills through hands-on participation in a CI/CD-focused workshop.
Browse courses on CI/CD
Show steps
  • Identify and register for a relevant workshop
  • Attend the workshop and actively participate
  • Apply concepts and techniques learned to personal projects or work
  • Share knowledge and experiences with peers
  • Seek feedback from workshop instructors or mentors
Write a script to automate workflow
Solidify understanding of automating CI/CD pipelines by writing a custom script.
Browse courses on CI/CD Pipeline
Show steps
  • Identify a repetitive task in the CI/CD pipeline
  • Research and choose a scripting language
  • Write a script to automate the task
  • Test and refine the script
  • Integrate the script into the pipeline
Build a CI/CD pipeline for a personal project
Apply CI/CD concepts by building a pipeline for a personal project, solidifying understanding through hands-on experience.
Browse courses on CI/CD Pipeline
Show steps
  • Plan the project and define the requirements
  • Set up a version control repository
  • Create the CI/CD pipeline using AWS CodePipeline
  • Integrate the pipeline with your application
  • Monitor and maintain the pipeline
Design a CI/CD pipeline for a real-world application
Reinforce pipeline design principles by creating one for a real-world application, showcasing practical implementation knowledge.
Browse courses on CI/CD Pipeline
Show steps
  • Identify a target application and its requirements
  • Research and analyze different CI/CD tools and technologies
  • Design the pipeline architecture and workflow
  • Create a detailed documentation of the pipeline design
  • Validate the design with peers or mentors

Career center

Learners who complete DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk will develop knowledge and skills that may be useful to these careers:
DevOps Engineer
A DevOps Engineer helps to bridge the gap between development and operations teams, ensuring that software is built, tested, and deployed efficiently. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches the subject in complete depth by walking through an example project and building a complex CI/CD pipeline on AWS.
Quality Assurance Analyst
A Quality Assurance Analyst tests and evaluates software products. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it helps you build a foundation in the process of continuous integration and continuous deployment.
Web Developer
A Web Developer creates and maintains websites and web applications. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it helps build a foundation in building web applications.
Release Manager
A Release Manager plans, coordinates, and oversees the release of software products. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to use AWS CodePipeline to setup CI/CD pipelines.
Project Manager
A Project Manager plans, executes, and closes projects. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to conceptualize and design fully automated continuous integration & deployment pipelines.
Software Engineer
A Software Engineer designs, develops, and maintains software applications. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to conceptualize and design CI/CD pipelines for web applications.
Product Manager
A Product Manager plans, develops, and manages software products. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it helps you build a foundation in the concepts around CI/CD.
Software Development Manager
A Software Development Manager plans, coordinates, and oversees the development of software products. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it helps you lead teams in the implementation of automated continuous integration and continuous deployment processes.
Systems Engineer
A Systems Engineer designs, develops, and maintains complex systems. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to integrate custom builds / actions in AWS CodePipeline.
IT Manager
An IT Manager plans, coordinates, and oversees the implementation and operation of computer systems. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to deploy applications on Amazon’s Cloud infrastructure using AWS Elastic Beanstalk.
Data Engineer
A Data Engineer designs, builds, and maintains data pipelines. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to add AWS Lambda functions in AWS CodePipeline.
Cloud Security Engineer
A Cloud Security Engineer ensures the security of cloud computing environments. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to monitor pipelines.
Network Engineer
A Network Engineer designs, builds, and maintains computer networks. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to run custom actions in AWS CodePipeline.
Cloud Engineer
Designing, building, and maintaining cloud infrastructure is the responsibility of a Cloud Engineer. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches how to deploy and scale web applications on Amazon’s Cloud infrastructure using AWS Elastic Beanstalk.
Cloud Architect
A Cloud Architect constructs, deploys, and operates an organization's cloud computing environment. DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk may be useful for your career path because it teaches fundamental concepts around CI/CD and the building blocks for CI/CD pipelines.

Reading list

We've selected 11 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk.
Is helpful for providing background knowledge, and is commonly used as a textbook at academic institutions.
Is an excellent background resource on how Google operates their infrastructure, allowing for round-the-clock availability of their web-based services, even in the face of total data center failures or fiber cuts.
Good practices for reducing lead time from committing a change to the codebase to seeing it in production. The ideas and examples in this book will be especially useful if working with larger teams.
Dives into how microservices are designed, built, and deployed. For those unfamiliar with the concept of microservices, this book should provide a lot of context around how to use your new pipeline.
While this book only covers infrastructure as code, it does go into detail about the technologies used throughout the course.
Save
Is particularly useful as a current reference.
Suitable for those new to coding, this book can help you automate many of the tasks you would do for a CI/CD pipeline in Python.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk.
DevOps with AWS CodePipeline, Jenkins and AWS CodeDeploy
Most relevant
Learn AWS - Deploy Java Spring Boot to AWS Elastic...
Most relevant
DevOps on AWS: Getting Started
Most relevant
Hands-on with AWS: Software Development Practices
Most relevant
AWS Certified Developer - Associate (DVA-C02)
Most relevant
GitLab CI: Pipelines, CI/CD and DevOps for Beginners
Most relevant
Introduction to AWS Elastic Beanstalk
Most relevant
AWS Developer Tools Deep Dive
Most relevant
Managing Applications in AWS
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser