‫Okay.
‫Welcome to one of my favorite sections on AWS, which is the CI CD section.
‫Why?
‫Because as a developer, CI CD is so important and that section is actually really key at the exam.
‫So you're using before all the course resources, we've learned how to create resources manually, which
‫are the fundamentals.
‫We learn how to interact with AWS programmatically.
‫So otherwise using the CLI and we learn how to deploy code to using Beanstalk.
‫But all those steps that we're done here were very manual and it's very likely for us to do mistakes
‫if we keep on doing things manually.
‫So what we want to do, end of the day is to push our code in a target repository and then from that
‫code we want it to be deployed in an automated way onto AWS.
‫So automatically the right way, making sure that our code is going to be tested before it's being deployed
‫with the possibility to go into different stages.
‫For example, our development environment, our test environment, our staging, which is pre-prod and
‫prod environment.
‫And sometimes even when you want to deploy to prod, maybe you want to have manual approvals and so
‫we want all these things.
‫So we need to learn AWS, CI, CD, and these are very important steps because we're going to automate
‫all these steps and this is super important.
‫Okay, so it's all about automating everything we've done so far in this course to add safety and to
‫add speed.
‫So we learn about code, commit to store our code codepipeline to automate our pipelines from code to
‫platforms such as Beanstalk or other places code build to build and automatically test our code to code
‫deploy to deploy our code to EC2 instances not using beanstalk but using other ways.
‫Codestar which is a way for us to manage software deployment activities in one place and regroups code.
‫Commit Codepipeline code build and code deploy in 1 in 1 tool called artifact to store, publish and
‫share software packages and code guru to have automated code reviews using machine learning.
‫So now don't worry, we'll learn about all of this one by one in this course.
‫This is just an overview.
‫So what is CI CD?
‫So first CD is about continuous integration and that means that the developers are going to push the
‫code very often into a central code repository.
‫And so that could be GitHub, which is a third party service from AWS or Code Commit, which is a AWS
‫service or Bitbucket, which is also a third party service.
‫So developers push the code to a code repo and then there's going to be a test or a build server that
‫will check if the code is correct and working as soon as it's pushed into the code repository.
‫So this could be code build if it's AWS or Jenkins, if you want an open source tool, for example.
‫So the build server is going to fetch the code and test it.
‫And then as a developer, we're going to get feedback as to whether or not the test or checks will have
‫passed or failed.
‫And so we get the build and test results, but we've saved time.
‫So with this we find Bug early and we fix them early because we are testing the code as soon as it is
‫pushed in a code repository so the developer doesn't need to test the code on their machine.
‫They can just push the code and wait for the build server to do it while they do some other tasks.
‫Therefore the code is going to be delivered faster because it's going to be tested.
‫Thanks to this, we're going to be able to deploy often because as soon as it's tested and ready, we
‫can deploy it.
‫And then happier developers because developers have a healthier cycle for development.
‫So we saw CI and now there is CD, so it could be continuous delivery, for example.
‫And so let's give you this example.
‫So here we have application servers of version one and we want our code as a developer to be pushed
‫all the way to these application servers.
‫So the way we do it is that with continuous delivery, anytime we push the code onto the code repo,
‫it's going to be deployed.
‫If it's tested appropriately onto our application servers.
‫So the developer pushes the code, the code is going to be tested by the build server.
‫So this is the continuous integration part.
‫And then after the build is passed, so it's green, so it's fully tested, then there's going to be
‫a deployment server and this deployment server is going to deploy our application onto our application
‫servers.
‫So version one at first.
‫But then if we push again a new version of our code into our code repo, then we're going to have application
‫server version two.
‫So with continuous delivery, we ensure that the deployments happen often and that they're very quick
‫and we shift away from a mentality of let's do one release every three months, which is very long to
‫do, you know, error prone because it doesn't happen very often to let's automate, you know, up to
‫five releases a day because every time we push the code into the code repo, the code is going to be
‫live onto some application servers.
‫So to do continuous delivery, we need automated deployment tools such as code deploy, which is an
‫AWS service or Jenkins CD or Spinnaker or other tools.
‫So if we look at the tech stack for CI CD on AWS, we have the code and the code can live in Codecommit
‫or GitHub or Bitbucket or any third party code repository.
‫Then we have a build phase.
‫So the build phase and the test phase could be done by code build on AWS, but there's a competitor
‫to code build which is open source called Jenkins CI or any third party CI server will do as well.
‫Then we go to the deploy.
‫Then we can use code, deploy and code deploy will see.
‫You can deploy to EC2 instances on premises, servers, lambda functions and ECS or if you wanted to
‫also provision the infrastructure, we could use elastic beanstalk as an alternative to code deploy
‫to do the deployment and the provision of the infrastructure, and then to orchestrate all these things
‫to define exactly what happens in our CI CD process.
‫Then we can orchestrate everything using AWS code pipeline.
‫So that's it for an overview of CI CD.
‫Now in this section we're going to do a deep dive obviously on the services, but hopefully you know
‫the context of what we're trying to do now.
‫Let's go ahead and do a deep dive on all these services.
‫So I will see you in the next lecture.