In my efforts to learn Cloud & DevOps this year and transition into a Cloud/DevOps Engineer, I have steeled myself to follow a program to implement 25-30 projects with ever-increasing difficulty to gain experience in working with tools/services like AWS (S3, EC2, EBS, Docker, Kubernetes, Jenkins, Ansible, Terraform, and many others in helping to deploy, automate, continuously release, and monitor status/health/usage of live applications. That's already a long list of technologies I am not too familiar with and integrating them is currently a mystery to me, but hopefully, through a PBL approach, I can slowly introduce them as the projects get more complex.
What is PBL?
PBL is a learning/teaching method to develop knowledge and skills through engaging projects set around challenges and problems one may face in the real world. Each project should work towards the ultimate goal of expanding my DevOps knowledge base and gaining experience in industry tools.
PBL is organized around an open-ended driving question or challenge, creating a need-to-know essential content and skills, which in turn requires inquiry to learn and/or create something new.
Projects List
PROJECT 1: LAMP STACK IMPLEMENTATION
- Learn different Technology Stacks used in Web development and how to implement the LAMP.
PROJECT 2: LEMP STACK IMPLEMENTATION
PROJECT 3: MERN STACK IMPLEMENTATION
- Configure backend and frontend parts of the MERN stack
PROJECT 4: MEAN STACK IMPLEMENTATION
- Implement a MEAN Web Stack solution that stores data in a MongoDB database.
AUX PROJECT 1 (SHELL SCRIPTING)
- Automate user creation by onboarding a list of new Linux users from a CSV file using a bash script.
PROJECT 5: CLIENT/SERVER ARCHITECTURE USING A MYSQL RDMS
- Implement a Client-Server architecture using MySQL RMDS.
PROJECT 6: WEB SOLUTION WITH WORDPRESS
PROJECT 8: LOAD BALANCER SOLUTION WITH APACHE
Introduce a Load Balancer to ensure that the DevOps Tooling website will be scalable to serve more users by deploying additional Web Servers.
Implement Apache Load Balancer and local DNS Names resolution.
Automation of repeated routine tasks with Jenkins Continuous Integration
Automatically deploy the DevOps Tooling website to Web Servers straight from your GitHub repository upon every commit using Webhooks.
PROJECT 10: LOAD BALANCER SOLUTION WITH NGINX AND SSL/TLS
PROJECT 11: ANSIBLE – AUTOMATE PROJECT 7 TO 10
PROJECT 12: ANSIBLE REFACTORING, ASSIGNMENTS & IMPORTS
Explore more advanced Ansible concepts.
Make your configurations reusable with Imports
Create and assign Ansible Roles.
PROJECT 13: ANSIBLE DYNAMIC ASSIGNMENTS (INCLUDE) AND COMMUNITY ROLES
Diving deeper into more advanced Ansible concepts by learning Dynamic Assignments and Community Roles.
Explore options on whether to use predefined roles or develop roles for MySQL, Nginx, Apache and Jenkins.
PROJECT 14: EXPERIENCE CONTINUOUS INTEGRATION WITH JENKINS | ANSIBLE | ARTIFACTORY | SONARQUBE | PHP
Implement a full-scale CI/CD pipeline with a combination of various technologies.
Understand DevOps terminology and success metrics required to measure and constantly improve.
Explore new instruments such as artifact repository, quality analytics & assurance and pentest tools.
PROJECT 15: AWS CLOUD SOLUTION FOR 2 COMPANY WEBSITES USING A REVERSE PROXY TECHNOLOGY
- Learn how to manage AWS infrastructure – EC2 Virtual Machines, Networking, Target Groups, Autoscaling, Managed Databases, DNS and many more.
Manage networks in the Cloud as Code with Terraform.
Learn advanced Terraform syntax to create parametrized configuration files with dynamic values assignment and conditions.
Practice creating various AWS resources like EC2, S3, ALB and many others via Terraform configuration files.
Continue exploring Terraform capabilities, increase the reusability of configurations with Terraform Modules,
Learn the role Terraform plays in CI/CD.
Get an introduction to Packer – Machine Images Build Automation tools from HashiCorp.
PROJECT 20: MIGRATION TO THE СLOUD WITH CONTAINERIZATION. PART 1 - DOCKER & DOCKER COMPOSE
Introduce containerization with Docker.
Write Dockerfile, learn how to work with the DockerHub repository and practice container deployment with Docker Compose.
PROJECT 21: ORCHESTRATING CONTAINERS ACROSS MULTIPLE VIRTUAL SERVERS WITH KUBERNETES
PROJECT 22: DEPLOYING APPLICATIONS INTO KUBERNETES CLUSTER
- Building Elastic Kubernetes Service (EKS) with Terraform
PROJECT 23: PERSISTING DATA IN KUBERNETES
- Persisting Data in Kubernetes
- Deploying and Packaging applications with Helm
PROJECT 25: DEPLOYING AND PACKAGING APPLICATIONS INTO KUBERNETES
- Deploying and Packaging applications into Kubernetes