WHY DevOps?
The demand for DevOps engineers has skyrocketed because few people have these skills and the value DevOps add to a business’s bottom line is huge.
DevOps saves money by automating and streamlining processes.
It makes it easier to deploy more frequently, so you can catch issues early and improve the reliability of your product or service.
It saves hundreds of hours of manually administering servers and running deployments (like the good old days).
People in DevOps roles are some of the highest earners in the industry, are looking for work the least, and are the most sought after by companies. (Source: Stack Overflow Developer Survey 2019 & 21, and Indeed).
Needless to say, mastering the technologies and skills used for DevOps is a great return on investment.
In this advanced course, you’ll learn how to deploy a Django REST API to AWS using Terraform, GitLab/GitHub, Docker and a suite of AWS technologies, including...
- Elastic Container Registry (ECR)
- Relational Database Service (RDS)
- Elastic Container Service (ECS)
- Application Load Balancer (ALB)
- Elastic File System (EFS)
- Virtual Private Cloud (VPC)
- Subnets
- Gateways
- Simple Storage Service (S3)
- Route53
- Identity and Access Management (IAM)
- and AWS Certificate Manager (ACM)
You will build an architecture that is scalable, secure, resilient and facilitates zero downtime deployments.
The type of architecture that's capable of handling millions of users, and looks like this...
You will set up a professional development workflow like this…
By the end of the course you will have implemented a fully functioning deployment process, comparable to what you might find at any major tech company.
Infrastructure as Code (IaC)
You will also learn how to define your infrastructure as code so you can easily create and destroy environments as you need them, keeping AWS costs low.
AWS account management
Finally, you will learn how to properly manage and administer an AWS account in accordance with best practices to mitigate the risk of it getting compromised (and preventing AWS bill shock).
This course was designed to deploy a Django application, but it will work for any web application that runs in Docker.
The Curriculum
- Overview of Workflow Design (5:23)
- Intro to GitHub Actions (1:40)
- Set GitHub Actions Variables (15:14)
- Add Python Checks (19:45)
- Add Terraform Checks (8:39)
- Build and Push Docker Images (20:50)
- Add Terraform Apply Job (9:50)
- Add Terraform Destroy Jobs (8:23)
- Test Configured Workflow (11:38)
- Summary of GitHub Actions Setup (1:09)
- GitHub Actions Quiz
- GitLab CI/CD Introduction (2:16)
- Overview of Workflow Design (2:58)
- Add Python Checks (10:56)
- Set GitLab CI/CD Variables (16:42)
- Add Terraform Checks (3:38)
- Test Housekeeping Checks (4:57)
- Build and Push Docker Images (10:34)
- Add Terraform Apply Job (15:01)
- Add Terraform Destroy Job (7:31)
- Test Configured Workflow (12:44)
- Summary of GitLab CI/CD Setup (1:10)
- GitLab CI/CD Quiz
- Intro to Setup ECS (2:59)
- Add ECS Permissions to CD User (3:44)
- Create Cluster (1:43)
- Create ECS Task Execution Role (9:01)
- Create ECS Task Role (5:59)
- Create Log Group (2:13)
- Create Task Definition (10:02)
- Create Proxy Container Definition (13:18)
- Create App Container Definition (14:01)
- Create Service Security Group (8:12)
- Create ECS Service (9:05)
- Deploy Changes and Test (5:31)
- View Logs (6:05)
- Summary of Setup ECS (1:11)
- Setup ECS Quiz
- Intro to Create Load Balancer (2:13)
- Add Load Balancer Permissions (3:08)
- Add Security Group (7:15)
- Add Load Balancer (3:57)
- Add Target Group (6:03)
- Add Listeners (3:42)
- Update ECS to Use Load Balancer (3:31)
- Update Django ALLOWED_HOSTS (6:30)
- Deploy Load Balancer and Test (5:13)
- Summary of Create Load Balancer (0:42)
- Create Load Balancer Quiz
- Introduction to NGINX proxy (3:25)
- Create project for NGINX proxy (0:56)
- Configure NGINX proxy GitLab project (8:31)
- Setup AWS for NGINX proxy (7:28)
- Set repository variables (4:57)
- Create NGINX config files (11:19)
- Create NGINX Dockerfile (12:40)
- Setup GitLab CI/CD pipeline build job (8:05)
- Setup GitLab CI/CD pipeline push jobs (14:24)
- Test proxy pipeline (13:09)
- NGINX proxy quiz
- Introduction to preparing project for deployment (1:57)
- Create new project on GitLab (2:42)
- Configure GitLab project (0:58)
- Add uWSGI server to project (8:49)
- Update Dockerfile to run entrypoint (8:10)
- Configure static and media files in app settings (2:51)
- Setup environment variable configuration (8:16)
- Test proxy deployment locally (9:45)
- IMPORTANT UPDATE: Update Dockerfile to run entrypoint
- Introduction to setting up Terraform (1:47)
- Get AWS ready for Terraform (6:48)
- Configure Terraform (10:35)
- Setup Docker Compose for running Terraform (6:39)
- Initialize Terraform (6:21)
- Create bastion EC2 instance (22:07)
- Create Terraform workspace (2:42)
- Create resource prefix (10:33)
- Add tags (9:50)
- Introduction to setting up GitLab CI-CD (3:38)
- Create skeleton CI/CD config (21:20)
- Test workflow (10:53)
- Add automated code checks (5:43)
- Setup Terraform linting (15:42)
- Create CI user in AWS (13:09)
- Add build job (8:44)
- Add Terraform plan jobs (6:51)
- Add Terraform apply jobs (4:32)
- Add Terraform destroy jobs (3:10)
- Test full workflow (8:28)
- UPDATE: Must go back and change code from previous lesson
- GitLab CI-CD setup quiz
- Introduction to ECS (2:18)
- Add permissions to CI user (2:02)
- Create cluster (2:39)
- Create task role (9:49)
- Create log group (1:33)
- Create container definition template (9:28)
- Create task definition (16:12)
- Create and deploy service (10:03)
- Inspect ECS task logs (4:20)
- UPDATE: Create and deploy service
Requirements
This is an advanced course that requires previous experience with Django and Docker, and familiarity with AWS. It requires you to have a budget for AWS fees and an acceptable payment method. You must also have a computer that can run Docker desktop (sorry Windows Home users).
This is a high-stakes course, so we encourage you to check out our full Requirements video before enrolling. This video and many others are free to preview, so make sure you check them out to make sure this course is right for you.
This is a hands-on course, with a bit of theory and lots of opportunities to test your knowledge. The content is challenging but rewarding. Ready for it? Let’s dive in!
Featured Courses
Interested in learning more? Check out our other courses. There's something for every skill level.