PBL: Project Based Learning

Table of contents

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

  • Extend knowledge of various Web Stacks.

  • Deploy and configure a LEMP solution using a very popular Web Server – NGINX.

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

  • Deploy a full-scale three-tier Web Solution with WordPress CMS.

  • Configure and effectively use Linux storage subsystem with Logical Volume Manager (LVM).

PROJECT 7: DEVOPS TOOLING WEBSITE SOLUTION

  • Deploy a DevOps Tooling website from a GitHub repository.

  • Configure a MySQL database as an Identity Storage and Network File System (NFS) as a centralized file storage solution

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.

PROJECT 9: CONTINOUS INTEGRATION PIPELINE FOR TOOLING WEBSITE

  • 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

  • Master securing connections to a website by using SSL/TLS with NGNIX

  • Ensure website security by supporting HTTPS protocol.

PROJECT 11: ANSIBLE – AUTOMATE PROJECT 7 TO 10

  • Learn aspects of the Ansible Configuration Management tool.

  • Create an Ansible playbook to automate infrastructure creation.

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.

PROJECT 16: AUTOMATE INFRASTRUCTURE WITH IAC USING TERRAFORM PART 1

  • Setting up your infra like a Pro with Infrastructure as Code (Iac) tool – Terraform.

  • Learn how to create high-quality Terraform configuration files & study best practices.

PROJECT 17: AUTOMATE INFRASTRUCTURE WITH IAC USING TERRAFORM PART 2

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

PROJECT 18: AUTOMATE INFRASTRUCTURE WITH IAC USING TERRAFORM-PART 3

  • 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 19: AUTOMATE INFRASTRUCTURE WITH IAC USING TERRAFORM. PART 4 - TERRAFORM CLOUD

  • Get familiar with a Cloud Terraform Offering from Hashicorp

  • Learn how to manage Infrastructure as Code without provisioning any servers - straight from the cloud web console.

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

  • Manage production-grade containerized solutions with Kubernetes.

  • Learn how to build a Kubernetes cluster "From-Ground-Up"

PROJECT 22: DEPLOYING APPLICATIONS INTO KUBERNETES CLUSTER

  • Building Elastic Kubernetes Service (EKS) with Terraform

PROJECT 23: PERSISTING DATA IN KUBERNETES

  • Persisting Data in Kubernetes

PROJECT 24: BUILDING ELASTIC KUBERNETES SERVICE (EKS) WITH TERRAFORM

  • Deploying and Packaging applications with Helm

PROJECT 25: DEPLOYING AND PACKAGING APPLICATIONS INTO KUBERNETES

  • Deploying and Packaging applications into Kubernetes

Did you find this article valuable?

Support Charles Drani by becoming a sponsor. Any amount is appreciated!