1 00:00:00,810 --> 00:00:03,160 - [Alana] Welcome to Week 1 of the course. 2 00:00:03,160 --> 00:00:05,570 Let's imagine that there are multiple people working 3 00:00:05,570 --> 00:00:08,870 on an application hosted on Amazon Elastic Compute Cloud, 4 00:00:08,870 --> 00:00:11,090 or Amazon EC2. 5 00:00:11,090 --> 00:00:14,780 They're constantly creating new features and fixing bugs, 6 00:00:14,780 --> 00:00:16,740 but they're manually deploying these features 7 00:00:16,740 --> 00:00:19,760 to get them in front of testers and customers. 8 00:00:19,760 --> 00:00:22,000 They're also getting these features out pretty slowly 9 00:00:22,000 --> 00:00:23,930 on a 2-month cycle. 10 00:00:23,930 --> 00:00:25,820 That means that if they miss the release cycle, 11 00:00:25,820 --> 00:00:28,900 their code is delayed for another 2 months. 12 00:00:28,900 --> 00:00:30,541 They also know that manual deployment 13 00:00:30,541 --> 00:00:32,482 can be very error-prone. 14 00:00:32,482 --> 00:00:34,180 In fact, the team experienced this 15 00:00:34,180 --> 00:00:36,530 when they accidentally shipped an incorrect version 16 00:00:36,530 --> 00:00:38,010 of software. 17 00:00:38,010 --> 00:00:39,050 Bottom line is: 18 00:00:39,050 --> 00:00:40,570 It's easy to make mistakes 19 00:00:40,570 --> 00:00:43,500 when humans are overseeing large deployments. 20 00:00:43,500 --> 00:00:45,210 Not ideal. 21 00:00:45,210 --> 00:00:47,320 Instead, the team wants to be more agile, 22 00:00:47,320 --> 00:00:50,570 have a more reliable process, and automate when possible 23 00:00:50,570 --> 00:00:52,840 to prevent some of those human errors, 24 00:00:52,840 --> 00:00:55,060 and they already do this to an extent. 25 00:00:55,060 --> 00:00:57,470 In fact, they practice continuous integration, 26 00:00:57,470 --> 00:01:00,430 and automate build and test to ensure that each commit 27 00:01:00,430 --> 00:01:02,980 to the main branch doesn't break their application. 28 00:01:03,950 --> 00:01:05,690 But they want to take it a step further 29 00:01:05,690 --> 00:01:07,140 and extend their pipelines 30 00:01:07,140 --> 00:01:09,390 to include not only continuous integration, 31 00:01:09,390 --> 00:01:11,630 but also continuous delivery. 32 00:01:11,630 --> 00:01:14,400 That means on top of automating the build and testing, 33 00:01:14,400 --> 00:01:17,900 they would also be automating the release process. 34 00:01:17,900 --> 00:01:18,970 With continuous delivery, 35 00:01:18,970 --> 00:01:22,220 every code change is built, tested, and then pushed 36 00:01:22,220 --> 00:01:25,260 to a non-production testing or staging environment. 37 00:01:25,260 --> 00:01:26,290 And from there, 38 00:01:26,290 --> 00:01:27,970 a manual approval is required 39 00:01:27,970 --> 00:01:29,743 to push that code to production. 40 00:01:30,600 --> 00:01:33,490 If they wanted no manual steps in their pipeline, 41 00:01:33,490 --> 00:01:34,990 they could take this a step further 42 00:01:34,990 --> 00:01:37,260 with continuous deployment. 43 00:01:37,260 --> 00:01:39,460 That's right, not continuous delivery. 44 00:01:39,460 --> 00:01:41,300 Two different things. 45 00:01:41,300 --> 00:01:43,730 Continuous delivery requires manual approval 46 00:01:43,730 --> 00:01:45,550 to release to production. 47 00:01:45,550 --> 00:01:48,370 Continuous deployment automates that too, 48 00:01:48,370 --> 00:01:50,403 no explicit approval required. 49 00:01:51,410 --> 00:01:52,340 And, in theory, 50 00:01:52,340 --> 00:01:55,870 continuous delivery or continuous deployments eases a lot 51 00:01:55,870 --> 00:01:59,320 of their problems, like an increase in speed. 52 00:01:59,320 --> 00:02:01,260 The team of engineers will be able to release 53 00:02:01,260 --> 00:02:04,570 far more often now, because it's all automated. 54 00:02:04,570 --> 00:02:07,140 We're not relying as extensively on people. 55 00:02:07,140 --> 00:02:09,410 This also reduces labor hours, 56 00:02:09,410 --> 00:02:11,620 gives them a faster time to market, 57 00:02:11,620 --> 00:02:14,763 and, ideally, they're releasing safely and gradually. 58 00:02:16,230 --> 00:02:18,690 So, now we know what the team wants, 59 00:02:18,690 --> 00:02:22,760 continuous integration and continuous delivery, or CI/CD. 60 00:02:22,760 --> 00:02:24,720 So, how do we get them there? 61 00:02:24,720 --> 00:02:27,040 What tools do we use? 62 00:02:27,040 --> 00:02:29,520 That's what Week 1 is all about. 63 00:02:29,520 --> 00:02:30,463 Let's get started.