- [Alana] Welcome to Week 1 of the course. Let's imagine that there are multiple people working on an application hosted on Amazon Elastic Compute Cloud, or Amazon EC2. They're constantly creating new features and fixing bugs, but they're manually deploying these features to get them in front of testers and customers. They're also getting these features out pretty slowly on a 2-month cycle. That means that if they miss the release cycle, their code is delayed for another 2 months. They also know that manual deployment can be very error-prone. In fact, the team experienced this when they accidentally shipped an incorrect version of software. Bottom line is: It's easy to make mistakes when humans are overseeing large deployments. Not ideal. Instead, the team wants to be more agile, have a more reliable process, and automate when possible to prevent some of those human errors, and they already do this to an extent. In fact, they practice continuous integration, and automate build and test to ensure that each commit to the main branch doesn't break their application. But they want to take it a step further and extend their pipelines to include not only continuous integration, but also continuous delivery. That means on top of automating the build and testing, they would also be automating the release process. With continuous delivery, every code change is built, tested, and then pushed to a non-production testing or staging environment. And from there, a manual approval is required to push that code to production. If they wanted no manual steps in their pipeline, they could take this a step further with continuous deployment. That's right, not continuous delivery. Two different things. Continuous delivery requires manual approval to release to production. Continuous deployment automates that too, no explicit approval required. And, in theory, continuous delivery or continuous deployments eases a lot of their problems, like an increase in speed. The team of engineers will be able to release far more often now, because it's all automated. We're not relying as extensively on people. This also reduces labor hours, gives them a faster time to market, and, ideally, they're releasing safely and gradually. So, now we know what the team wants, continuous integration and continuous delivery, or CI/CD. So, how do we get them there? What tools do we use? That's what Week 1 is all about. Let's get started.