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