DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk
4.5 (212 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
5,393 students enrolled
Wishlisted Wishlist

Please confirm that you want to add DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk to your Wishlist.

Add to Wishlist

DevOps: CI/CD using AWS CodePipeline & Elastic Beanstalk

Learn Automated Continuous Deployment using AWS CodePipleine, Elastic Beanstalk & Lambda (includes example PHP project).
Bestselling
4.5 (212 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
5,393 students enrolled
Created by Ali Rizavi
Last updated 3/2017
English
Current price: $75 Original price: $150 Discount: 50% off
30-Day Money-Back Guarantee
Includes:
  • 4.5 hours on-demand video
  • 3 Articles
  • 11 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • 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
View Curriculum
Requirements
  • Basic knowledge of software development processes (code repository, testing, etc.)
  • Amazon Web Services (AWS) Account (free or paid)
  • Basic understanding of AWS services such as EC2 and IAM is recommended but not required
  • Rudimentary / Working knowledge of source control systems such as Git
Description

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

Who is the target audience?
  • Software Engineers, Web Designers and Developers
  • Infrastructure, DevOps & QA teams
  • Tech founders, CTOs & SME owners
  • Someone looking to automate their web application delivery process using AWS
Curriculum For This Course
61 Lectures
04:19:06
+
Getting Started
2 Lectures 15:42

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.

Preview 07:19

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.

Preview 08:23
+
Introduction to Continuous Integration & Continuous Deployment
7 Lectures 14:57

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. 

Preview 00:19

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

What is Continuous Integration?
01:52

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

What is Continuous Delivery/Deployment?
01:47

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

What is a CI/CD Pipeline?
04:46

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.

Why use CI & CD?
02:46

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

Achieving Full Automation
01:59

Overview of the topics that we have covered so far.

Section Summary
01:28

Quiz: Basic CI/CD concepts
4 questions
+
CI/CD for Web Applications
11 Lectures 28:40

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. 

Preview 00:32

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.

Anatomy of a basic web application
08:07

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.

Designing a continuous deployment pipeline for a web application
04:45

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

Managing Relational Database Changes and Deployments
03:26

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

Deployments & Actions
02:39

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.

Monitoring
02:31

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.

Common Challenges
03:22

Summary
02:01

CI/CD Checklist
00:00


Quiz: Assignment Checkpoint
1 question

Assignment: Example solution
00:09
+
Setup Project: Let's setup a basic PHP web application
8 Lectures 38:57

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.

Preview 01:41


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
Building Fuzzy Telegram PHP Web Application
05:38

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.

Using Environment Variables in Applications
08:14

We will configure our database credentials using environment variables.

Configuring MySQL Database using Environment Variables
02:22

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.

Writing Database Migration Scripts (Database Change Management Scripts for CD)
10:43

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

Unit tests using PHPUnit
03:09

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

Checking in to code repository (Github)
04:25
+
Deploy Project: Setting up AWS Elastic Beanstalk & RDS
10 Lectures 49:39

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.

Preview 01:05

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.

Setting up Elastic Beanstalk - Part 1
08:59

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

Setting up Elastic Beanstalk - Part 2
07:16

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

Elastic Beanstalk Dashboard Walkthrough
04:04

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

Manually Deploying Application on Elastic Beanstalk
03:23

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

Manual RDS / Database Deployment on Elastic Beanstalk
04:57

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).

Intro to Elastic Beanstalk Extensions (.ebextensions)
09:18

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

Workshop: Creating .ebextension to run Database migration scripts
06:27

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.

Creating a new environment for "Production"
02:37

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

Application Versions
01:33
+
Setting up a CI/CD pipeline using AWS CodePipeline
7 Lectures 27:36

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.

Preview 01:19

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

First, let's commit everything in Github
01:11

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.

Creating a new pipeline on AWS CodePipeline
04:56

AWS CodePipeline in Action
05:23

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

Editing AWS CodePipeline and adding a new Stage
06:34

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

Manually release a change in AWS CodePipeline
04:45

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

Stage Transitions in AWS CodePipeline
03:28
+
Adding actions in AWS CodePipeline
4 Lectures 15:28

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

Sequential and Parallel Actions
03:11

We will talk about the actions offered by AWS CodePipeline.

Types of actions in AWS CodePipeline
05:28

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.

Input & Output Artifacts
03:56

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.

Four methods to run custom builds/actions in AWS CodePipeline
02:53
+
Method # 1: Adding a custom deployment action to run unit tests
2 Lectures 16:08

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.

Part 1 - Setting up a new stage and environment for unit testing
07:33

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.

Part 2 - Adding script to run unit tests in Elastic Beanstalk
08:35
+
Method # 2: Invoking Lambda Functions in your AWS CodePipeline
3 Lectures 18:54

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 1 - Create S3 Bucket for your assets
04:30

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 2 - Create Lambda Function to upload assets to S3
05:09

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

Part 3 - Adding Lambda Function in AWS CodePipeline
09:15
+
Method # 3: 3rd party integrations in AWS CodePipeline
1 Lecture 03:19

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.

Workshop: Integrating GhostInspector for UI testing
03:19
3 More Sections
About the Instructor
Ali Rizavi
4.5 Average rating
211 Reviews
5,393 Students
1 Course
Web Technologist & Software Engineer

I am a Software Engineer by profession with over 12+ years of industry experience building complex multi-tier web applications. I have worked in big tech firms where my day job was to build highly scalable web applications and services, designed to serve millions of requests per second. I am also an AWS certified Solutions Architect.

I am joining Udemy to share my expertise as well as a few tricks-of-the-trade that I have picked up over the years. My educational background is also in Computer Science & Engineering from one of the top universities in the United Kingdom (Russell Group). So, in every course, I will share insights from my experience while balancing it with the academic background and fundamentals. 

I am a strong believer in interactive mode of teaching and learning. In my courses I reinforce learning through demos, code-along sessions as well as simple yet effective practical assignments.