<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Narendra Kumar Pithani</title>
    <description>The latest articles on DEV Community by Narendra Kumar Pithani (@inaren).</description>
    <link>https://dev.to/inaren</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4178693%2F51e43d90-d154-40ff-a73d-fad866b324b0.jpg</url>
      <title>DEV Community: Narendra Kumar Pithani</title>
      <link>https://dev.to/inaren</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/inaren"/>
    <language>en</language>
    <item>
      <title>AWS DevOps Engineer Roadmap 2026: A Complete Beginner-to-Job-Ready Guide</title>
      <dc:creator>Narendra Kumar Pithani</dc:creator>
      <pubDate>Mon, 12 Oct 2026 08:51:29 +0000</pubDate>
      <link>https://dev.to/inaren/aws-devops-engineer-roadmap-2026-a-complete-beginner-to-job-ready-guide-11nb</link>
      <guid>https://dev.to/inaren/aws-devops-engineer-roadmap-2026-a-complete-beginner-to-job-ready-guide-11nb</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Are you interested in becoming an AWS DevOps Engineer but don't know where to start?&lt;/p&gt;

&lt;p&gt;Are you a fresher with little or no technical experience, confused about which technologies to learn, what order to follow, and how to gain practical experience?&lt;/p&gt;

&lt;p&gt;You're not alone.&lt;/p&gt;

&lt;p&gt;DevOps is one of the important practices in modern software development. It brings development and operations teams together to improve collaboration, automate repetitive tasks, accelerate software delivery, and maintain reliable applications.&lt;/p&gt;

&lt;p&gt;AWS (Amazon Web Services) provides cloud infrastructure and services that help organizations build, deploy, manage, and scale applications. When AWS is combined with DevOps practices and tools such as Linux, Git, Python, Terraform, Docker, Kubernetes, and CI/CD platforms, engineers can automate much of the software delivery lifecycle.&lt;/p&gt;

&lt;p&gt;However, learning all these technologies without a proper sequence can be overwhelming.&lt;/p&gt;

&lt;p&gt;That's why this guide provides a structured &lt;strong&gt;12–15 month AWS DevOps learning roadmap&lt;/strong&gt;, designed for beginners who want to progress from computer fundamentals to building and managing production-style cloud environments.&lt;/p&gt;

&lt;p&gt;Throughout this roadmap, you'll discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What an AWS DevOps Engineer does.&lt;/li&gt;
&lt;li&gt;Which technical fundamentals you should learn first.&lt;/li&gt;
&lt;li&gt;How to learn Linux, networking, Git, and scripting.&lt;/li&gt;
&lt;li&gt;How to work with AWS cloud services.&lt;/li&gt;
&lt;li&gt;How to automate infrastructure using Terraform.&lt;/li&gt;
&lt;li&gt;How to containerize applications using Docker.&lt;/li&gt;
&lt;li&gt;How to build CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;How to deploy applications using Kubernetes.&lt;/li&gt;
&lt;li&gt;How to implement monitoring, logging, and security.&lt;/li&gt;
&lt;li&gt;Which hands-on projects can help you demonstrate your skills.&lt;/li&gt;
&lt;li&gt;How to prepare for AWS DevOps interviews as a fresher.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who should read this guide?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This roadmap is suitable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Freshers starting their IT careers.&lt;/li&gt;
&lt;li&gt;Students and recent graduates.&lt;/li&gt;
&lt;li&gt;System administrators interested in cloud technologies.&lt;/li&gt;
&lt;li&gt;Developers interested in learning DevOps.&lt;/li&gt;
&lt;li&gt;Anyone who wants to understand AWS DevOps from the fundamentals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A quick note:&lt;/strong&gt; You don't need to learn every tool in the DevOps ecosystem to get your first job. Focus on understanding fundamentals, developing practical skills, and building projects that demonstrate what you know.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;What Is DevOps?&lt;/li&gt;
&lt;li&gt;What Does an AWS DevOps Engineer Do?&lt;/li&gt;
&lt;li&gt;Computer Fundamentals&lt;/li&gt;
&lt;li&gt;Linux Administration&lt;/li&gt;
&lt;li&gt;Networking Fundamentals&lt;/li&gt;
&lt;li&gt;Git and GitHub&lt;/li&gt;
&lt;li&gt;Python and Bash Scripting&lt;/li&gt;
&lt;li&gt;AWS Fundamentals&lt;/li&gt;
&lt;li&gt;Advanced AWS Services and Cloud Architecture&lt;/li&gt;
&lt;li&gt;Terraform and Infrastructure as Code&lt;/li&gt;
&lt;li&gt;Docker and Containerization&lt;/li&gt;
&lt;li&gt;CI/CD Pipelines and Automation&lt;/li&gt;
&lt;li&gt;Kubernetes and Container Orchestration&lt;/li&gt;
&lt;li&gt;AWS Container Services&lt;/li&gt;
&lt;li&gt;Monitoring, Logging, and Observability&lt;/li&gt;
&lt;li&gt;Security and DevSecOps&lt;/li&gt;
&lt;li&gt;Advanced DevOps, GitOps, and SRE&lt;/li&gt;
&lt;li&gt;Real-World AWS DevOps Project Portfolio&lt;/li&gt;
&lt;li&gt;Resume, GitHub, Interview Preparation, and Job Search&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. What Is DevOps?
&lt;/h2&gt;

&lt;p&gt;DevOps is a combination of two words: &lt;strong&gt;Development (Dev)&lt;/strong&gt; and &lt;strong&gt;Operations (Ops)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is a set of practices, principles, cultural philosophies, and tools that help development and IT operations teams work together throughout the software development lifecycle.&lt;/p&gt;

&lt;p&gt;The primary goal of DevOps is to deliver software faster, improve collaboration, automate repetitive tasks, and maintain application reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1 Understanding Traditional Software Development
&lt;/h3&gt;

&lt;p&gt;Before DevOps became widely adopted, many organizations followed a traditional approach in which development and operations teams worked separately.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Development team:&lt;/strong&gt; Responsible for writing application code, developing features, and fixing bugs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operations team:&lt;/strong&gt; Responsible for servers, infrastructure, deployments, application availability, and maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This separation often created communication gaps.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developers completed an application and handed it over to the operations team.&lt;/li&gt;
&lt;li&gt;The operations team attempted to deploy the application.&lt;/li&gt;
&lt;li&gt;The application failed because of differences between development and production environments.&lt;/li&gt;
&lt;li&gt;Both teams spent time identifying who was responsible for the issue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This type of problem is commonly described as the "It works on my machine" problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Why Do We Need DevOps?
&lt;/h3&gt;

&lt;p&gt;DevOps helps organizations overcome these challenges through collaboration and automation.&lt;/p&gt;

&lt;p&gt;Some important benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster software delivery.&lt;/li&gt;
&lt;li&gt;Improved collaboration between teams.&lt;/li&gt;
&lt;li&gt;Continuous Integration and Continuous Delivery (CI/CD).&lt;/li&gt;
&lt;li&gt;Reduced manual work through automation.&lt;/li&gt;
&lt;li&gt;Consistent deployment environments.&lt;/li&gt;
&lt;li&gt;Faster identification and resolution of failures.&lt;/li&gt;
&lt;li&gt;Better application reliability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1.3 How Does DevOps Work?
&lt;/h3&gt;

&lt;p&gt;DevOps encourages teams to follow a continuous lifecycle.&lt;/p&gt;

&lt;p&gt;The commonly represented DevOps lifecycle includes these stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Plan:&lt;/strong&gt; Define requirements, tasks, and development goals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code:&lt;/strong&gt; Write and maintain application source code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build:&lt;/strong&gt; Convert source code into deployable artifacts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test:&lt;/strong&gt; Validate application functionality and quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release:&lt;/strong&gt; Prepare an application version for deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy:&lt;/strong&gt; Deliver the application to the target environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operate:&lt;/strong&gt; Manage and maintain the running application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor:&lt;/strong&gt; Track application performance, availability, and errors.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These stages form a continuous feedback loop. Monitoring results and user feedback help teams plan future improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.4 Real-World Example
&lt;/h3&gt;

&lt;p&gt;Imagine an organization developing an online shopping application.&lt;/p&gt;

&lt;p&gt;Without DevOps, developers might manually send application files to the operations team, who then deploy them to servers.&lt;/p&gt;

&lt;p&gt;With DevOps practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developers push code to GitHub.&lt;/li&gt;
&lt;li&gt;A CI/CD pipeline automatically starts.&lt;/li&gt;
&lt;li&gt;The pipeline builds the application.&lt;/li&gt;
&lt;li&gt;Automated tests check the application.&lt;/li&gt;
&lt;li&gt;Docker packages the application into a container.&lt;/li&gt;
&lt;li&gt;The container image is stored in Amazon ECR.&lt;/li&gt;
&lt;li&gt;The application is deployed to Amazon EKS.&lt;/li&gt;
&lt;li&gt;Prometheus and Grafana help monitor application health and performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This workflow reduces manual effort and makes application delivery more consistent.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.5 DevOps Is More Than Just Tools
&lt;/h3&gt;

&lt;p&gt;One common misconception among beginners is that DevOps means simply learning Docker, Kubernetes, Jenkins, and AWS.&lt;/p&gt;

&lt;p&gt;However, DevOps is not just a collection of tools.&lt;/p&gt;

&lt;p&gt;It also involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collaboration and communication.&lt;/li&gt;
&lt;li&gt;Automation.&lt;/li&gt;
&lt;li&gt;Continuous improvement.&lt;/li&gt;
&lt;li&gt;Shared responsibility.&lt;/li&gt;
&lt;li&gt;Infrastructure as Code.&lt;/li&gt;
&lt;li&gt;Monitoring and feedback.&lt;/li&gt;
&lt;li&gt;Security throughout the delivery lifecycle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; DevOps combines people, processes, and technology to help organizations deliver reliable software efficiently and continuously.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What Does an AWS DevOps Engineer Do?
&lt;/h2&gt;

&lt;p&gt;An AWS DevOps Engineer is responsible for automating, managing, deploying, and maintaining applications and infrastructure using Amazon Web Services (AWS) and DevOps practices.&lt;/p&gt;

&lt;p&gt;The role combines cloud computing, infrastructure management, automation, software deployment, monitoring, and security.&lt;/p&gt;

&lt;p&gt;An AWS DevOps Engineer helps development teams deliver applications reliably while ensuring that the underlying infrastructure is scalable, secure, and available.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Key Responsibilities of an AWS DevOps Engineer
&lt;/h3&gt;

&lt;p&gt;Let's understand the major responsibilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Cloud Infrastructure Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS DevOps Engineers create and manage cloud infrastructure using services such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon EC2 – Virtual servers.&lt;/li&gt;
&lt;li&gt;Amazon S3 – Object storage.&lt;/li&gt;
&lt;li&gt;Amazon VPC – Network isolation and configuration.&lt;/li&gt;
&lt;li&gt;AWS IAM – Identity and access management.&lt;/li&gt;
&lt;li&gt;Amazon RDS – Managed relational databases.&lt;/li&gt;
&lt;li&gt;Elastic Load Balancing – Distributes incoming application traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Infrastructure as Code (IaC)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of creating infrastructure manually through the AWS Management Console, engineers use Infrastructure as Code tools to define and provision resources.&lt;/p&gt;

&lt;p&gt;Common tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform.&lt;/li&gt;
&lt;li&gt;AWS CloudFormation.&lt;/li&gt;
&lt;li&gt;AWS CDK.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, Terraform can be used to create an AWS VPC, subnets, security groups, and EC2 instances through configuration files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. CI/CD Pipeline Automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS DevOps Engineers build automated pipelines to test, build, and deploy applications.&lt;/p&gt;

&lt;p&gt;Common tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jenkins.&lt;/li&gt;
&lt;li&gt;GitHub Actions.&lt;/li&gt;
&lt;li&gt;GitLab CI/CD.&lt;/li&gt;
&lt;li&gt;AWS CodePipeline.&lt;/li&gt;
&lt;li&gt;AWS CodeBuild.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Containerization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Applications can be packaged with their dependencies using containers.&lt;/p&gt;

&lt;p&gt;Common technologies include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker.&lt;/li&gt;
&lt;li&gt;Amazon Elastic Container Registry (ECR).&lt;/li&gt;
&lt;li&gt;Amazon Elastic Container Service (ECS).&lt;/li&gt;
&lt;li&gt;Amazon Elastic Kubernetes Service (EKS).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Configuration Management and Automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Engineers automate server configuration, software installation, and repetitive administrative tasks.&lt;/p&gt;

&lt;p&gt;Common tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ansible.&lt;/li&gt;
&lt;li&gt;Python.&lt;/li&gt;
&lt;li&gt;Bash scripting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Monitoring and Logging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Monitoring helps engineers understand application and infrastructure health.&lt;/p&gt;

&lt;p&gt;Common tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon CloudWatch.&lt;/li&gt;
&lt;li&gt;Prometheus.&lt;/li&gt;
&lt;li&gt;Grafana.&lt;/li&gt;
&lt;li&gt;OpenSearch.&lt;/li&gt;
&lt;li&gt;Elasticsearch and Kibana.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. Security and Access Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Security is an important responsibility throughout the DevOps lifecycle.&lt;/p&gt;

&lt;p&gt;Engineers work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IAM roles and policies.&lt;/li&gt;
&lt;li&gt;Least-privilege access.&lt;/li&gt;
&lt;li&gt;Secrets Manager.&lt;/li&gt;
&lt;li&gt;AWS KMS.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;Vulnerability scanning tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2.2 A Typical Day in the Life of an AWS DevOps Engineer
&lt;/h3&gt;

&lt;p&gt;Here is an example of what an AWS DevOps Engineer might do during a normal working day:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check application health and infrastructure monitoring dashboards.&lt;/li&gt;
&lt;li&gt;Review code changes and deployment requests.&lt;/li&gt;
&lt;li&gt;Investigate build or deployment failures.&lt;/li&gt;
&lt;li&gt;Update infrastructure using Terraform.&lt;/li&gt;
&lt;li&gt;Maintain CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Troubleshoot Docker containers or Kubernetes workloads.&lt;/li&gt;
&lt;li&gt;Review logs and resolve application issues.&lt;/li&gt;
&lt;li&gt;Coordinate with developers and other engineering teams.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Responsibilities vary depending on the organization, team size, infrastructure, and seniority of the engineer.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Skills Required to Become an AWS DevOps Engineer
&lt;/h3&gt;

&lt;p&gt;A beginner should gradually develop skills in the following areas:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill area&lt;/th&gt;
&lt;th&gt;Technologies&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operating systems&lt;/td&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Networking&lt;/td&gt;
&lt;td&gt;TCP/IP, DNS, HTTP, HTTPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version control&lt;/td&gt;
&lt;td&gt;Git, GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programming and scripting&lt;/td&gt;
&lt;td&gt;Python, Bash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud computing&lt;/td&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure as Code&lt;/td&gt;
&lt;td&gt;Terraform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Containers&lt;/td&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Container orchestration&lt;/td&gt;
&lt;td&gt;Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI/CD&lt;/td&gt;
&lt;td&gt;Jenkins, GitHub Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring&lt;/td&gt;
&lt;td&gt;CloudWatch, Prometheus, Grafana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;IAM, KMS, Secrets Manager&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; An AWS DevOps Engineer is not expected to know every tool from day one. The goal is to understand the fundamentals first and gradually develop practical skills through hands-on experience and real-world projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Phase 1: Computer Fundamentals (Weeks 1–2)
&lt;/h2&gt;

&lt;p&gt;Before learning cloud computing and DevOps tools, it is important to understand basic computer concepts.&lt;/p&gt;

&lt;p&gt;You do not need to become a computer hardware expert. However, understanding how computers work will make it easier to learn operating systems, networking, cloud infrastructure, and application deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Understanding Computer Hardware
&lt;/h3&gt;

&lt;p&gt;A computer consists of several physical components that work together to execute instructions and process information.&lt;/p&gt;

&lt;p&gt;The most important components are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. CPU (Central Processing Unit)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The CPU is commonly called the brain of a computer.&lt;/p&gt;

&lt;p&gt;It executes instructions, performs calculations, and processes data.&lt;/p&gt;

&lt;p&gt;In a cloud environment, an AWS EC2 instance uses virtualized computing resources, including CPU capacity, to run applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. RAM (Random Access Memory)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RAM is temporary memory used by a computer to store data and instructions that are currently being processed.&lt;/p&gt;

&lt;p&gt;For example, when you run a web server, the operating system and application use RAM while executing.&lt;/p&gt;

&lt;p&gt;RAM is volatile, which means its contents are lost when power is removed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Storage is used to save data permanently, even after a computer is switched off.&lt;/p&gt;

&lt;p&gt;Common storage technologies include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HDD (Hard Disk Drive).&lt;/li&gt;
&lt;li&gt;SSD (Solid State Drive).&lt;/li&gt;
&lt;li&gt;NVMe SSD.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In AWS, Amazon EBS provides block storage volumes that can be attached to EC2 instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Network Interface Card (NIC)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Network Interface Card allows a computer to communicate with other devices over a network.&lt;/p&gt;

&lt;p&gt;It can provide wired or wireless network connectivity.&lt;/p&gt;

&lt;p&gt;In AWS, an EC2 instance communicates with other resources through virtual network interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Understanding Software
&lt;/h3&gt;

&lt;p&gt;Software is a collection of programs and instructions that tell a computer what to do.&lt;/p&gt;

&lt;p&gt;Software can be broadly classified into two categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. System Software&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System software manages computer hardware and provides the environment required to run applications.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows.&lt;/li&gt;
&lt;li&gt;Linux.&lt;/li&gt;
&lt;li&gt;macOS.&lt;/li&gt;
&lt;li&gt;Device drivers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Application Software&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Application software helps users perform specific tasks.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Chrome.&lt;/li&gt;
&lt;li&gt;Visual Studio Code.&lt;/li&gt;
&lt;li&gt;Microsoft Word.&lt;/li&gt;
&lt;li&gt;Web applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.3 What Is an Operating System?
&lt;/h3&gt;

&lt;p&gt;An Operating System (OS) is system software that manages computer hardware and software resources.&lt;/p&gt;

&lt;p&gt;It acts as an interface between users, applications, and computer hardware.&lt;/p&gt;

&lt;p&gt;Major responsibilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Process management.&lt;/li&gt;
&lt;li&gt;Memory management.&lt;/li&gt;
&lt;li&gt;File system management.&lt;/li&gt;
&lt;li&gt;Device management.&lt;/li&gt;
&lt;li&gt;User management.&lt;/li&gt;
&lt;li&gt;Security and access control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Popular operating systems include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows.&lt;/li&gt;
&lt;li&gt;Linux.&lt;/li&gt;
&lt;li&gt;macOS.&lt;/li&gt;
&lt;li&gt;Unix.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why is Linux important for DevOps?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Linux is widely used in cloud infrastructure, servers, containers, and automation environments.&lt;/p&gt;

&lt;p&gt;AWS EC2 instances frequently run Linux distributions such as Amazon Linux, Ubuntu, and Red Hat Enterprise Linux.&lt;/p&gt;

&lt;p&gt;Therefore, Linux administration is one of the most important foundational skills for an AWS DevOps Engineer.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 Understanding Files, Directories, and File Systems
&lt;/h3&gt;

&lt;p&gt;A file is a collection of information stored on a computer.&lt;/p&gt;

&lt;p&gt;A directory (also called a folder) is used to organize files and other directories.&lt;/p&gt;

&lt;p&gt;For example, a Linux system contains directories such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/home&lt;/code&gt; – User home directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/etc&lt;/code&gt; – System and application configuration files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/var&lt;/code&gt; – Variable data such as logs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/tmp&lt;/code&gt; – Temporary files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/opt&lt;/code&gt; – Optional application software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding the Linux file system will become important when working with servers and troubleshooting applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.5 Understanding Processes and Services
&lt;/h3&gt;

&lt;p&gt;A process is a program that is currently executing.&lt;/p&gt;

&lt;p&gt;For example, when you start a Python application, the operating system creates a process to execute it.&lt;/p&gt;

&lt;p&gt;A service is a program designed to perform a specific function, often running in the background.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web servers.&lt;/li&gt;
&lt;li&gt;Database servers.&lt;/li&gt;
&lt;li&gt;SSH services.&lt;/li&gt;
&lt;li&gt;Monitoring agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In DevOps, engineers regularly inspect processes, manage services, and troubleshoot applications that fail to start or consume excessive resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.6 Understanding Client-Server Architecture
&lt;/h3&gt;

&lt;p&gt;Client-server architecture is a computing model in which a client requests a service or resource from a server.&lt;/p&gt;

&lt;p&gt;The server receives the request, processes it, and sends a response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Opening a website&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user opens a browser.&lt;/li&gt;
&lt;li&gt;The browser sends a request to a web server.&lt;/li&gt;
&lt;li&gt;The web server processes the request.&lt;/li&gt;
&lt;li&gt;The server sends the requested web page.&lt;/li&gt;
&lt;li&gt;The browser displays the page to the user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This architecture is fundamental to understanding web applications, cloud infrastructure, load balancers, and application deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.7 Understanding Virtualization
&lt;/h3&gt;

&lt;p&gt;Virtualization is a technology that allows multiple virtual computing environments to run on a single physical machine.&lt;/p&gt;

&lt;p&gt;A Hypervisor is software that creates and manages virtual machines.&lt;/p&gt;

&lt;p&gt;Each virtual machine can have its own operating system and allocated computing resources.&lt;/p&gt;

&lt;p&gt;Common examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VMware.&lt;/li&gt;
&lt;li&gt;Oracle VirtualBox.&lt;/li&gt;
&lt;li&gt;Microsoft Hyper-V.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why is virtualization important for AWS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud providers use virtualization and other resource-isolation technologies to provide computing resources to customers.&lt;/p&gt;

&lt;p&gt;For example, Amazon EC2 allows users to create virtual server instances without purchasing and maintaining physical servers themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.8 Introduction to Cloud Computing
&lt;/h3&gt;

&lt;p&gt;Cloud computing is the delivery of computing resources over a network, typically the internet.&lt;/p&gt;

&lt;p&gt;Instead of purchasing physical servers, organizations can obtain computing resources from cloud providers.&lt;/p&gt;

&lt;p&gt;Popular cloud providers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Web Services (AWS).&lt;/li&gt;
&lt;li&gt;Microsoft Azure.&lt;/li&gt;
&lt;li&gt;Google Cloud Platform (GCP).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Common cloud service models include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure as a Service (IaaS):&lt;/strong&gt; Provides computing infrastructure such as virtual machines, storage, and networking.&lt;/p&gt;

&lt;p&gt;Example: Amazon EC2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform as a Service (PaaS):&lt;/strong&gt; Provides a managed environment for developing and deploying applications without managing all the underlying infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software as a Service (SaaS):&lt;/strong&gt; Provides ready-to-use software applications over the internet.&lt;/p&gt;

&lt;p&gt;Example: Google Workspace.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.9 Hands-On Practice
&lt;/h3&gt;

&lt;p&gt;Beginners should perform the following activities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify CPU, RAM, and storage details on their computer.&lt;/li&gt;
&lt;li&gt;Understand the difference between system software and application software.&lt;/li&gt;
&lt;li&gt;Explore the Windows or Linux file system.&lt;/li&gt;
&lt;li&gt;Open Task Manager on Windows and identify running processes.&lt;/li&gt;
&lt;li&gt;Understand how a browser communicates with a web server.&lt;/li&gt;
&lt;li&gt;Install Oracle VirtualBox and explore how virtual machines work (optional).&lt;/li&gt;
&lt;li&gt;Explore the AWS website and understand its major service categories.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3.10 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/computer-organization-and-architecture/" rel="noopener noreferrer"&gt;Computer Fundamentals – GeeksforGeeks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.kernel.org/" rel="noopener noreferrer"&gt;Linux Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/what-is-cloud-computing/" rel="noopener noreferrer"&gt;AWS Cloud Computing Concepts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.11 Phase 1 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to the next phase, make sure you can explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are CPU, RAM, and storage?&lt;/li&gt;
&lt;li&gt;What is the difference between hardware and software?&lt;/li&gt;
&lt;li&gt;What is an operating system?&lt;/li&gt;
&lt;li&gt;What is the difference between a process and a service?&lt;/li&gt;
&lt;li&gt;What is client-server architecture?&lt;/li&gt;
&lt;li&gt;What is virtualization?&lt;/li&gt;
&lt;li&gt;What is cloud computing?&lt;/li&gt;
&lt;li&gt;What are IaaS, PaaS, and SaaS?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By the end of this phase, you should understand basic computer architecture, operating system concepts, virtualization, and cloud computing fundamentals.&lt;/p&gt;

&lt;p&gt;These concepts will prepare you for the next phase: Linux Administration.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Phase 2: Linux Administration (Weeks 3–6)
&lt;/h2&gt;

&lt;p&gt;Linux is one of the most important operating systems in the DevOps ecosystem.&lt;/p&gt;

&lt;p&gt;Many organizations use Linux-based servers to host applications, databases, containers, and cloud infrastructure.&lt;/p&gt;

&lt;p&gt;An AWS DevOps Engineer should understand how to work with Linux servers, manage users, configure permissions, troubleshoot processes, analyze logs, and automate administrative tasks.&lt;/p&gt;

&lt;p&gt;In this phase, beginners will learn Linux administration from the fundamentals to practical server management.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 What Is Linux?
&lt;/h3&gt;

&lt;p&gt;Linux is an open-source, Unix-like operating system kernel.&lt;/p&gt;

&lt;p&gt;Linux distributions combine the Linux kernel with system utilities, package managers, libraries, and other software to provide a complete operating system.&lt;/p&gt;

&lt;p&gt;Popular Linux distributions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu.&lt;/li&gt;
&lt;li&gt;Amazon Linux.&lt;/li&gt;
&lt;li&gt;Red Hat Enterprise Linux (RHEL).&lt;/li&gt;
&lt;li&gt;Debian.&lt;/li&gt;
&lt;li&gt;Rocky Linux.&lt;/li&gt;
&lt;li&gt;AlmaLinux.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Which Linux distribution should beginners learn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ubuntu is a good starting point because it is beginner-friendly and has extensive documentation.&lt;/p&gt;

&lt;p&gt;You should also become familiar with Amazon Linux because it is commonly used with AWS EC2 instances.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Understanding Linux Architecture
&lt;/h3&gt;

&lt;p&gt;A simplified Linux architecture consists of the following layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hardware:&lt;/strong&gt; CPU, RAM, storage, and network devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kernel:&lt;/strong&gt; Manages hardware resources, processes, memory, and device communication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Libraries:&lt;/strong&gt; Provide interfaces that applications can use to interact with the kernel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shell:&lt;/strong&gt; Provides a command-line interface for executing commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Applications:&lt;/strong&gt; Programs and services running on the operating system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Understanding these components helps engineers troubleshoot Linux systems effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 Linux File System Hierarchy
&lt;/h3&gt;

&lt;p&gt;Linux organizes files and directories through a hierarchical file system.&lt;/p&gt;

&lt;p&gt;Important directories include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Directory&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Root of the file system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User home directories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Root user's home directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/etc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;System configuration files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Variable data, including logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;System and application logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Temporary files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/opt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Optional application software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/usr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User-space programs and shared resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Essential user commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/proc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Virtual file system containing process and kernel information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/boot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Files required for booting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;An AWS DevOps Engineer frequently works with configuration files, application logs, and system directories.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.4 Essential Linux Commands
&lt;/h3&gt;

&lt;p&gt;Beginners should become comfortable with command-line operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigation commands&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; – Display the current working directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; – List files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt; – Change the current directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;File and directory management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt; – Create a directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;touch&lt;/code&gt; – Create an empty file or update its timestamp.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt; – Display file contents.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cp&lt;/code&gt; – Copy files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mv&lt;/code&gt; – Move or rename files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm&lt;/code&gt; – Remove files or directories.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;File viewing commands&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;head&lt;/code&gt; – Display the beginning of a file.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tail&lt;/code&gt; – Display the end of a file.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;less&lt;/code&gt; – View large files page by page.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grep&lt;/code&gt; – Search for matching text.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;find&lt;/code&gt; – Search for files and directories.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;System information commands&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;uname&lt;/code&gt; – Display system information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hostname&lt;/code&gt; – Display the system hostname.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;whoami&lt;/code&gt; – Display the current username.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;df -h&lt;/code&gt; – Display file system disk usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;free -h&lt;/code&gt; – Display memory usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uptime&lt;/code&gt; – Display how long the system has been running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.5 Linux File Permissions
&lt;/h3&gt;

&lt;p&gt;Linux uses permissions to control who can read, modify, and execute files.&lt;/p&gt;

&lt;p&gt;There are three basic permission categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Owner:&lt;/strong&gt; The user who owns the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Group:&lt;/strong&gt; Users belonging to the file's group.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Others:&lt;/strong&gt; All other users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The three main permissions are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Permission&lt;/th&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;th&gt;Numeric value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;r&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write&lt;/td&gt;
&lt;td&gt;w&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execute&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod 755 script.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This grants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner: Read, write, and execute.&lt;/li&gt;
&lt;li&gt;Group: Read and execute.&lt;/li&gt;
&lt;li&gt;Others: Read and execute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other important commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;chmod&lt;/code&gt; – Change file permissions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chown&lt;/code&gt; – Change file ownership.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chgrp&lt;/code&gt; – Change group ownership.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;umask&lt;/code&gt; – Set default permission restrictions for newly created files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding permissions is important when troubleshooting application deployment failures and access-related errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.6 Linux User and Group Management
&lt;/h3&gt;

&lt;p&gt;Linux supports multiple users and groups.&lt;/p&gt;

&lt;p&gt;User and group management is important for controlling access to servers and applications.&lt;/p&gt;

&lt;p&gt;Important commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useradd&lt;/code&gt; – Create a user.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;passwd&lt;/code&gt; – Set or change a user's password.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usermod&lt;/code&gt; – Modify user account properties.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;userdel&lt;/code&gt; – Delete a user.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;groupadd&lt;/code&gt; – Create a group.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;groupdel&lt;/code&gt; – Delete a group.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;id&lt;/code&gt; – Display user and group IDs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;groups&lt;/code&gt; – Display group memberships.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo&lt;/code&gt; – Execute permitted commands with elevated privileges.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;su&lt;/code&gt; – Switch to another user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important Linux account files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/etc/passwd&lt;/code&gt; – Stores user account information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/etc/shadow&lt;/code&gt; – Stores password hashes and password-related information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/etc/group&lt;/code&gt; – Stores group information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Never share password hashes or sensitive account information.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.7 Process Management
&lt;/h3&gt;

&lt;p&gt;A process is an instance of a running program.&lt;/p&gt;

&lt;p&gt;DevOps Engineers need to identify running processes, monitor resource consumption, and troubleshoot processes that behave unexpectedly.&lt;/p&gt;

&lt;p&gt;Important commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ps&lt;/code&gt; – Display process information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;top&lt;/code&gt; – Monitor running processes and resource usage.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;htop&lt;/code&gt; – Interactive process monitoring tool, when installed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pgrep&lt;/code&gt; – Find processes by name or other attributes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill&lt;/code&gt; – Send a signal to a process.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill -9&lt;/code&gt; – Forcefully terminate a process using SIGKILL.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nice&lt;/code&gt; – Start a process with a specified scheduling priority.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;renice&lt;/code&gt; – Change the priority of an existing process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use forceful termination carefully because it does not allow a process to perform its normal cleanup.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.8 Linux Services and Systemd
&lt;/h3&gt;

&lt;p&gt;A service is a program that provides functionality in the background.&lt;/p&gt;

&lt;p&gt;Examples include SSH servers, web servers, database servers, and monitoring agents.&lt;/p&gt;

&lt;p&gt;Many modern Linux distributions use &lt;code&gt;systemd&lt;/code&gt; to manage system services.&lt;/p&gt;

&lt;p&gt;Important commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;systemctl status service_name&lt;/code&gt; – Check service status.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemctl start service_name&lt;/code&gt; – Start a service.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemctl stop service_name&lt;/code&gt; – Stop a service.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemctl restart service_name&lt;/code&gt; – Restart a service.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemctl enable service_name&lt;/code&gt; – Configure a service to start during boot.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemctl disable service_name&lt;/code&gt; – Prevent automatic startup during boot.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl status ssh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The service name can differ between Linux distributions. On some systems, the SSH service is named &lt;code&gt;sshd&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.9 Package Management
&lt;/h3&gt;

&lt;p&gt;Package managers help install, update, and remove software.&lt;/p&gt;

&lt;p&gt;Different Linux distributions use different package management systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ubuntu and Debian&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Common commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt upgrade&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt install package_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt remove package_name&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amazon Linux and RHEL-based distributions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Depending on the distribution and version, common commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo dnf check-update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo dnf install package_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo dnf update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo dnf remove package_name&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beginners should understand the differences between package managers and avoid blindly executing commands intended for another distribution.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.10 Disk and Storage Management
&lt;/h3&gt;

&lt;p&gt;Linux administrators should understand how disks and file systems are managed.&lt;/p&gt;

&lt;p&gt;Important commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;lsblk&lt;/code&gt; – Display block devices.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;blkid&lt;/code&gt; – Display block device attributes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;df -h&lt;/code&gt; – Check file system space.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;du -sh directory_name&lt;/code&gt; – Check directory size.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mount&lt;/code&gt; – Attach a file system to a directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;umount&lt;/code&gt; – Detach a mounted file system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In AWS, these concepts are useful when working with Amazon EBS volumes attached to EC2 instances.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.11 Linux Networking Commands
&lt;/h3&gt;

&lt;p&gt;Linux servers communicate with other systems through networks.&lt;/p&gt;

&lt;p&gt;Important commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ip addr&lt;/code&gt; – Display network interface addresses.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ip route&lt;/code&gt; – Display routing information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ping&lt;/code&gt; – Test network reachability.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ss -tulnp&lt;/code&gt; – Inspect listening network sockets.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;curl&lt;/code&gt; – Transfer data using supported URL protocols.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wget&lt;/code&gt; – Retrieve files from network locations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;traceroute&lt;/code&gt; – Inspect network paths, when installed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dig&lt;/code&gt; – Perform DNS queries, when installed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hostname -I&lt;/code&gt; – Display assigned IP addresses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These commands are useful when troubleshooting DNS resolution, connectivity, and application ports.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.12 SSH and Remote Server Management
&lt;/h3&gt;

&lt;p&gt;SSH (Secure Shell) is a protocol used to securely access remote systems.&lt;/p&gt;

&lt;p&gt;DevOps Engineers frequently use SSH to connect to Linux servers.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh username@server_ip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;AWS EC2 instances can be accessed through SSH when the instance, network configuration, security group, credentials, and user account are correctly configured.&lt;/p&gt;

&lt;p&gt;SSH authentication can use key pairs instead of passwords.&lt;/p&gt;

&lt;p&gt;Protect private keys carefully and never upload them to public repositories.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.13 Linux Log Management and Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Logs provide information about system activity, application behavior, and errors.&lt;/p&gt;

&lt;p&gt;Common locations and tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/var/log&lt;/code&gt; – Common directory for system and application logs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;journalctl&lt;/code&gt; – Query logs collected by systemd's journal.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dmesg&lt;/code&gt; – Display kernel ring buffer messages.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tail -f&lt;/code&gt; – Follow a log file as new entries are written.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grep&lt;/code&gt; – Search log entries for specific error messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo journalctl -u nginx -n 50&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This displays recent journal entries for the Nginx service, if the service is managed by systemd and its logs are available there.&lt;/p&gt;

&lt;p&gt;Log analysis is one of the most important troubleshooting skills in production environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.14 Bash Shell Scripting
&lt;/h3&gt;

&lt;p&gt;Bash is a command-line shell commonly used for Linux administration and automation.&lt;/p&gt;

&lt;p&gt;Shell scripts allow engineers to automate repetitive tasks.&lt;/p&gt;

&lt;p&gt;Topics to learn include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables.&lt;/li&gt;
&lt;li&gt;User input.&lt;/li&gt;
&lt;li&gt;Conditional statements.&lt;/li&gt;
&lt;li&gt;Loops.&lt;/li&gt;
&lt;li&gt;Functions.&lt;/li&gt;
&lt;li&gt;Command-line arguments.&lt;/li&gt;
&lt;li&gt;Exit codes.&lt;/li&gt;
&lt;li&gt;Error handling.&lt;/li&gt;
&lt;li&gt;Scheduling tasks with cron.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Checking disk usage"&lt;/span&gt;

&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Disk usage check completed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the script as &lt;code&gt;disk_check.sh&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Make it executable:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod +x disk_check.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Execute it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./disk_check.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Bash scripting is useful for automating server administration, log analysis, backups, and deployment tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.15 Hands-On Linux Projects
&lt;/h3&gt;

&lt;p&gt;Practice the following activities:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Linux User Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create three Linux users.&lt;/li&gt;
&lt;li&gt;Create a group.&lt;/li&gt;
&lt;li&gt;Add users to the group.&lt;/li&gt;
&lt;li&gt;Configure file ownership and permissions.&lt;/li&gt;
&lt;li&gt;Verify access restrictions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Linux Service Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Nginx.&lt;/li&gt;
&lt;li&gt;Start and enable the service.&lt;/li&gt;
&lt;li&gt;Check service status.&lt;/li&gt;
&lt;li&gt;Stop and restart the service.&lt;/li&gt;
&lt;li&gt;Inspect service logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Linux System Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check CPU and memory usage.&lt;/li&gt;
&lt;li&gt;Inspect running processes.&lt;/li&gt;
&lt;li&gt;Identify disk usage.&lt;/li&gt;
&lt;li&gt;Find large files.&lt;/li&gt;
&lt;li&gt;Investigate a sample service failure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Bash Automation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write a script to check disk usage.&lt;/li&gt;
&lt;li&gt;Write a script to check memory usage.&lt;/li&gt;
&lt;li&gt;Create a basic backup script.&lt;/li&gt;
&lt;li&gt;Schedule a script using cron.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.16 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linuxjourney.com/" rel="noopener noreferrer"&gt;Linux Journey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ubuntu.com/server/docs" rel="noopener noreferrer"&gt;Ubuntu Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.redhat.com/" rel="noopener noreferrer"&gt;Red Hat Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tldp.org/" rel="noopener noreferrer"&gt;The Linux Documentation Project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.17 Phase 2 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to the next phase, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate the Linux file system.&lt;/li&gt;
&lt;li&gt;Create, copy, move, and delete files.&lt;/li&gt;
&lt;li&gt;Understand Linux permissions and ownership.&lt;/li&gt;
&lt;li&gt;Create and manage users and groups.&lt;/li&gt;
&lt;li&gt;Monitor and manage processes.&lt;/li&gt;
&lt;li&gt;Start, stop, and troubleshoot services.&lt;/li&gt;
&lt;li&gt;Install and update packages.&lt;/li&gt;
&lt;li&gt;Inspect disk and memory usage.&lt;/li&gt;
&lt;li&gt;Use basic networking commands.&lt;/li&gt;
&lt;li&gt;Connect to remote servers using SSH.&lt;/li&gt;
&lt;li&gt;Read and analyze Linux logs.&lt;/li&gt;
&lt;li&gt;Write basic Bash scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By the end of this phase, you should be comfortable administering a Linux server, performing common troubleshooting tasks, managing users and services, and automating basic operations using Bash.&lt;/p&gt;

&lt;p&gt;These skills will prepare you for the next phase: Networking Fundamentals.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Phase 3: Networking Fundamentals (Weeks 7–8)
&lt;/h2&gt;

&lt;p&gt;Networking is one of the core foundations of Cloud Computing and DevOps.&lt;/p&gt;

&lt;p&gt;Applications, servers, databases, containers, and cloud services communicate with each other through networks.&lt;/p&gt;

&lt;p&gt;An AWS DevOps Engineer must understand how data travels between systems, how network communication works, and how to troubleshoot connectivity problems.&lt;/p&gt;

&lt;p&gt;For example, imagine an application running on an AWS EC2 instance. Users access the application through a web browser. To make this communication possible, engineers must understand IP addresses, DNS, ports, protocols, routing, firewalls, and load balancing.&lt;/p&gt;

&lt;p&gt;Let's explore the important networking concepts step by step.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 What Is Computer Networking?
&lt;/h3&gt;

&lt;p&gt;A computer network is a collection of connected devices that communicate and exchange information.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home Wi-Fi networks.&lt;/li&gt;
&lt;li&gt;Office networks.&lt;/li&gt;
&lt;li&gt;Data center networks.&lt;/li&gt;
&lt;li&gt;Cloud networks.&lt;/li&gt;
&lt;li&gt;The internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Networking allows computers, servers, and applications to share resources and communicate with each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Understanding IP Addresses
&lt;/h3&gt;

&lt;p&gt;An IP (Internet Protocol) address is a numerical address used to identify a device or network interface in an IP network.&lt;/p&gt;

&lt;p&gt;There are two major IP versions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IPv4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;IPv4 uses a 32-bit address.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;IPv4 addresses are commonly written as four decimal numbers separated by dots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IPv6&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;IPv6 uses a 128-bit address.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;2001:db8::1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;IPv6 was developed to provide a much larger address space than IPv4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public IP Address&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A public IP address is globally routable and can be used to communicate over the public internet, subject to network and security configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private IP Address&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A private IP address is used within private networks and is not directly routable over the public internet.&lt;/p&gt;

&lt;p&gt;Common private IPv4 ranges include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;10.0.0.0/8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;172.16.0.0/12&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;192.168.0.0/16&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In AWS, EC2 instances can have private IP addresses within a VPC. Public connectivity depends on the instance's network configuration and associated routing.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 Understanding Subnetting and CIDR
&lt;/h3&gt;

&lt;p&gt;A subnet is a logical subdivision of an IP network.&lt;/p&gt;

&lt;p&gt;Subnetting helps organizations divide networks into smaller address ranges.&lt;/p&gt;

&lt;p&gt;CIDR stands for Classless Inter-Domain Routing.&lt;/p&gt;

&lt;p&gt;CIDR notation represents an IP address range using a prefix length.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;192.168.1.0/24&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;/24&lt;/code&gt; indicates that the first 24 bits represent the network portion of the address.&lt;/p&gt;

&lt;p&gt;Another example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;10.0.0.0/16&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A smaller prefix length generally represents a larger address range, while a larger prefix length represents a smaller address range.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is CIDR important in AWS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When creating an AWS VPC, engineers specify a CIDR block.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;10.0.0.0/16&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;They can then create smaller subnets within that VPC, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;10.0.1.0/24&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10.0.2.0/24&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10.0.3.0/24&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These subnets can be used to organize application servers, databases, and other resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.4 Understanding MAC Addresses
&lt;/h3&gt;

&lt;p&gt;A MAC (Media Access Control) address is a link-layer address associated with a network interface.&lt;/p&gt;

&lt;p&gt;It is commonly represented as six groups of hexadecimal digits.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;00:1A:2B:3C:4D:5E&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;MAC addresses are primarily used for communication within a local network at the data link layer.&lt;/p&gt;

&lt;p&gt;An IP address identifies an endpoint at the network layer, while a MAC address is used for local link-layer delivery.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.5 Understanding DNS
&lt;/h3&gt;

&lt;p&gt;DNS stands for Domain Name System.&lt;/p&gt;

&lt;p&gt;It translates human-readable domain names into IP addresses or other DNS records.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;When a user enters:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;www.example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The DNS resolution process helps the client discover the IP address associated with that domain name.&lt;/p&gt;

&lt;p&gt;Important DNS record types include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A:&lt;/strong&gt; Maps a hostname to an IPv4 address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAAA:&lt;/strong&gt; Maps a hostname to an IPv6 address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CNAME:&lt;/strong&gt; Creates an alias for another domain name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MX:&lt;/strong&gt; Identifies mail servers for a domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TXT:&lt;/strong&gt; Stores text information, commonly used for domain verification and email authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS:&lt;/strong&gt; Identifies authoritative name servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why is DNS important in AWS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Route 53 is an AWS service that provides DNS management, domain registration, and health-check-based routing capabilities.&lt;/p&gt;

&lt;p&gt;DevOps Engineers use DNS to connect domain names to applications and cloud infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.6 Understanding Network Ports
&lt;/h3&gt;

&lt;p&gt;A port is a logical communication endpoint used by transport-layer protocols such as TCP and UDP.&lt;/p&gt;

&lt;p&gt;Ports help a system direct network traffic to the correct application or service.&lt;/p&gt;

&lt;p&gt;Common ports include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Port&lt;/th&gt;
&lt;th&gt;Protocol / Service&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;20, 21&lt;/td&gt;
&lt;td&gt;FTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;SSH&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;SMTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;td&gt;POP3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;143&lt;/td&gt;
&lt;td&gt;IMAP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;td&gt;HTTPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3306&lt;/td&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5432&lt;/td&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6379&lt;/td&gt;
&lt;td&gt;Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8080&lt;/td&gt;
&lt;td&gt;Common alternative HTTP application port&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are common default or conventional ports. Actual application configurations can differ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a user accesses a website using HTTPS, the client typically connects to the web server using TCP port 443.&lt;/p&gt;

&lt;p&gt;In AWS, security groups can control which inbound and outbound traffic is allowed to reach an EC2 instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.7 Understanding TCP and UDP
&lt;/h3&gt;

&lt;p&gt;TCP and UDP are transport-layer protocols.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TCP (Transmission Control Protocol)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TCP provides reliable, connection-oriented communication.&lt;/p&gt;

&lt;p&gt;Important characteristics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connection establishment.&lt;/li&gt;
&lt;li&gt;Ordered data delivery.&lt;/li&gt;
&lt;li&gt;Error detection.&lt;/li&gt;
&lt;li&gt;Retransmission of lost data.&lt;/li&gt;
&lt;li&gt;Flow and congestion control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples of applications that commonly use TCP include HTTPS, SSH, and many database connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UDP (User Datagram Protocol)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UDP provides connectionless communication with lower protocol overhead.&lt;/p&gt;

&lt;p&gt;It does not guarantee delivery, ordering, or retransmission at the transport layer.&lt;/p&gt;

&lt;p&gt;Common uses include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DNS queries in many configurations.&lt;/li&gt;
&lt;li&gt;Real-time audio and video.&lt;/li&gt;
&lt;li&gt;Online gaming.&lt;/li&gt;
&lt;li&gt;Certain monitoring and streaming protocols.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.8 Understanding the TCP Three-Way Handshake
&lt;/h3&gt;

&lt;p&gt;TCP establishes a connection using a three-way handshake.&lt;/p&gt;

&lt;p&gt;The three steps are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SYN:&lt;/strong&gt; The client sends a connection request to the server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SYN-ACK:&lt;/strong&gt; The server acknowledges the request and responds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACK:&lt;/strong&gt; The client acknowledges the server's response.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the handshake, TCP data communication can begin.&lt;/p&gt;

&lt;p&gt;Understanding this process helps when troubleshooting connection establishment problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.9 Understanding HTTP and HTTPS
&lt;/h3&gt;

&lt;p&gt;HTTP stands for Hypertext Transfer Protocol.&lt;/p&gt;

&lt;p&gt;It is an application-layer protocol used for communication between clients and web servers.&lt;/p&gt;

&lt;p&gt;HTTPS is HTTP secured using TLS (Transport Layer Security).&lt;/p&gt;

&lt;p&gt;Important HTTP methods include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GET – Retrieve a resource.&lt;/li&gt;
&lt;li&gt;POST – Submit data or create a resource.&lt;/li&gt;
&lt;li&gt;PUT – Replace a resource.&lt;/li&gt;
&lt;li&gt;PATCH – Partially update a resource.&lt;/li&gt;
&lt;li&gt;DELETE – Delete a resource.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Common HTTP status codes include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status code&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;201&lt;/td&gt;
&lt;td&gt;Created&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;301&lt;/td&gt;
&lt;td&gt;Moved Permanently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;302&lt;/td&gt;
&lt;td&gt;Found&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Bad Request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;Unauthorized&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;403&lt;/td&gt;
&lt;td&gt;Forbidden&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;404&lt;/td&gt;
&lt;td&gt;Not Found&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;Internal Server Error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;502&lt;/td&gt;
&lt;td&gt;Bad Gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;503&lt;/td&gt;
&lt;td&gt;Service Unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;504&lt;/td&gt;
&lt;td&gt;Gateway Timeout&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;DevOps Engineers frequently investigate HTTP errors during application deployments and production incidents.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.10 Understanding OSI and TCP/IP Models
&lt;/h3&gt;

&lt;p&gt;Networking communication is commonly explained through layered models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OSI Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The OSI model has seven layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Physical – Transmits raw bits through physical media.&lt;/li&gt;
&lt;li&gt;Data Link – Handles local link communication and frames.&lt;/li&gt;
&lt;li&gt;Network – Handles logical addressing and routing.&lt;/li&gt;
&lt;li&gt;Transport – Provides end-to-end transport using TCP or UDP.&lt;/li&gt;
&lt;li&gt;Session – Manages communication sessions.&lt;/li&gt;
&lt;li&gt;Presentation – Handles data representation, encoding, and related transformations.&lt;/li&gt;
&lt;li&gt;Application – Provides network services used by applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;TCP/IP Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The commonly used four-layer TCP/IP model includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Network Access.&lt;/li&gt;
&lt;li&gt;Internet.&lt;/li&gt;
&lt;li&gt;Transport.&lt;/li&gt;
&lt;li&gt;Application.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Understanding these models helps engineers identify where network communication problems may occur.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.11 Understanding Routing and Gateways
&lt;/h3&gt;

&lt;p&gt;Routing is the process of determining how network packets travel from a source to a destination.&lt;/p&gt;

&lt;p&gt;A router forwards packets between different networks based on routing information.&lt;/p&gt;

&lt;p&gt;A default gateway is the next-hop device used when a destination does not match a more specific route.&lt;/p&gt;

&lt;p&gt;In AWS, route tables determine where network traffic from a subnet is directed.&lt;/p&gt;

&lt;p&gt;For example, a public subnet may have a route to an Internet Gateway for internet connectivity.&lt;/p&gt;

&lt;p&gt;A private subnet can use a NAT Gateway for outbound internet connectivity without allowing unsolicited inbound internet connections through that NAT Gateway.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.12 Understanding Firewalls and Network Security
&lt;/h3&gt;

&lt;p&gt;A firewall controls network traffic based on configured security rules.&lt;/p&gt;

&lt;p&gt;Firewalls help protect systems from unauthorized network access.&lt;/p&gt;

&lt;p&gt;Common network security concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inbound traffic.&lt;/li&gt;
&lt;li&gt;Outbound traffic.&lt;/li&gt;
&lt;li&gt;Allowed ports.&lt;/li&gt;
&lt;li&gt;Source and destination IP addresses.&lt;/li&gt;
&lt;li&gt;Network protocols.&lt;/li&gt;
&lt;li&gt;Stateful and stateless filtering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In AWS, two important network security components are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Groups&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Act as virtual firewalls for supported resources such as EC2 network interfaces.&lt;/li&gt;
&lt;li&gt;Are stateful.&lt;/li&gt;
&lt;li&gt;Support inbound and outbound rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Network ACLs (NACLs)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operate at the subnet level.&lt;/li&gt;
&lt;li&gt;Are stateless.&lt;/li&gt;
&lt;li&gt;Support inbound and outbound rules.&lt;/li&gt;
&lt;li&gt;Use numbered rules evaluated in order.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding these differences is essential when troubleshooting AWS network access.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.13 Understanding Load Balancing
&lt;/h3&gt;

&lt;p&gt;A load balancer distributes incoming traffic across multiple backend targets.&lt;/p&gt;

&lt;p&gt;This helps improve application availability, scalability, and performance.&lt;/p&gt;

&lt;p&gt;For example, instead of sending every user request to one EC2 instance, a load balancer can distribute requests across multiple instances.&lt;/p&gt;

&lt;p&gt;AWS provides Elastic Load Balancing with different load balancer types, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application Load Balancer (ALB).&lt;/li&gt;
&lt;li&gt;Network Load Balancer (NLB).&lt;/li&gt;
&lt;li&gt;Gateway Load Balancer (GWLB).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An Application Load Balancer operates at the application layer and supports HTTP and HTTPS routing features.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.14 Essential Network Troubleshooting Commands
&lt;/h3&gt;

&lt;p&gt;DevOps Engineers regularly use networking tools to diagnose connectivity problems.&lt;/p&gt;

&lt;p&gt;Important commands include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check network interfaces&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ip addr&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check routing information&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ip route&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test basic connectivity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ping example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check DNS resolution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nslookup example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Perform detailed DNS queries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dig example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test HTTP connectivity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl -I https://example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check listening ports and sockets&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ss -tulnp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inspect the network path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;traceroute example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Some commands may need to be installed separately. Network firewalls or cloud security rules may also block diagnostic traffic.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.15 Hands-On Networking Projects
&lt;/h3&gt;

&lt;p&gt;Practice these activities:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 1: IP Address Exploration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find your computer's IP address.&lt;/li&gt;
&lt;li&gt;Identify its subnet mask or CIDR prefix.&lt;/li&gt;
&lt;li&gt;Identify its default gateway.&lt;/li&gt;
&lt;li&gt;Understand the difference between private and public IP addresses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: DNS Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;nslookup&lt;/code&gt; to resolve a domain.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;dig&lt;/code&gt; to inspect DNS records.&lt;/li&gt;
&lt;li&gt;Compare results for different domain names.&lt;/li&gt;
&lt;li&gt;Investigate what happens when DNS resolution fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Port and Connectivity Testing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check which ports are listening on your Linux machine.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;curl&lt;/code&gt; to test a web server.&lt;/li&gt;
&lt;li&gt;Investigate a connection-refused error.&lt;/li&gt;
&lt;li&gt;Understand the difference between a closed port and a filtered port.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 4: AWS Network Fundamentals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Study the purpose of an AWS VPC.&lt;/li&gt;
&lt;li&gt;Understand public and private subnets.&lt;/li&gt;
&lt;li&gt;Explore route tables.&lt;/li&gt;
&lt;li&gt;Learn the roles of Internet Gateways and NAT Gateways.&lt;/li&gt;
&lt;li&gt;Understand security groups and Network ACLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.16 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cloudflare.com/learning/" rel="noopener noreferrer"&gt;Cloudflare Learning Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisco.com/" rel="noopener noreferrer"&gt;Cisco Networking Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html" rel="noopener noreferrer"&gt;AWS VPC Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/" rel="noopener noreferrer"&gt;AWS Elastic Load Balancing Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.17 Phase 3 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to the next phase, make sure you can explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is computer networking?&lt;/li&gt;
&lt;li&gt;What are IPv4 and IPv6?&lt;/li&gt;
&lt;li&gt;What is the difference between public and private IP addresses?&lt;/li&gt;
&lt;li&gt;What is CIDR notation?&lt;/li&gt;
&lt;li&gt;What is subnetting?&lt;/li&gt;
&lt;li&gt;What is DNS?&lt;/li&gt;
&lt;li&gt;What are common network ports?&lt;/li&gt;
&lt;li&gt;What is the difference between TCP and UDP?&lt;/li&gt;
&lt;li&gt;How does the TCP three-way handshake work?&lt;/li&gt;
&lt;li&gt;What are HTTP and HTTPS?&lt;/li&gt;
&lt;li&gt;What are the OSI and TCP/IP models?&lt;/li&gt;
&lt;li&gt;What is routing?&lt;/li&gt;
&lt;li&gt;What is a default gateway?&lt;/li&gt;
&lt;li&gt;What is the difference between a security group and a Network ACL?&lt;/li&gt;
&lt;li&gt;What is load balancing?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By the end of this phase, you should understand the fundamentals of network communication, IP addressing, DNS, ports, protocols, routing, firewalls, and load balancing.&lt;/p&gt;

&lt;p&gt;These concepts will prepare you for the next phase: Git and GitHub Version Control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4: Learn Git and GitHub (Weeks 9–10)
&lt;/h2&gt;

&lt;p&gt;Before automating infrastructure or building CI/CD pipelines, you must understand how developers and DevOps engineers manage changes to files and collaborate on projects.&lt;/p&gt;

&lt;p&gt;Git and GitHub are essential tools in modern software development and DevOps.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 What Is Version Control?
&lt;/h3&gt;

&lt;p&gt;Version control is a system that tracks changes made to files over time.&lt;/p&gt;

&lt;p&gt;Imagine working on a project and accidentally deleting an important configuration file. Without version control, recovering the previous version may be difficult.&lt;/p&gt;

&lt;p&gt;With version control, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track changes made to files.&lt;/li&gt;
&lt;li&gt;Restore previous versions.&lt;/li&gt;
&lt;li&gt;Work with multiple people on the same project.&lt;/li&gt;
&lt;li&gt;Create separate development branches.&lt;/li&gt;
&lt;li&gt;Review changes before merging them.&lt;/li&gt;
&lt;li&gt;Maintain a history of your project.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.2 What Is Git?
&lt;/h3&gt;

&lt;p&gt;Git is a distributed version control system used to track changes in source code and other files.&lt;/p&gt;

&lt;p&gt;Every developer can maintain a local copy of a Git repository and its history.&lt;/p&gt;

&lt;p&gt;Important Git concepts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Explanation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Repository&lt;/td&gt;
&lt;td&gt;A project tracked by Git&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Working directory&lt;/td&gt;
&lt;td&gt;The folder where you modify files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Staging area&lt;/td&gt;
&lt;td&gt;The area where changes are prepared for a commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commit&lt;/td&gt;
&lt;td&gt;A saved snapshot of changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Branch&lt;/td&gt;
&lt;td&gt;An independent line of development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merge&lt;/td&gt;
&lt;td&gt;Combining changes from different branches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote&lt;/td&gt;
&lt;td&gt;A repository hosted on another system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clone&lt;/td&gt;
&lt;td&gt;Creating a local copy of a repository&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull&lt;/td&gt;
&lt;td&gt;Fetching and integrating remote changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push&lt;/td&gt;
&lt;td&gt;Uploading local commits to a remote repository&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  4.3 Install and Configure Git
&lt;/h3&gt;

&lt;p&gt;Install Git on your operating system and configure your identity.&lt;/p&gt;

&lt;p&gt;Check the installed version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure your username and email:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your-email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify your configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; &lt;span class="nt"&gt;--list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.4 Essential Git Commands
&lt;/h3&gt;

&lt;p&gt;Learn these commands and practise them regularly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initialize a repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check repository status:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Add a file to the staging area:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Stage all changes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create a commit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial project setup"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;View commit history:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create a branch:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Switch to a branch:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create and switch to a new branch:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch &lt;span class="nt"&gt;-c&lt;/span&gt; feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Merge a branch:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch main
git merge feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;View configured remote repositories:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Upload commits to a remote repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Download and integrate remote changes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Clone a remote repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repository-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.5 Understand the Git Workflow
&lt;/h3&gt;

&lt;p&gt;A typical Git workflow follows this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Modify files in your working directory.&lt;/li&gt;
&lt;li&gt;Review changes using &lt;code&gt;git status&lt;/code&gt; and &lt;code&gt;git diff&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Stage the required changes using &lt;code&gt;git add&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Create a commit using &lt;code&gt;git commit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Push commits to a remote repository.&lt;/li&gt;
&lt;li&gt;Create a pull request for review when collaborating with a team.&lt;/li&gt;
&lt;li&gt;Merge approved changes into the main branch.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4.6 Understand Branching and Merging
&lt;/h3&gt;

&lt;p&gt;Branches allow developers and DevOps engineers to work on different tasks without directly modifying the main development branch.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;main&lt;/code&gt; — stable project code.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;develop&lt;/code&gt; — ongoing development.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;feature-login&lt;/code&gt; — a new feature.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bugfix-database&lt;/code&gt; — a bug fix.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A typical team workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A developer creates a feature branch.&lt;/li&gt;
&lt;li&gt;The developer makes changes and commits them.&lt;/li&gt;
&lt;li&gt;The branch is pushed to GitHub.&lt;/li&gt;
&lt;li&gt;A pull request is opened.&lt;/li&gt;
&lt;li&gt;Team members review the changes.&lt;/li&gt;
&lt;li&gt;Approved changes are merged into the main branch.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Learn how to resolve merge conflicts when different branches modify the same parts of a file.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.7 What Is GitHub?
&lt;/h3&gt;

&lt;p&gt;GitHub is a cloud-based platform for hosting Git repositories and collaborating on software projects.&lt;/p&gt;

&lt;p&gt;Git and GitHub are not the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git is the version control system.&lt;/li&gt;
&lt;li&gt;GitHub is a platform that hosts Git repositories and provides collaboration features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important GitHub features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repositories&lt;/li&gt;
&lt;li&gt;Pull requests&lt;/li&gt;
&lt;li&gt;Issues&lt;/li&gt;
&lt;li&gt;Branch protection&lt;/li&gt;
&lt;li&gt;Code reviews&lt;/li&gt;
&lt;li&gt;GitHub Actions&lt;/li&gt;
&lt;li&gt;Releases&lt;/li&gt;
&lt;li&gt;Project boards&lt;/li&gt;
&lt;li&gt;README files&lt;/li&gt;
&lt;li&gt;SSH authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.8 Create and Manage GitHub Repositories
&lt;/h3&gt;

&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a GitHub account.&lt;/li&gt;
&lt;li&gt;Create a public and private repository.&lt;/li&gt;
&lt;li&gt;Connect a local Git repository to GitHub.&lt;/li&gt;
&lt;li&gt;Push local projects to GitHub.&lt;/li&gt;
&lt;li&gt;Clone repositories.&lt;/li&gt;
&lt;li&gt;Create branches.&lt;/li&gt;
&lt;li&gt;Open and review pull requests.&lt;/li&gt;
&lt;li&gt;Manage repository permissions.&lt;/li&gt;
&lt;li&gt;Configure SSH authentication.&lt;/li&gt;
&lt;li&gt;Maintain a professional project README.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4.9 Understand .gitignore
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;.gitignore&lt;/code&gt; file tells Git which files and directories should not be tracked.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
.venv/
venv/
__pycache__/
*.pyc
*.log
.terraform/
*.tfstate
*.tfstate.*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is especially important in DevOps projects because configuration files may contain sensitive information, and Terraform state files can contain infrastructure details or secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; &lt;code&gt;.gitignore&lt;/code&gt; does not remove files that Git is already tracking. Also, never commit passwords, access keys, private keys, or other credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.10 Understand Git Authentication
&lt;/h3&gt;

&lt;p&gt;Learn the difference between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPS authentication.&lt;/li&gt;
&lt;li&gt;SSH authentication.&lt;/li&gt;
&lt;li&gt;Personal access tokens.&lt;/li&gt;
&lt;li&gt;SSH key pairs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practise configuring SSH authentication to connect your local machine to GitHub securely.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.11 GitHub Collaboration and Pull Requests
&lt;/h3&gt;

&lt;p&gt;In real-world teams, developers rarely push every change directly into the main branch.&lt;/p&gt;

&lt;p&gt;Instead, they use pull requests to propose changes.&lt;/p&gt;

&lt;p&gt;Understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a pull request.&lt;/li&gt;
&lt;li&gt;Reviewing code changes.&lt;/li&gt;
&lt;li&gt;Adding review comments.&lt;/li&gt;
&lt;li&gt;Approving or requesting changes.&lt;/li&gt;
&lt;li&gt;Resolving merge conflicts.&lt;/li&gt;
&lt;li&gt;Merging pull requests.&lt;/li&gt;
&lt;li&gt;Protecting important branches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.12 Practical Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Personal Git Repository&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a local project directory.&lt;/li&gt;
&lt;li&gt;Initialize Git.&lt;/li&gt;
&lt;li&gt;Add a README file.&lt;/li&gt;
&lt;li&gt;Commit your changes.&lt;/li&gt;
&lt;li&gt;Create a GitHub repository.&lt;/li&gt;
&lt;li&gt;Push the project to GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Branching and Pull Request Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a repository.&lt;/li&gt;
&lt;li&gt;Create a feature branch.&lt;/li&gt;
&lt;li&gt;Modify a file.&lt;/li&gt;
&lt;li&gt;Commit and push your changes.&lt;/li&gt;
&lt;li&gt;Open a pull request.&lt;/li&gt;
&lt;li&gt;Review and merge the pull request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: DevOps Documentation Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a repository with this structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;devops-learning/
├── README.md
├── linux/
├── networking/
├── aws/
├── docker/
├── kubernetes/
├── terraform/
└── cicd/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Git to maintain your notes, configuration examples, and project documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.13 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Git documentation: &lt;a href="https://git-scm.com/doc" rel="noopener noreferrer"&gt;https://git-scm.com/doc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub documentation: &lt;a href="https://docs.github.com/" rel="noopener noreferrer"&gt;https://docs.github.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn Git Branching: &lt;a href="https://learngitbranching.js.org/" rel="noopener noreferrer"&gt;https://learngitbranching.js.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Skills: &lt;a href="https://skills.github.com/" rel="noopener noreferrer"&gt;https://skills.github.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.14 Phase 4 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;By the end of this phase, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain version control and Git.&lt;/li&gt;
&lt;li&gt;[ ] Differentiate Git and GitHub.&lt;/li&gt;
&lt;li&gt;[ ] Initialize and manage repositories.&lt;/li&gt;
&lt;li&gt;[ ] Use essential Git commands.&lt;/li&gt;
&lt;li&gt;[ ] Understand staging, commits, and branches.&lt;/li&gt;
&lt;li&gt;[ ] Merge branches and resolve conflicts.&lt;/li&gt;
&lt;li&gt;[ ] Create and manage GitHub repositories.&lt;/li&gt;
&lt;li&gt;[ ] Configure SSH authentication.&lt;/li&gt;
&lt;li&gt;[ ] Create and review pull requests.&lt;/li&gt;
&lt;li&gt;[ ] Maintain a professional GitHub repository.&lt;/li&gt;
&lt;li&gt;[ ] Understand &lt;code&gt;.gitignore&lt;/code&gt; and credential safety.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; You should be comfortable managing project files using Git and collaborating through GitHub. These skills will become essential when you start working with Terraform, Dockerfiles, Kubernetes manifests, and CI/CD pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 5: Learn Python and Bash Scripting (Weeks 11–15)
&lt;/h2&gt;

&lt;p&gt;Automation is one of the most important responsibilities of a DevOps engineer.&lt;/p&gt;

&lt;p&gt;Instead of performing repetitive tasks manually, DevOps engineers write scripts to automate operations, manage infrastructure, process files, interact with APIs, and simplify deployments.&lt;/p&gt;

&lt;p&gt;Two useful scripting languages are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bash:&lt;/strong&gt; Commonly used for Linux administration and command-line automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python:&lt;/strong&gt; Used for automation, API integrations, cloud operations, and more complex scripting tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need to become a software developer before learning DevOps. However, you should be comfortable reading, writing, debugging, and maintaining practical scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 Understand Bash Scripting
&lt;/h3&gt;

&lt;p&gt;Bash (Bourne Again Shell) is a command-line shell commonly used on Linux systems.&lt;/p&gt;

&lt;p&gt;A Bash script is a file containing commands that can be executed together.&lt;/p&gt;

&lt;p&gt;For example, instead of manually checking disk usage every day, you can write a script that collects disk information automatically.&lt;/p&gt;

&lt;p&gt;Create a file named &lt;code&gt;system-info.sh&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"System Information"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"------------------"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Current user:"&lt;/span&gt;
&lt;span class="nb"&gt;whoami

echo&lt;/span&gt; &lt;span class="s2"&gt;"Current date:"&lt;/span&gt;
&lt;span class="nb"&gt;date

echo&lt;/span&gt; &lt;span class="s2"&gt;"Disk usage:"&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Memory usage:"&lt;/span&gt;
free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make the script executable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x system-info.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./system-info.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.2 Bash Scripting Fundamentals
&lt;/h3&gt;

&lt;p&gt;Learn the following concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"DevOps Engineer"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;User input&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Enter your name: "&lt;/span&gt; name
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello, &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conditional statements&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"/etc/passwd"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File exists"&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File does not exist"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Loops&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;service &lt;span class="k"&gt;in &lt;/span&gt;nginx docker ssh
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Checking &lt;/span&gt;&lt;span class="nv"&gt;$service&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Functions&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;check_disk&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

check_disk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exit codes.&lt;/li&gt;
&lt;li&gt;Command-line arguments.&lt;/li&gt;
&lt;li&gt;Positional parameters.&lt;/li&gt;
&lt;li&gt;Input and output redirection.&lt;/li&gt;
&lt;li&gt;Pipes.&lt;/li&gt;
&lt;li&gt;Environment variables.&lt;/li&gt;
&lt;li&gt;Scheduling scripts with cron.&lt;/li&gt;
&lt;li&gt;Error handling and logging.&lt;/li&gt;
&lt;li&gt;Debugging Bash scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.3 Practical Bash Automation Tasks
&lt;/h3&gt;

&lt;p&gt;Practise writing scripts to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check CPU, memory, and disk usage.&lt;/li&gt;
&lt;li&gt;Monitor whether a Linux service is running.&lt;/li&gt;
&lt;li&gt;Create daily backups.&lt;/li&gt;
&lt;li&gt;Find and delete old temporary files safely.&lt;/li&gt;
&lt;li&gt;Check whether a website or server is reachable.&lt;/li&gt;
&lt;li&gt;Monitor log files for specific errors.&lt;/li&gt;
&lt;li&gt;Create Linux users and directories.&lt;/li&gt;
&lt;li&gt;Generate system health reports.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5.4 Introduction to Python
&lt;/h3&gt;

&lt;p&gt;Python is a high-level programming language widely used in DevOps automation.&lt;/p&gt;

&lt;p&gt;It is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automating repetitive tasks.&lt;/li&gt;
&lt;li&gt;Working with AWS services using Boto3.&lt;/li&gt;
&lt;li&gt;Calling REST APIs.&lt;/li&gt;
&lt;li&gt;Processing JSON and YAML.&lt;/li&gt;
&lt;li&gt;Managing files and directories.&lt;/li&gt;
&lt;li&gt;Integrating different tools.&lt;/li&gt;
&lt;li&gt;Building automation utilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with the fundamentals.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.5 Python Fundamentals
&lt;/h3&gt;

&lt;p&gt;Learn these topics in order:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Variables and data types&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strings&lt;/li&gt;
&lt;li&gt;Integers&lt;/li&gt;
&lt;li&gt;Floats&lt;/li&gt;
&lt;li&gt;Booleans&lt;/li&gt;
&lt;li&gt;Lists&lt;/li&gt;
&lt;li&gt;Tuples&lt;/li&gt;
&lt;li&gt;Sets&lt;/li&gt;
&lt;li&gt;Dictionaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Operators&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arithmetic operators.&lt;/li&gt;
&lt;li&gt;Comparison operators.&lt;/li&gt;
&lt;li&gt;Logical operators.&lt;/li&gt;
&lt;li&gt;Assignment operators.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Conditional statements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;if&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elif&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;else&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Loops&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;for&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;while&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;break&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;continue&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Functions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defining functions.&lt;/li&gt;
&lt;li&gt;Parameters and arguments.&lt;/li&gt;
&lt;li&gt;Return values.&lt;/li&gt;
&lt;li&gt;Default arguments.&lt;/li&gt;
&lt;li&gt;Scope.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Data structures&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lists and list methods.&lt;/li&gt;
&lt;li&gt;Dictionaries and dictionary methods.&lt;/li&gt;
&lt;li&gt;Tuples and sets.&lt;/li&gt;
&lt;li&gt;Nested data structures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. File handling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reading files.&lt;/li&gt;
&lt;li&gt;Writing files.&lt;/li&gt;
&lt;li&gt;Appending data.&lt;/li&gt;
&lt;li&gt;Working with text and CSV files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;8. Exception handling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;try&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;except&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;else&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finally&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Raising exceptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter a number: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Please enter a valid integer.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.6 Intermediate Python Concepts
&lt;/h3&gt;

&lt;p&gt;After understanding the fundamentals, learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modules and packages.&lt;/li&gt;
&lt;li&gt;Import statements.&lt;/li&gt;
&lt;li&gt;Object-oriented programming basics.&lt;/li&gt;
&lt;li&gt;Classes and objects.&lt;/li&gt;
&lt;li&gt;Inheritance.&lt;/li&gt;
&lt;li&gt;Working with JSON.&lt;/li&gt;
&lt;li&gt;Working with CSV.&lt;/li&gt;
&lt;li&gt;Regular expressions.&lt;/li&gt;
&lt;li&gt;Virtual environments.&lt;/li&gt;
&lt;li&gt;Installing packages using pip.&lt;/li&gt;
&lt;li&gt;Logging.&lt;/li&gt;
&lt;li&gt;Debugging.&lt;/li&gt;
&lt;li&gt;Working with environment variables.&lt;/li&gt;
&lt;li&gt;Making HTTP requests.&lt;/li&gt;
&lt;li&gt;REST API fundamentals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.7 Python for DevOps Automation
&lt;/h3&gt;

&lt;p&gt;Focus on practical automation rather than learning every Python feature.&lt;/p&gt;

&lt;p&gt;Understand how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Execute system commands using Python.&lt;/li&gt;
&lt;li&gt;Read and process log files.&lt;/li&gt;
&lt;li&gt;Check server availability.&lt;/li&gt;
&lt;li&gt;Automate file and directory management.&lt;/li&gt;
&lt;li&gt;Make HTTP requests to REST APIs.&lt;/li&gt;
&lt;li&gt;Parse JSON responses.&lt;/li&gt;
&lt;li&gt;Generate system reports.&lt;/li&gt;
&lt;li&gt;Automate backup-related tasks.&lt;/li&gt;
&lt;li&gt;Handle errors and write logs.&lt;/li&gt;
&lt;li&gt;Build reusable automation scripts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Useful Python modules and libraries include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Module or library&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;os&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Operating system operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sys&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Python runtime and command-line arguments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;subprocess&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute external commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pathlib&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Work with filesystem paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;shutil&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File and directory operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Process JSON data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;csv&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read and write CSV files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;logging&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application and script logging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;requests&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Make HTTP requests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;boto3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Interact with AWS services&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  5.8 Introduction to AWS Boto3
&lt;/h3&gt;

&lt;p&gt;Boto3 is the AWS SDK for Python.&lt;/p&gt;

&lt;p&gt;It allows Python scripts to interact with AWS services programmatically.&lt;/p&gt;

&lt;p&gt;For example, you can use Boto3 to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List S3 buckets.&lt;/li&gt;
&lt;li&gt;Upload and download S3 objects.&lt;/li&gt;
&lt;li&gt;Start and stop EC2 instances.&lt;/li&gt;
&lt;li&gt;Retrieve information about AWS resources.&lt;/li&gt;
&lt;li&gt;Automate selected cloud operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: List S3 buckets.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;

&lt;span class="n"&gt;s3_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s3_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;list_buckets&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;bucket&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Buckets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before running AWS scripts, configure credentials securely through an appropriate AWS authentication method. Prefer IAM roles or temporary credentials where possible. Never hardcode access keys in scripts or commit them to GitHub.&lt;/p&gt;

&lt;p&gt;You will study Boto3 in greater depth during the AWS automation phase.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.9 Python and Bash Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Linux System Health Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Write a Bash script that reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU information.&lt;/li&gt;
&lt;li&gt;Memory usage.&lt;/li&gt;
&lt;li&gt;Disk usage.&lt;/li&gt;
&lt;li&gt;Running processes.&lt;/li&gt;
&lt;li&gt;System uptime.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Automated Backup Script&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a Bash script that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selects a directory.&lt;/li&gt;
&lt;li&gt;Creates a timestamped backup.&lt;/li&gt;
&lt;li&gt;Stores the backup in another directory.&lt;/li&gt;
&lt;li&gt;Logs the backup result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Log File Analyzer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Python to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read a log file.&lt;/li&gt;
&lt;li&gt;Identify error messages.&lt;/li&gt;
&lt;li&gt;Count occurrences of different error types.&lt;/li&gt;
&lt;li&gt;Generate a summary report.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Website Availability Checker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Python to send an HTTP request to a website and report whether it responds successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: AWS S3 Automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Boto3 to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List S3 buckets.&lt;/li&gt;
&lt;li&gt;Display bucket names.&lt;/li&gt;
&lt;li&gt;Upload a sample file to an authorized test bucket.&lt;/li&gt;
&lt;li&gt;List objects in the bucket.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.10 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python documentation: &lt;a href="https://docs.python.org/3/" rel="noopener noreferrer"&gt;https://docs.python.org/3/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Python tutorial: &lt;a href="https://www.learnpython.org/" rel="noopener noreferrer"&gt;https://www.learnpython.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bash reference manual: &lt;a href="https://www.gnu.org/software/bash/manual/" rel="noopener noreferrer"&gt;https://www.gnu.org/software/bash/manual/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Boto3 documentation: &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html" rel="noopener noreferrer"&gt;https://boto3.amazonaws.com/v1/documentation/api/latest/index.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Python practice: &lt;a href="https://www.hackerrank.com/domains/python" rel="noopener noreferrer"&gt;https://www.hackerrank.com/domains/python&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.11 Phase 5 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;By the end of this phase, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Write basic Bash scripts.&lt;/li&gt;
&lt;li&gt;[ ] Use variables, conditions, loops, and functions.&lt;/li&gt;
&lt;li&gt;[ ] Automate common Linux administration tasks.&lt;/li&gt;
&lt;li&gt;[ ] Understand Python variables and data types.&lt;/li&gt;
&lt;li&gt;[ ] Work with conditions, loops, and functions.&lt;/li&gt;
&lt;li&gt;[ ] Use lists, dictionaries, and other data structures.&lt;/li&gt;
&lt;li&gt;[ ] Read and write files.&lt;/li&gt;
&lt;li&gt;[ ] Handle exceptions and generate logs.&lt;/li&gt;
&lt;li&gt;[ ] Work with JSON, CSV, and REST APIs.&lt;/li&gt;
&lt;li&gt;[ ] Execute system commands using Python.&lt;/li&gt;
&lt;li&gt;[ ] Understand Python virtual environments and pip.&lt;/li&gt;
&lt;li&gt;[ ] Write basic AWS automation scripts using Boto3.&lt;/li&gt;
&lt;li&gt;[ ] Store credentials securely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; You should be able to write practical Bash and Python scripts to automate routine system administration and DevOps tasks. You do not need advanced software development skills at this stage; focus on writing reliable, reusable automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 6: Learn Amazon Web Services (AWS) Fundamentals (Weeks 16–21)
&lt;/h2&gt;

&lt;p&gt;Amazon Web Services (AWS) is one of the leading cloud computing platforms.&lt;/p&gt;

&lt;p&gt;It provides on-demand computing resources such as virtual servers, storage, databases, networking, security, and application deployment services.&lt;/p&gt;

&lt;p&gt;Instead of purchasing and maintaining physical servers, organizations can use AWS infrastructure and pay for the resources they consume.&lt;/p&gt;

&lt;p&gt;For an AWS DevOps Engineer, understanding AWS services and cloud architecture is essential.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.1 Understand Cloud Computing
&lt;/h3&gt;

&lt;p&gt;Before learning individual AWS services, understand the fundamentals of cloud computing.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is cloud computing?&lt;/li&gt;
&lt;li&gt;Traditional infrastructure vs cloud infrastructure.&lt;/li&gt;
&lt;li&gt;On-premises vs cloud environments.&lt;/li&gt;
&lt;li&gt;Public, private, and hybrid cloud.&lt;/li&gt;
&lt;li&gt;Infrastructure as a Service (IaaS).&lt;/li&gt;
&lt;li&gt;Platform as a Service (PaaS).&lt;/li&gt;
&lt;li&gt;Software as a Service (SaaS).&lt;/li&gt;
&lt;li&gt;Scalability and elasticity.&lt;/li&gt;
&lt;li&gt;High availability.&lt;/li&gt;
&lt;li&gt;Fault tolerance.&lt;/li&gt;
&lt;li&gt;Disaster recovery.&lt;/li&gt;
&lt;li&gt;Pay-as-you-go pricing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the shared responsibility model: AWS is responsible for security of the cloud, while customers are responsible for security in the cloud, with responsibilities varying by service.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.2 Understand AWS Global Infrastructure
&lt;/h3&gt;

&lt;p&gt;AWS operates a global infrastructure to deliver cloud services.&lt;/p&gt;

&lt;p&gt;Learn these concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Regions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Region is a separate geographical area where AWS operates infrastructure.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mumbai (&lt;code&gt;ap-south-1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Singapore (&lt;code&gt;ap-southeast-1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;US East (N. Virginia) (&lt;code&gt;us-east-1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Europe (Ireland) (&lt;code&gt;eu-west-1&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Availability Zones&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An Availability Zone (AZ) is an isolated location within an AWS Region, consisting of one or more data centers.&lt;/p&gt;

&lt;p&gt;Using multiple Availability Zones can improve application availability and fault tolerance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edge Locations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Edge Locations help deliver content with lower latency through services such as Amazon CloudFront.&lt;/p&gt;

&lt;p&gt;Understand how Regions, Availability Zones, and Edge Locations fit into AWS architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.3 Create and Secure an AWS Account
&lt;/h3&gt;

&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand AWS account structure.&lt;/li&gt;
&lt;li&gt;Sign in to the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Navigate the AWS Console.&lt;/li&gt;
&lt;li&gt;Select an AWS Region.&lt;/li&gt;
&lt;li&gt;Configure account security.&lt;/li&gt;
&lt;li&gt;Enable multi-factor authentication (MFA).&lt;/li&gt;
&lt;li&gt;Understand root user security.&lt;/li&gt;
&lt;li&gt;Create IAM users where appropriate.&lt;/li&gt;
&lt;li&gt;Create IAM groups and roles.&lt;/li&gt;
&lt;li&gt;Apply least-privilege permissions.&lt;/li&gt;
&lt;li&gt;Configure billing alerts and budgets.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Important cost and security precautions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protect the root user credentials.&lt;/li&gt;
&lt;li&gt;Never share AWS access keys.&lt;/li&gt;
&lt;li&gt;Prefer IAM roles and temporary credentials over long-lived access keys.&lt;/li&gt;
&lt;li&gt;Check service pricing before launching resources.&lt;/li&gt;
&lt;li&gt;Configure billing notifications and budgets.&lt;/li&gt;
&lt;li&gt;Delete resources after completing practice exercises.&lt;/li&gt;
&lt;li&gt;Remember that AWS Free Tier eligibility and limits vary by account, service, and usage. Not every resource or activity is free.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6.4 Identity and Access Management (IAM)
&lt;/h3&gt;

&lt;p&gt;IAM controls who can access AWS resources and what actions they can perform.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IAM users.&lt;/li&gt;
&lt;li&gt;IAM groups.&lt;/li&gt;
&lt;li&gt;IAM roles.&lt;/li&gt;
&lt;li&gt;IAM policies.&lt;/li&gt;
&lt;li&gt;Managed policies.&lt;/li&gt;
&lt;li&gt;Inline policies.&lt;/li&gt;
&lt;li&gt;Identity-based policies.&lt;/li&gt;
&lt;li&gt;Resource-based policies.&lt;/li&gt;
&lt;li&gt;Permission boundaries.&lt;/li&gt;
&lt;li&gt;Policy evaluation.&lt;/li&gt;
&lt;li&gt;Least-privilege access.&lt;/li&gt;
&lt;li&gt;IAM role assumption.&lt;/li&gt;
&lt;li&gt;Temporary security credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the difference between an IAM user and an IAM role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an IAM policy.&lt;/li&gt;
&lt;li&gt;Create a test IAM role.&lt;/li&gt;
&lt;li&gt;Attach permissions to a role.&lt;/li&gt;
&lt;li&gt;Understand role assumption.&lt;/li&gt;
&lt;li&gt;Restrict access to a specific S3 bucket.&lt;/li&gt;
&lt;li&gt;Troubleshoot common &lt;code&gt;AccessDenied&lt;/code&gt; errors.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6.5 Amazon EC2 — Elastic Compute Cloud
&lt;/h3&gt;

&lt;p&gt;Amazon EC2 provides virtual servers in the AWS cloud.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is EC2?&lt;/li&gt;
&lt;li&gt;EC2 instance types.&lt;/li&gt;
&lt;li&gt;Instance families.&lt;/li&gt;
&lt;li&gt;AMIs (Amazon Machine Images).&lt;/li&gt;
&lt;li&gt;Instance launch process.&lt;/li&gt;
&lt;li&gt;Key pairs.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;User data.&lt;/li&gt;
&lt;li&gt;EBS volumes.&lt;/li&gt;
&lt;li&gt;Instance lifecycle.&lt;/li&gt;
&lt;li&gt;Public and private IP addresses.&lt;/li&gt;
&lt;li&gt;Elastic IP addresses.&lt;/li&gt;
&lt;li&gt;Instance metadata.&lt;/li&gt;
&lt;li&gt;Instance purchasing options.&lt;/li&gt;
&lt;li&gt;EC2 monitoring.&lt;/li&gt;
&lt;li&gt;Instance troubleshooting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch a Linux EC2 instance.&lt;/li&gt;
&lt;li&gt;Connect using SSH.&lt;/li&gt;
&lt;li&gt;Install and configure a web server.&lt;/li&gt;
&lt;li&gt;Host a simple webpage.&lt;/li&gt;
&lt;li&gt;Configure inbound and outbound security group rules.&lt;/li&gt;
&lt;li&gt;Attach and mount an EBS volume.&lt;/li&gt;
&lt;li&gt;Explore instance monitoring.&lt;/li&gt;
&lt;li&gt;Stop and terminate the instance when finished.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  6.6 Amazon S3 — Simple Storage Service
&lt;/h3&gt;

&lt;p&gt;Amazon S3 is an object storage service used to store and retrieve data.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buckets and objects.&lt;/li&gt;
&lt;li&gt;Object keys.&lt;/li&gt;
&lt;li&gt;Storage classes.&lt;/li&gt;
&lt;li&gt;Versioning.&lt;/li&gt;
&lt;li&gt;Bucket policies.&lt;/li&gt;
&lt;li&gt;Access control.&lt;/li&gt;
&lt;li&gt;Encryption.&lt;/li&gt;
&lt;li&gt;Lifecycle rules.&lt;/li&gt;
&lt;li&gt;Replication.&lt;/li&gt;
&lt;li&gt;Static website hosting.&lt;/li&gt;
&lt;li&gt;Multipart uploads.&lt;/li&gt;
&lt;li&gt;Presigned URLs.&lt;/li&gt;
&lt;li&gt;S3 event notifications.&lt;/li&gt;
&lt;li&gt;S3 security best practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an S3 bucket.&lt;/li&gt;
&lt;li&gt;Upload and download files.&lt;/li&gt;
&lt;li&gt;Configure bucket versioning.&lt;/li&gt;
&lt;li&gt;Create a lifecycle policy.&lt;/li&gt;
&lt;li&gt;Configure encryption.&lt;/li&gt;
&lt;li&gt;Apply a bucket policy.&lt;/li&gt;
&lt;li&gt;Enable access logging where appropriate.&lt;/li&gt;
&lt;li&gt;Understand cross-region replication and its cost implications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6.7 AWS Networking — Amazon VPC
&lt;/h3&gt;

&lt;p&gt;Amazon Virtual Private Cloud (VPC) allows you to create an isolated virtual network in AWS.&lt;/p&gt;

&lt;p&gt;This is one of the most important AWS topics for a DevOps Engineer.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is a VPC?&lt;/li&gt;
&lt;li&gt;CIDR blocks.&lt;/li&gt;
&lt;li&gt;Public and private subnets.&lt;/li&gt;
&lt;li&gt;Route tables.&lt;/li&gt;
&lt;li&gt;Internet Gateway (IGW).&lt;/li&gt;
&lt;li&gt;NAT Gateway.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;Network Access Control Lists (NACLs).&lt;/li&gt;
&lt;li&gt;Elastic Network Interfaces (ENIs).&lt;/li&gt;
&lt;li&gt;VPC peering.&lt;/li&gt;
&lt;li&gt;VPC endpoints.&lt;/li&gt;
&lt;li&gt;DNS resolution in VPC.&lt;/li&gt;
&lt;li&gt;VPC Flow Logs.&lt;/li&gt;
&lt;li&gt;Network connectivity troubleshooting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how traffic flows between public and private resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical project:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Design a VPC with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One VPC.&lt;/li&gt;
&lt;li&gt;Two public subnets across different Availability Zones.&lt;/li&gt;
&lt;li&gt;Two private subnets across different Availability Zones.&lt;/li&gt;
&lt;li&gt;Internet Gateway.&lt;/li&gt;
&lt;li&gt;Appropriate route tables.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;NAT Gateway, where required.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand that NAT Gateways and data transfer can generate charges. Use cost-conscious alternatives for practice where appropriate.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.8 Elastic Load Balancing (ELB)
&lt;/h3&gt;

&lt;p&gt;A load balancer distributes incoming traffic across multiple targets.&lt;/p&gt;

&lt;p&gt;Learn the different load balancer types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application Load Balancer (ALB).&lt;/li&gt;
&lt;li&gt;Network Load Balancer (NLB).&lt;/li&gt;
&lt;li&gt;Gateway Load Balancer (GWLB).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Listeners.&lt;/li&gt;
&lt;li&gt;Listener rules.&lt;/li&gt;
&lt;li&gt;Target groups.&lt;/li&gt;
&lt;li&gt;Health checks.&lt;/li&gt;
&lt;li&gt;Routing.&lt;/li&gt;
&lt;li&gt;High availability.&lt;/li&gt;
&lt;li&gt;Load balancing algorithms and behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercise:&lt;/strong&gt; Deploy a web application on multiple EC2 instances and understand how an Application Load Balancer distributes requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.9 EC2 Auto Scaling
&lt;/h3&gt;

&lt;p&gt;Auto Scaling helps automatically adjust the number of EC2 instances based on configured conditions.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launch templates.&lt;/li&gt;
&lt;li&gt;Auto Scaling groups.&lt;/li&gt;
&lt;li&gt;Minimum capacity.&lt;/li&gt;
&lt;li&gt;Maximum capacity.&lt;/li&gt;
&lt;li&gt;Desired capacity.&lt;/li&gt;
&lt;li&gt;Scaling policies.&lt;/li&gt;
&lt;li&gt;Dynamic scaling.&lt;/li&gt;
&lt;li&gt;Scheduled scaling.&lt;/li&gt;
&lt;li&gt;Health checks.&lt;/li&gt;
&lt;li&gt;Instance replacement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how Auto Scaling works with Elastic Load Balancing to improve application availability and scalability.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.10 Amazon EBS — Elastic Block Store
&lt;/h3&gt;

&lt;p&gt;Amazon EBS provides persistent block storage for EC2 instances.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EBS volumes.&lt;/li&gt;
&lt;li&gt;Volume types.&lt;/li&gt;
&lt;li&gt;Volume attachment.&lt;/li&gt;
&lt;li&gt;Formatting and mounting.&lt;/li&gt;
&lt;li&gt;Snapshots.&lt;/li&gt;
&lt;li&gt;Encryption.&lt;/li&gt;
&lt;li&gt;Volume resizing.&lt;/li&gt;
&lt;li&gt;Backup and recovery.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the difference between object storage in S3 and block storage in EBS.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.11 AWS Database Services
&lt;/h3&gt;

&lt;p&gt;Understand the purpose of AWS database services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon RDS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A managed relational database service.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database engines.&lt;/li&gt;
&lt;li&gt;DB instances.&lt;/li&gt;
&lt;li&gt;Storage.&lt;/li&gt;
&lt;li&gt;Backups.&lt;/li&gt;
&lt;li&gt;Multi-AZ deployments.&lt;/li&gt;
&lt;li&gt;Read replicas.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;Monitoring.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amazon Aurora&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A relational database engine compatible with MySQL and PostgreSQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon DynamoDB&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A managed NoSQL database service.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tables.&lt;/li&gt;
&lt;li&gt;Items.&lt;/li&gt;
&lt;li&gt;Attributes.&lt;/li&gt;
&lt;li&gt;Partition keys.&lt;/li&gt;
&lt;li&gt;Sort keys.&lt;/li&gt;
&lt;li&gt;Read and write capacity concepts.&lt;/li&gt;
&lt;li&gt;On-demand capacity.&lt;/li&gt;
&lt;li&gt;Indexes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand when to use relational databases and when NoSQL databases are appropriate.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.12 Amazon Route 53
&lt;/h3&gt;

&lt;p&gt;Route 53 is AWS's scalable DNS and domain registration service.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DNS fundamentals.&lt;/li&gt;
&lt;li&gt;Hosted zones.&lt;/li&gt;
&lt;li&gt;Record types.&lt;/li&gt;
&lt;li&gt;A records.&lt;/li&gt;
&lt;li&gt;AAAA records.&lt;/li&gt;
&lt;li&gt;CNAME records.&lt;/li&gt;
&lt;li&gt;Alias records.&lt;/li&gt;
&lt;li&gt;Routing policies.&lt;/li&gt;
&lt;li&gt;Health checks.&lt;/li&gt;
&lt;li&gt;DNS failover.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how a domain name resolves to an application hosted on AWS.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.13 Amazon CloudWatch
&lt;/h3&gt;

&lt;p&gt;CloudWatch is an AWS monitoring and observability service.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metrics.&lt;/li&gt;
&lt;li&gt;Logs.&lt;/li&gt;
&lt;li&gt;Log groups.&lt;/li&gt;
&lt;li&gt;Log streams.&lt;/li&gt;
&lt;li&gt;Dashboards.&lt;/li&gt;
&lt;li&gt;Alarms.&lt;/li&gt;
&lt;li&gt;Events and scheduled rules through Amazon EventBridge.&lt;/li&gt;
&lt;li&gt;CloudWatch Agent.&lt;/li&gt;
&lt;li&gt;Custom metrics.&lt;/li&gt;
&lt;li&gt;Monitoring EC2 resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor EC2 CPU utilization.&lt;/li&gt;
&lt;li&gt;Create a CloudWatch alarm.&lt;/li&gt;
&lt;li&gt;View application logs.&lt;/li&gt;
&lt;li&gt;Build a monitoring dashboard.&lt;/li&gt;
&lt;li&gt;Understand how alarms can trigger notifications through configured integrations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6.14 AWS Command Line Interface (AWS CLI)
&lt;/h3&gt;

&lt;p&gt;AWS CLI allows you to interact with AWS services through commands.&lt;/p&gt;

&lt;p&gt;Install and configure AWS CLI using the official documentation.&lt;/p&gt;

&lt;p&gt;Check the installed version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the identity associated with your active credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws sts get-caller-identity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List S3 buckets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List EC2 instances:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-instances
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy a file to S3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;cp &lt;/span&gt;sample.txt s3://your-bucket-name/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS CLI installation.&lt;/li&gt;
&lt;li&gt;Credential configuration.&lt;/li&gt;
&lt;li&gt;Named profiles.&lt;/li&gt;
&lt;li&gt;Regions.&lt;/li&gt;
&lt;li&gt;Output formats.&lt;/li&gt;
&lt;li&gt;Filters and queries.&lt;/li&gt;
&lt;li&gt;Service-specific commands.&lt;/li&gt;
&lt;li&gt;CLI troubleshooting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prefer IAM roles and temporary credentials for workloads instead of embedding long-lived credentials in scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.15 AWS Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Host a Website on EC2&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launch an EC2 instance.&lt;/li&gt;
&lt;li&gt;Install a web server.&lt;/li&gt;
&lt;li&gt;Configure a security group.&lt;/li&gt;
&lt;li&gt;Host a sample webpage.&lt;/li&gt;
&lt;li&gt;Test application accessibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Build a Secure S3 Storage Solution&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an S3 bucket.&lt;/li&gt;
&lt;li&gt;Enable versioning.&lt;/li&gt;
&lt;li&gt;Configure encryption.&lt;/li&gt;
&lt;li&gt;Apply least-privilege access.&lt;/li&gt;
&lt;li&gt;Configure lifecycle management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Build a Highly Available Web Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a VPC.&lt;/li&gt;
&lt;li&gt;Configure public and private subnets.&lt;/li&gt;
&lt;li&gt;Deploy EC2 instances in multiple Availability Zones.&lt;/li&gt;
&lt;li&gt;Configure an Application Load Balancer.&lt;/li&gt;
&lt;li&gt;Configure an Auto Scaling group.&lt;/li&gt;
&lt;li&gt;Monitor the architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Deploy a Database-Backed Application&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launch a database using RDS.&lt;/li&gt;
&lt;li&gt;Deploy an application on EC2.&lt;/li&gt;
&lt;li&gt;Configure network access securely.&lt;/li&gt;
&lt;li&gt;Connect the application to the database.&lt;/li&gt;
&lt;li&gt;Enable monitoring and backups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 5: AWS CLI Automation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure AWS CLI.&lt;/li&gt;
&lt;li&gt;Retrieve AWS account information.&lt;/li&gt;
&lt;li&gt;List S3 buckets.&lt;/li&gt;
&lt;li&gt;Inspect EC2 resources.&lt;/li&gt;
&lt;li&gt;Upload and download objects.&lt;/li&gt;
&lt;li&gt;Automate selected tasks using Bash or Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6.16 AWS Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS documentation: &lt;a href="https://docs.aws.amazon.com/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Skill Builder: &lt;a href="https://skillbuilder.aws/" rel="noopener noreferrer"&gt;https://skillbuilder.aws/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Well-Architected Framework: &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Architecture Center: &lt;a href="https://aws.amazon.com/architecture/" rel="noopener noreferrer"&gt;https://aws.amazon.com/architecture/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS CLI documentation: &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cli/latest/userguide/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6.17 Phase 6 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;By the end of this phase, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain cloud computing and its service models.&lt;/li&gt;
&lt;li&gt;[ ] Understand AWS Regions and Availability Zones.&lt;/li&gt;
&lt;li&gt;[ ] Navigate the AWS Management Console.&lt;/li&gt;
&lt;li&gt;[ ] Secure an AWS account.&lt;/li&gt;
&lt;li&gt;[ ] Create and manage IAM users, roles, and policies.&lt;/li&gt;
&lt;li&gt;[ ] Launch and connect to EC2 instances.&lt;/li&gt;
&lt;li&gt;[ ] Store and manage objects in S3.&lt;/li&gt;
&lt;li&gt;[ ] Design basic VPC architectures.&lt;/li&gt;
&lt;li&gt;[ ] Configure subnets, route tables, and gateways.&lt;/li&gt;
&lt;li&gt;[ ] Understand security groups and NACLs.&lt;/li&gt;
&lt;li&gt;[ ] Configure load balancing and Auto Scaling.&lt;/li&gt;
&lt;li&gt;[ ] Understand EBS and AWS database services.&lt;/li&gt;
&lt;li&gt;[ ] Configure basic DNS using Route 53.&lt;/li&gt;
&lt;li&gt;[ ] Monitor AWS resources using CloudWatch.&lt;/li&gt;
&lt;li&gt;[ ] Perform AWS operations using the CLI.&lt;/li&gt;
&lt;li&gt;[ ] Understand basic AWS security and cost management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; You should be able to explain core AWS services, deploy basic cloud infrastructure, configure secure network connectivity, and troubleshoot common AWS issues. These skills form the foundation for advanced AWS DevOps engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 7: Advanced AWS Services and Cloud Architecture (Weeks 22–25)
&lt;/h2&gt;

&lt;p&gt;Understanding individual AWS services is only the beginning. A professional AWS DevOps Engineer must also understand how these services work together to build secure, scalable, highly available, and reliable applications.&lt;/p&gt;

&lt;p&gt;In this phase, you will explore advanced AWS services, cloud architecture patterns, security, automation, messaging, and infrastructure management.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.1 Advanced IAM and AWS Security
&lt;/h3&gt;

&lt;p&gt;IAM is not just about creating users and attaching policies. In production environments, access must be controlled carefully across applications, services, teams, and AWS accounts.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced IAM policy structure.&lt;/li&gt;
&lt;li&gt;Policy conditions.&lt;/li&gt;
&lt;li&gt;Resource-based policies.&lt;/li&gt;
&lt;li&gt;Cross-account access.&lt;/li&gt;
&lt;li&gt;IAM role assumption.&lt;/li&gt;
&lt;li&gt;AWS Security Token Service (STS).&lt;/li&gt;
&lt;li&gt;Temporary security credentials.&lt;/li&gt;
&lt;li&gt;IAM Access Analyzer.&lt;/li&gt;
&lt;li&gt;Service control policies (SCPs).&lt;/li&gt;
&lt;li&gt;Permission boundaries.&lt;/li&gt;
&lt;li&gt;IAM Identity Center.&lt;/li&gt;
&lt;li&gt;AWS Organizations.&lt;/li&gt;
&lt;li&gt;Least-privilege access design.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a cross-account IAM role.&lt;/li&gt;
&lt;li&gt;Configure an application to assume an IAM role.&lt;/li&gt;
&lt;li&gt;Restrict access using policy conditions.&lt;/li&gt;
&lt;li&gt;Understand explicit deny and allow evaluation.&lt;/li&gt;
&lt;li&gt;Review permissions using IAM Access Analyzer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7.2 AWS Systems Manager (SSM)
&lt;/h3&gt;

&lt;p&gt;AWS Systems Manager helps manage and operate AWS resources at scale.&lt;/p&gt;

&lt;p&gt;Learn these important capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Systems Manager Session Manager.&lt;/li&gt;
&lt;li&gt;Run Command.&lt;/li&gt;
&lt;li&gt;Automation.&lt;/li&gt;
&lt;li&gt;Parameter Store.&lt;/li&gt;
&lt;li&gt;Patch Manager.&lt;/li&gt;
&lt;li&gt;State Manager.&lt;/li&gt;
&lt;li&gt;Inventory.&lt;/li&gt;
&lt;li&gt;Maintenance Windows.&lt;/li&gt;
&lt;li&gt;Fleet Manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how Systems Manager can help administrators manage EC2 instances without relying on direct SSH access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect to an EC2 instance using Session Manager.&lt;/li&gt;
&lt;li&gt;Execute commands remotely.&lt;/li&gt;
&lt;li&gt;Store configuration values in Parameter Store.&lt;/li&gt;
&lt;li&gt;Understand patch management.&lt;/li&gt;
&lt;li&gt;Automate a simple operational task.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7.3 AWS Key Management Service (KMS)
&lt;/h3&gt;

&lt;p&gt;AWS KMS is a managed service used to create and manage cryptographic keys.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer managed keys.&lt;/li&gt;
&lt;li&gt;AWS managed keys.&lt;/li&gt;
&lt;li&gt;Key policies.&lt;/li&gt;
&lt;li&gt;Key rotation.&lt;/li&gt;
&lt;li&gt;Encryption and decryption.&lt;/li&gt;
&lt;li&gt;Envelope encryption.&lt;/li&gt;
&lt;li&gt;Key grants.&lt;/li&gt;
&lt;li&gt;Cross-account key access.&lt;/li&gt;
&lt;li&gt;Integration with S3, EBS, and other AWS services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the difference between encryption at rest and encryption in transit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical exercise:&lt;/strong&gt; Configure an encrypted S3 bucket using an appropriate KMS key and understand how access permissions affect encryption operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.4 AWS Secrets Manager
&lt;/h3&gt;

&lt;p&gt;Secrets Manager helps securely store, retrieve, and manage sensitive information.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secret creation.&lt;/li&gt;
&lt;li&gt;Secret retrieval.&lt;/li&gt;
&lt;li&gt;Secret rotation.&lt;/li&gt;
&lt;li&gt;Resource policies.&lt;/li&gt;
&lt;li&gt;IAM permissions.&lt;/li&gt;
&lt;li&gt;Integration with applications.&lt;/li&gt;
&lt;li&gt;Database credential management.&lt;/li&gt;
&lt;li&gt;Secure access from Lambda and EC2 workloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand why passwords, database credentials, and API keys should not be stored directly in source code or Git repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical exercise:&lt;/strong&gt; Store a test database credential in Secrets Manager and retrieve it through an authorized application or script.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.5 AWS CloudTrail
&lt;/h3&gt;

&lt;p&gt;CloudTrail records account activity and API events across AWS.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Management events.&lt;/li&gt;
&lt;li&gt;Data events.&lt;/li&gt;
&lt;li&gt;Event history.&lt;/li&gt;
&lt;li&gt;Trails.&lt;/li&gt;
&lt;li&gt;CloudTrail Lake.&lt;/li&gt;
&lt;li&gt;Log storage in S3.&lt;/li&gt;
&lt;li&gt;Integration with CloudWatch Logs.&lt;/li&gt;
&lt;li&gt;Security auditing.&lt;/li&gt;
&lt;li&gt;Investigating suspicious API activity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercise:&lt;/strong&gt; Identify who performed a particular AWS API action and understand how CloudTrail can help investigate account activity.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.6 AWS Config
&lt;/h3&gt;

&lt;p&gt;AWS Config helps assess, audit, and evaluate the configurations of AWS resources.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration items.&lt;/li&gt;
&lt;li&gt;Configuration history.&lt;/li&gt;
&lt;li&gt;Configuration snapshots.&lt;/li&gt;
&lt;li&gt;AWS Config rules.&lt;/li&gt;
&lt;li&gt;Managed and custom rules.&lt;/li&gt;
&lt;li&gt;Compliance evaluation.&lt;/li&gt;
&lt;li&gt;Remediation concepts.&lt;/li&gt;
&lt;li&gt;Integration with AWS Organizations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercise:&lt;/strong&gt; Create a rule to evaluate whether selected S3 buckets meet a security requirement.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.7 AWS Lambda and Serverless Computing
&lt;/h3&gt;

&lt;p&gt;AWS Lambda is a serverless compute service that runs code in response to events without requiring you to manage servers.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serverless architecture.&lt;/li&gt;
&lt;li&gt;Functions.&lt;/li&gt;
&lt;li&gt;Event sources.&lt;/li&gt;
&lt;li&gt;Triggers.&lt;/li&gt;
&lt;li&gt;Execution roles.&lt;/li&gt;
&lt;li&gt;Environment variables.&lt;/li&gt;
&lt;li&gt;Layers.&lt;/li&gt;
&lt;li&gt;Runtime configuration.&lt;/li&gt;
&lt;li&gt;Timeouts and memory.&lt;/li&gt;
&lt;li&gt;Concurrency.&lt;/li&gt;
&lt;li&gt;Versions and aliases.&lt;/li&gt;
&lt;li&gt;Error handling.&lt;/li&gt;
&lt;li&gt;Dead-letter queues.&lt;/li&gt;
&lt;li&gt;Monitoring with CloudWatch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand integrations with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon S3.&lt;/li&gt;
&lt;li&gt;Amazon API Gateway.&lt;/li&gt;
&lt;li&gt;Amazon EventBridge.&lt;/li&gt;
&lt;li&gt;Amazon SQS.&lt;/li&gt;
&lt;li&gt;Amazon SNS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercises:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Lambda function.&lt;/li&gt;
&lt;li&gt;Trigger a function using an S3 event.&lt;/li&gt;
&lt;li&gt;Write a basic Python Lambda function.&lt;/li&gt;
&lt;li&gt;Configure an execution role.&lt;/li&gt;
&lt;li&gt;Monitor execution logs.&lt;/li&gt;
&lt;li&gt;Handle errors and retries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7.8 AWS Messaging and Event-Driven Services
&lt;/h3&gt;

&lt;p&gt;Modern cloud applications often use messaging and event-driven architectures to communicate between independent services.&lt;/p&gt;

&lt;p&gt;Understand these services:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon SQS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A message queuing service used to decouple application components.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard queues.&lt;/li&gt;
&lt;li&gt;FIFO queues.&lt;/li&gt;
&lt;li&gt;Visibility timeout.&lt;/li&gt;
&lt;li&gt;Message retention.&lt;/li&gt;
&lt;li&gt;Dead-letter queues.&lt;/li&gt;
&lt;li&gt;Long polling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amazon SNS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A notification service used to distribute messages to multiple subscribers.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Topics.&lt;/li&gt;
&lt;li&gt;Subscriptions.&lt;/li&gt;
&lt;li&gt;Publishers and subscribers.&lt;/li&gt;
&lt;li&gt;Message filtering.&lt;/li&gt;
&lt;li&gt;Delivery mechanisms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amazon EventBridge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An event bus service used to connect applications and AWS services through event-driven architectures.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event buses.&lt;/li&gt;
&lt;li&gt;Rules.&lt;/li&gt;
&lt;li&gt;Event patterns.&lt;/li&gt;
&lt;li&gt;Targets.&lt;/li&gt;
&lt;li&gt;Scheduled events.&lt;/li&gt;
&lt;li&gt;Event-driven automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical project:&lt;/strong&gt; Build a simple event-driven workflow in which an S3 upload triggers a Lambda function and the result is sent to an SNS notification topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.9 AWS CloudFormation
&lt;/h3&gt;

&lt;p&gt;CloudFormation is an Infrastructure as Code service that allows you to define AWS infrastructure using templates.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure as Code concepts.&lt;/li&gt;
&lt;li&gt;YAML and JSON templates.&lt;/li&gt;
&lt;li&gt;Stacks.&lt;/li&gt;
&lt;li&gt;Resources.&lt;/li&gt;
&lt;li&gt;Parameters.&lt;/li&gt;
&lt;li&gt;Outputs.&lt;/li&gt;
&lt;li&gt;Mappings.&lt;/li&gt;
&lt;li&gt;Conditions.&lt;/li&gt;
&lt;li&gt;Intrinsic functions.&lt;/li&gt;
&lt;li&gt;Change sets.&lt;/li&gt;
&lt;li&gt;Stack updates.&lt;/li&gt;
&lt;li&gt;Stack deletion.&lt;/li&gt;
&lt;li&gt;Drift detection.&lt;/li&gt;
&lt;li&gt;Nested stacks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how CloudFormation differs from manually creating AWS resources through the console.&lt;/p&gt;

&lt;p&gt;You will study Terraform in greater depth in a dedicated phase later in this roadmap.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.10 AWS Backup and Disaster Recovery
&lt;/h3&gt;

&lt;p&gt;Production systems must be prepared for failures, accidental deletion, and infrastructure disruptions.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Backup.&lt;/li&gt;
&lt;li&gt;Backup plans.&lt;/li&gt;
&lt;li&gt;Backup vaults.&lt;/li&gt;
&lt;li&gt;Recovery points.&lt;/li&gt;
&lt;li&gt;Retention policies.&lt;/li&gt;
&lt;li&gt;EBS snapshots.&lt;/li&gt;
&lt;li&gt;RDS backups.&lt;/li&gt;
&lt;li&gt;Cross-region backup considerations.&lt;/li&gt;
&lt;li&gt;Cross-account backup.&lt;/li&gt;
&lt;li&gt;Recovery testing.&lt;/li&gt;
&lt;li&gt;Disaster recovery strategies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand these disaster recovery approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup and restore.&lt;/li&gt;
&lt;li&gt;Pilot light.&lt;/li&gt;
&lt;li&gt;Warm standby.&lt;/li&gt;
&lt;li&gt;Multi-site active/active.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn the meaning of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recovery Point Objective (RPO).&lt;/li&gt;
&lt;li&gt;Recovery Time Objective (RTO).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical exercise:&lt;/strong&gt; Create a backup plan for a test resource and understand how to restore it.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.11 AWS Organizations and Multi-Account Architecture
&lt;/h3&gt;

&lt;p&gt;Large organizations often use multiple AWS accounts to separate environments, teams, workloads, and security boundaries.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Organizations.&lt;/li&gt;
&lt;li&gt;Organizational Units (OUs).&lt;/li&gt;
&lt;li&gt;Service Control Policies.&lt;/li&gt;
&lt;li&gt;Consolidated billing.&lt;/li&gt;
&lt;li&gt;Account management.&lt;/li&gt;
&lt;li&gt;Cross-account roles.&lt;/li&gt;
&lt;li&gt;Centralized logging.&lt;/li&gt;
&lt;li&gt;Shared services accounts.&lt;/li&gt;
&lt;li&gt;Multi-account governance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the purpose of separating development, testing, production, logging, and security environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.12 AWS Well-Architected Framework
&lt;/h3&gt;

&lt;p&gt;The AWS Well-Architected Framework provides guidance for building and operating cloud workloads effectively.&lt;/p&gt;

&lt;p&gt;Study its six pillars:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Operational Excellence.&lt;/li&gt;
&lt;li&gt;Security.&lt;/li&gt;
&lt;li&gt;Reliability.&lt;/li&gt;
&lt;li&gt;Performance Efficiency.&lt;/li&gt;
&lt;li&gt;Cost Optimization.&lt;/li&gt;
&lt;li&gt;Sustainability.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Understand how these pillars influence architecture and operational decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.13 Advanced AWS Architecture Concepts
&lt;/h3&gt;

&lt;p&gt;Learn how to design systems that can handle failures, increased traffic, and changing business requirements.&lt;/p&gt;

&lt;p&gt;Topics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High availability.&lt;/li&gt;
&lt;li&gt;Fault tolerance.&lt;/li&gt;
&lt;li&gt;Horizontal and vertical scaling.&lt;/li&gt;
&lt;li&gt;Multi-AZ architecture.&lt;/li&gt;
&lt;li&gt;Multi-Region architecture.&lt;/li&gt;
&lt;li&gt;Stateless and stateful applications.&lt;/li&gt;
&lt;li&gt;Decoupled architectures.&lt;/li&gt;
&lt;li&gt;Microservices fundamentals.&lt;/li&gt;
&lt;li&gt;Disaster recovery.&lt;/li&gt;
&lt;li&gt;Network segmentation.&lt;/li&gt;
&lt;li&gt;Centralized logging.&lt;/li&gt;
&lt;li&gt;Cost optimization.&lt;/li&gt;
&lt;li&gt;Resilience and failure handling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7.14 Practical Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Secure AWS Workload&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an EC2 instance.&lt;/li&gt;
&lt;li&gt;Configure an IAM role.&lt;/li&gt;
&lt;li&gt;Store application secrets securely.&lt;/li&gt;
&lt;li&gt;Enable encryption.&lt;/li&gt;
&lt;li&gt;Monitor API activity using CloudTrail.&lt;/li&gt;
&lt;li&gt;Review resource configurations using AWS Config.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Serverless File Processing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an S3 bucket.&lt;/li&gt;
&lt;li&gt;Configure an S3 event notification.&lt;/li&gt;
&lt;li&gt;Trigger a Lambda function.&lt;/li&gt;
&lt;li&gt;Process an uploaded file.&lt;/li&gt;
&lt;li&gt;Store the processing result.&lt;/li&gt;
&lt;li&gt;Monitor execution using CloudWatch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Event-Driven Notification System&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an SNS topic.&lt;/li&gt;
&lt;li&gt;Create an SQS queue.&lt;/li&gt;
&lt;li&gt;Configure an EventBridge rule.&lt;/li&gt;
&lt;li&gt;Connect event sources and targets.&lt;/li&gt;
&lt;li&gt;Test message delivery.&lt;/li&gt;
&lt;li&gt;Understand retry and dead-letter queue behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Multi-Account AWS Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Design a sample organization containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development account.&lt;/li&gt;
&lt;li&gt;Testing account.&lt;/li&gt;
&lt;li&gt;Production account.&lt;/li&gt;
&lt;li&gt;Centralized logging account.&lt;/li&gt;
&lt;li&gt;Security account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Document how IAM roles, AWS Organizations, and centralized monitoring can help manage this environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: AWS Backup and Recovery&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a backup plan.&lt;/li&gt;
&lt;li&gt;Configure a backup schedule.&lt;/li&gt;
&lt;li&gt;Understand retention settings.&lt;/li&gt;
&lt;li&gt;Perform a test restore.&lt;/li&gt;
&lt;li&gt;Document the recovery process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7.15 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS Systems Manager: &lt;a href="https://docs.aws.amazon.com/systems-manager/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/systems-manager/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS IAM: &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/IAM/latest/UserGuide/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS KMS: &lt;a href="https://docs.aws.amazon.com/kms/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/kms/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Secrets Manager: &lt;a href="https://docs.aws.amazon.com/secretsmanager/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/secretsmanager/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS CloudTrail: &lt;a href="https://docs.aws.amazon.com/awscloudtrail/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/awscloudtrail/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Config: &lt;a href="https://docs.aws.amazon.com/config/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/config/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Lambda: &lt;a href="https://docs.aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/lambda/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon SQS: &lt;a href="https://docs.aws.amazon.com/sqs/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/sqs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon SNS: &lt;a href="https://docs.aws.amazon.com/sns/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/sns/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon EventBridge: &lt;a href="https://docs.aws.amazon.com/eventbridge/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/eventbridge/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS CloudFormation: &lt;a href="https://docs.aws.amazon.com/cloudformation/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cloudformation/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Well-Architected Framework: &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7.16 Phase 7 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;By the end of this phase, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Understand advanced IAM permissions and cross-account access.&lt;/li&gt;
&lt;li&gt;[ ] Manage EC2 instances using Systems Manager.&lt;/li&gt;
&lt;li&gt;[ ] Understand encryption and key management with KMS.&lt;/li&gt;
&lt;li&gt;[ ] Store application secrets securely.&lt;/li&gt;
&lt;li&gt;[ ] Investigate AWS activity using CloudTrail.&lt;/li&gt;
&lt;li&gt;[ ] Evaluate resource configurations using AWS Config.&lt;/li&gt;
&lt;li&gt;[ ] Build basic serverless applications using Lambda.&lt;/li&gt;
&lt;li&gt;[ ] Understand SQS, SNS, and EventBridge.&lt;/li&gt;
&lt;li&gt;[ ] Create basic infrastructure templates using CloudFormation.&lt;/li&gt;
&lt;li&gt;[ ] Understand AWS Backup and disaster recovery.&lt;/li&gt;
&lt;li&gt;[ ] Explain multi-account AWS architecture.&lt;/li&gt;
&lt;li&gt;[ ] Apply the AWS Well-Architected Framework.&lt;/li&gt;
&lt;li&gt;[ ] Design basic highly available and resilient architectures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; You should be able to work with advanced AWS services, implement essential security and governance practices, automate cloud operations, and explain how multiple AWS services work together in production-oriented architectures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 8: Learn Terraform and Infrastructure as Code (Weeks 26–30)
&lt;/h2&gt;

&lt;p&gt;Infrastructure as Code (IaC) is the practice of defining, provisioning, configuring, and managing infrastructure through machine-readable configuration files.&lt;/p&gt;

&lt;p&gt;Traditionally, engineers created cloud resources manually through management consoles. This approach becomes difficult to maintain when infrastructure grows or multiple environments are required.&lt;/p&gt;

&lt;p&gt;IaC helps solve this problem by allowing infrastructure to be managed like application code.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.1 Understand Infrastructure as Code
&lt;/h3&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Infrastructure as Code?&lt;/li&gt;
&lt;li&gt;Manual infrastructure provisioning vs IaC.&lt;/li&gt;
&lt;li&gt;Declarative vs imperative approaches.&lt;/li&gt;
&lt;li&gt;Idempotency.&lt;/li&gt;
&lt;li&gt;Reusability.&lt;/li&gt;
&lt;li&gt;Version control for infrastructure.&lt;/li&gt;
&lt;li&gt;Infrastructure automation.&lt;/li&gt;
&lt;li&gt;Configuration management vs infrastructure provisioning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the benefits of IaC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repeatable infrastructure deployments.&lt;/li&gt;
&lt;li&gt;Consistent environments.&lt;/li&gt;
&lt;li&gt;Reduced manual errors.&lt;/li&gt;
&lt;li&gt;Easier collaboration.&lt;/li&gt;
&lt;li&gt;Infrastructure change tracking.&lt;/li&gt;
&lt;li&gt;Faster environment creation.&lt;/li&gt;
&lt;li&gt;Better disaster recovery and reproducibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8.2 Introduction to Terraform
&lt;/h3&gt;

&lt;p&gt;Terraform is an Infrastructure as Code tool developed by HashiCorp.&lt;/p&gt;

&lt;p&gt;It allows engineers to define infrastructure using HashiCorp Configuration Language (HCL).&lt;/p&gt;

&lt;p&gt;Terraform supports multiple cloud providers and infrastructure platforms through providers.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Terraform?&lt;/li&gt;
&lt;li&gt;Terraform architecture.&lt;/li&gt;
&lt;li&gt;Terraform workflow.&lt;/li&gt;
&lt;li&gt;Providers.&lt;/li&gt;
&lt;li&gt;Resources.&lt;/li&gt;
&lt;li&gt;Data sources.&lt;/li&gt;
&lt;li&gt;Configuration files.&lt;/li&gt;
&lt;li&gt;HCL syntax.&lt;/li&gt;
&lt;li&gt;Terraform Registry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the difference between Terraform and AWS CloudFormation.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.3 Install and Configure Terraform
&lt;/h3&gt;

&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Terraform.&lt;/li&gt;
&lt;li&gt;Verify the installation.&lt;/li&gt;
&lt;li&gt;Configure AWS CLI credentials securely.&lt;/li&gt;
&lt;li&gt;Create a Terraform working directory.&lt;/li&gt;
&lt;li&gt;Configure the AWS provider.&lt;/li&gt;
&lt;li&gt;Understand Terraform configuration files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Check the Terraform version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example provider configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="nx"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"~&amp;gt; 6.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ap-south-1"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use a compatible provider version based on your project requirements and verify the current provider documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.4 Terraform Core Commands
&lt;/h3&gt;

&lt;p&gt;Understand the purpose of each command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initialize the working directory:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Validate configuration syntax:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform validate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Format configuration files:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform &lt;span class="nb"&gt;fmt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Preview infrastructure changes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform plan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Apply infrastructure changes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Destroy Terraform-managed infrastructure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform destroy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand why reviewing a Terraform plan before applying changes is important.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.5 Terraform Configuration Language (HCL)
&lt;/h3&gt;

&lt;p&gt;Learn the building blocks of Terraform configuration.&lt;/p&gt;

&lt;p&gt;Topics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blocks.&lt;/li&gt;
&lt;li&gt;Arguments.&lt;/li&gt;
&lt;li&gt;Expressions.&lt;/li&gt;
&lt;li&gt;Attributes.&lt;/li&gt;
&lt;li&gt;Variables.&lt;/li&gt;
&lt;li&gt;Outputs.&lt;/li&gt;
&lt;li&gt;Locals.&lt;/li&gt;
&lt;li&gt;Data types.&lt;/li&gt;
&lt;li&gt;Lists and maps.&lt;/li&gt;
&lt;li&gt;Conditional expressions.&lt;/li&gt;
&lt;li&gt;Functions.&lt;/li&gt;
&lt;li&gt;Dynamic blocks.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt; expressions.&lt;/li&gt;
&lt;li&gt;Dependency references.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="s2"&gt;"instance_type"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"EC2 instance type"&lt;/span&gt;
  &lt;span class="nx"&gt;type&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t3.micro"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="s2"&gt;"instance_id"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Created EC2 instance ID"&lt;/span&gt;
  &lt;span class="nx"&gt;value&lt;/span&gt;       &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;web&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  8.6 Terraform Resources and Data Sources
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt; define infrastructure objects that Terraform manages.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instances.&lt;/li&gt;
&lt;li&gt;S3 buckets.&lt;/li&gt;
&lt;li&gt;VPCs.&lt;/li&gt;
&lt;li&gt;Subnets.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;IAM roles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data sources&lt;/strong&gt; allow Terraform to retrieve information about existing infrastructure or external resources.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource syntax.&lt;/li&gt;
&lt;li&gt;Resource arguments.&lt;/li&gt;
&lt;li&gt;Resource attributes.&lt;/li&gt;
&lt;li&gt;Resource dependencies.&lt;/li&gt;
&lt;li&gt;Explicit dependencies using &lt;code&gt;depends_on&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Data source syntax.&lt;/li&gt;
&lt;li&gt;Resource references.&lt;/li&gt;
&lt;li&gt;Implicit dependency creation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8.7 Terraform State Management
&lt;/h3&gt;

&lt;p&gt;Terraform state is one of the most important concepts to understand.&lt;/p&gt;

&lt;p&gt;The state file records the relationship between Terraform configuration and managed infrastructure.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Terraform state?&lt;/li&gt;
&lt;li&gt;Local state.&lt;/li&gt;
&lt;li&gt;Remote state.&lt;/li&gt;
&lt;li&gt;State locking.&lt;/li&gt;
&lt;li&gt;State refresh behavior.&lt;/li&gt;
&lt;li&gt;State file structure.&lt;/li&gt;
&lt;li&gt;Resource tracking.&lt;/li&gt;
&lt;li&gt;State drift.&lt;/li&gt;
&lt;li&gt;State backup.&lt;/li&gt;
&lt;li&gt;State security.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform state list
terraform state show &amp;lt;resource-address&amp;gt;
terraform state &lt;span class="nb"&gt;mv&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &amp;lt;destination&amp;gt;
terraform state &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;resource-address&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand that state files can contain sensitive information. Never commit state files containing sensitive data to a public repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.8 Remote Backend and State Locking
&lt;/h3&gt;

&lt;p&gt;In team environments, storing Terraform state only on an engineer's local machine is not a reliable collaboration strategy.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend configuration.&lt;/li&gt;
&lt;li&gt;Remote state storage.&lt;/li&gt;
&lt;li&gt;Amazon S3 backend.&lt;/li&gt;
&lt;li&gt;State locking.&lt;/li&gt;
&lt;li&gt;Concurrent Terraform operations.&lt;/li&gt;
&lt;li&gt;State recovery.&lt;/li&gt;
&lt;li&gt;Backend migration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the current S3 backend locking configuration supported by your Terraform version. For modern Terraform versions, S3-native lock files can be enabled with &lt;code&gt;use_lockfile&lt;/code&gt;; older examples may use DynamoDB-based locking.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.9 Terraform Modules
&lt;/h3&gt;

&lt;p&gt;Modules help organize reusable infrastructure configurations.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Root modules.&lt;/li&gt;
&lt;li&gt;Child modules.&lt;/li&gt;
&lt;li&gt;Module inputs.&lt;/li&gt;
&lt;li&gt;Module outputs.&lt;/li&gt;
&lt;li&gt;Module sources.&lt;/li&gt;
&lt;li&gt;Local modules.&lt;/li&gt;
&lt;li&gt;Remote modules.&lt;/li&gt;
&lt;li&gt;Module versioning.&lt;/li&gt;
&lt;li&gt;Reusable infrastructure patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform-project/
├── main.tf
├── variables.tf
├── outputs.tf
├── providers.tf
├── versions.tf
└── modules/
    ├── vpc/
    │   ├── main.tf
    │   ├── variables.tf
    │   └── outputs.tf
    └── ec2/
        ├── main.tf
        ├── variables.tf
        └── outputs.tf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  8.10 Terraform Workspaces and Multiple Environments
&lt;/h3&gt;

&lt;p&gt;Organizations commonly maintain separate environments such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development.&lt;/li&gt;
&lt;li&gt;Testing.&lt;/li&gt;
&lt;li&gt;Staging.&lt;/li&gt;
&lt;li&gt;Production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform workspaces.&lt;/li&gt;
&lt;li&gt;Workspace commands.&lt;/li&gt;
&lt;li&gt;Environment-specific variables.&lt;/li&gt;
&lt;li&gt;Variable files.&lt;/li&gt;
&lt;li&gt;Environment isolation.&lt;/li&gt;
&lt;li&gt;Separate state files.&lt;/li&gt;
&lt;li&gt;Reusable modules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand that workspaces alone are not a complete environment-isolation or security strategy. Separate configurations, accounts, permissions, and state backends may be more appropriate for production systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.11 Advanced Terraform Concepts
&lt;/h3&gt;

&lt;p&gt;After understanding the fundamentals, learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lifecycle meta-arguments.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;create_before_destroy&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prevent_destroy&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ignore_changes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Provisioners and their limitations.&lt;/li&gt;
&lt;li&gt;Importing existing resources.&lt;/li&gt;
&lt;li&gt;Resource replacement.&lt;/li&gt;
&lt;li&gt;Tainting and replacement concepts.&lt;/li&gt;
&lt;li&gt;Dependency graphs.&lt;/li&gt;
&lt;li&gt;Terraform functions.&lt;/li&gt;
&lt;li&gt;Dynamic blocks.&lt;/li&gt;
&lt;li&gt;Conditional resource creation.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;for_each&lt;/code&gt; and &lt;code&gt;count&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Provider aliases.&lt;/li&gt;
&lt;li&gt;Multiple AWS accounts and regions.&lt;/li&gt;
&lt;li&gt;Terraform testing fundamentals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also understand how to detect and manage infrastructure drift.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.12 Terraform Security Best Practices
&lt;/h3&gt;

&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid hardcoding credentials.&lt;/li&gt;
&lt;li&gt;Use IAM roles and temporary credentials.&lt;/li&gt;
&lt;li&gt;Protect state files.&lt;/li&gt;
&lt;li&gt;Avoid exposing secrets in outputs.&lt;/li&gt;
&lt;li&gt;Restrict backend access.&lt;/li&gt;
&lt;li&gt;Use encryption for remote state.&lt;/li&gt;
&lt;li&gt;Review infrastructure plans.&lt;/li&gt;
&lt;li&gt;Pin provider and module versions.&lt;/li&gt;
&lt;li&gt;Scan Terraform code for security issues.&lt;/li&gt;
&lt;li&gt;Apply least-privilege IAM permissions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explore tools such as Checkov and Trivy for infrastructure configuration scanning.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.13 Terraform and GitHub Integration
&lt;/h3&gt;

&lt;p&gt;Infrastructure code should be managed using version control.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store Terraform configurations in Git.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;.gitignore&lt;/code&gt; correctly.&lt;/li&gt;
&lt;li&gt;Review infrastructure changes through pull requests.&lt;/li&gt;
&lt;li&gt;Protect the main branch.&lt;/li&gt;
&lt;li&gt;Maintain environment-specific configuration.&lt;/li&gt;
&lt;li&gt;Use code reviews before infrastructure deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Never commit sensitive credentials or unprotected state files to GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.14 Practical Terraform Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Create an EC2 Instance Using Terraform&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure the AWS provider.&lt;/li&gt;
&lt;li&gt;Define an EC2 resource.&lt;/li&gt;
&lt;li&gt;Configure an instance type and AMI.&lt;/li&gt;
&lt;li&gt;Create a security group.&lt;/li&gt;
&lt;li&gt;Generate an infrastructure plan.&lt;/li&gt;
&lt;li&gt;Apply the configuration.&lt;/li&gt;
&lt;li&gt;Verify the EC2 instance.&lt;/li&gt;
&lt;li&gt;Destroy the resources after testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Build an AWS VPC Using Terraform&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One VPC.&lt;/li&gt;
&lt;li&gt;Public and private subnets.&lt;/li&gt;
&lt;li&gt;Route tables.&lt;/li&gt;
&lt;li&gt;Internet Gateway.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;Required network associations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Build a Reusable Terraform Module&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a VPC module.&lt;/li&gt;
&lt;li&gt;Create an EC2 module.&lt;/li&gt;
&lt;li&gt;Define variables and outputs.&lt;/li&gt;
&lt;li&gt;Reuse modules in another configuration.&lt;/li&gt;
&lt;li&gt;Document module inputs and outputs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Configure Remote Terraform State&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a dedicated S3 bucket for state storage.&lt;/li&gt;
&lt;li&gt;Enable bucket versioning.&lt;/li&gt;
&lt;li&gt;Configure encryption and restricted access.&lt;/li&gt;
&lt;li&gt;Configure the S3 backend.&lt;/li&gt;
&lt;li&gt;Enable supported state locking.&lt;/li&gt;
&lt;li&gt;Test remote state management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Build Multi-Environment Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create reusable Terraform configurations for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development.&lt;/li&gt;
&lt;li&gt;Testing.&lt;/li&gt;
&lt;li&gt;Production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use appropriate environment isolation, configuration, and state management.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.15 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Terraform documentation: &lt;a href="https://developer.hashicorp.com/terraform/docs" rel="noopener noreferrer"&gt;https://developer.hashicorp.com/terraform/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Terraform tutorials: &lt;a href="https://developer.hashicorp.com/terraform/tutorials" rel="noopener noreferrer"&gt;https://developer.hashicorp.com/terraform/tutorials&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Terraform Registry: &lt;a href="https://registry.terraform.io/" rel="noopener noreferrer"&gt;https://registry.terraform.io/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS provider documentation: &lt;a href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs" rel="noopener noreferrer"&gt;https://registry.terraform.io/providers/hashicorp/aws/latest/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Terraform best practices: &lt;a href="https://developer.hashicorp.com/terraform/language" rel="noopener noreferrer"&gt;https://developer.hashicorp.com/terraform/language&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8.16 Phase 8 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;By the end of this phase, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain Infrastructure as Code.&lt;/li&gt;
&lt;li&gt;[ ] Understand Terraform architecture and workflow.&lt;/li&gt;
&lt;li&gt;[ ] Write basic HCL configurations.&lt;/li&gt;
&lt;li&gt;[ ] Configure Terraform providers.&lt;/li&gt;
&lt;li&gt;[ ] Use resources and data sources.&lt;/li&gt;
&lt;li&gt;[ ] Work with variables, outputs, and locals.&lt;/li&gt;
&lt;li&gt;[ ] Execute Terraform core commands.&lt;/li&gt;
&lt;li&gt;[ ] Understand Terraform state management.&lt;/li&gt;
&lt;li&gt;[ ] Configure remote state and locking.&lt;/li&gt;
&lt;li&gt;[ ] Create and reuse Terraform modules.&lt;/li&gt;
&lt;li&gt;[ ] Manage multiple environments.&lt;/li&gt;
&lt;li&gt;[ ] Understand infrastructure drift.&lt;/li&gt;
&lt;li&gt;[ ] Import existing resources.&lt;/li&gt;
&lt;li&gt;[ ] Apply Terraform security best practices.&lt;/li&gt;
&lt;li&gt;[ ] Manage Terraform code using Git and GitHub.&lt;/li&gt;
&lt;li&gt;[ ] Provision AWS infrastructure using Terraform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; You should be able to design reusable Terraform configurations, provision AWS infrastructure, manage remote state, and maintain infrastructure code using professional version-control practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 9: Learn Docker and Containerization (Weeks 31–35)
&lt;/h2&gt;

&lt;p&gt;Modern applications often contain multiple components, dependencies, libraries, and runtime requirements.&lt;/p&gt;

&lt;p&gt;Deploying these applications consistently across development, testing, and production environments can be challenging.&lt;/p&gt;

&lt;p&gt;Docker helps solve this problem by packaging applications and their dependencies into portable units called containers.&lt;/p&gt;

&lt;p&gt;Containerization is a fundamental skill for AWS DevOps Engineers, particularly when working with microservices, CI/CD pipelines, Kubernetes, and cloud-native applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.1 Understand Containerization
&lt;/h3&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is containerization?&lt;/li&gt;
&lt;li&gt;What is Docker?&lt;/li&gt;
&lt;li&gt;Why do we need containers?&lt;/li&gt;
&lt;li&gt;Traditional deployment vs container-based deployment.&lt;/li&gt;
&lt;li&gt;Containers vs virtual machines.&lt;/li&gt;
&lt;li&gt;Benefits of containerization.&lt;/li&gt;
&lt;li&gt;Application portability.&lt;/li&gt;
&lt;li&gt;Container isolation.&lt;/li&gt;
&lt;li&gt;Container lifecycle.&lt;/li&gt;
&lt;li&gt;Container orchestration fundamentals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how containers share the host operating system kernel while maintaining isolated execution environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.2 Understand Docker Architecture
&lt;/h3&gt;

&lt;p&gt;Learn the main components of Docker:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Client.&lt;/li&gt;
&lt;li&gt;Docker Daemon.&lt;/li&gt;
&lt;li&gt;Docker Engine.&lt;/li&gt;
&lt;li&gt;Docker Images.&lt;/li&gt;
&lt;li&gt;Docker Containers.&lt;/li&gt;
&lt;li&gt;Docker Registries.&lt;/li&gt;
&lt;li&gt;Docker Hub.&lt;/li&gt;
&lt;li&gt;Docker Desktop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how the Docker client communicates with the Docker daemon to build images and manage containers.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.3 Install and Configure Docker
&lt;/h3&gt;

&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Docker Desktop on Windows or macOS.&lt;/li&gt;
&lt;li&gt;Understand Docker Engine on Linux.&lt;/li&gt;
&lt;li&gt;Configure Docker using WSL 2 on Windows where appropriate.&lt;/li&gt;
&lt;li&gt;Verify Docker installation.&lt;/li&gt;
&lt;li&gt;Understand Docker service management.&lt;/li&gt;
&lt;li&gt;Run your first container.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Check the installed version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check Docker system information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run a test container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  9.4 Understand Docker Images
&lt;/h3&gt;

&lt;p&gt;A Docker image is a packaged template used to create containers.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image layers.&lt;/li&gt;
&lt;li&gt;Image tags.&lt;/li&gt;
&lt;li&gt;Image IDs.&lt;/li&gt;
&lt;li&gt;Base images.&lt;/li&gt;
&lt;li&gt;Image repositories.&lt;/li&gt;
&lt;li&gt;Image registries.&lt;/li&gt;
&lt;li&gt;Image caching.&lt;/li&gt;
&lt;li&gt;Image size optimization.&lt;/li&gt;
&lt;li&gt;Image lifecycle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essential commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker images
docker pull nginx
docker inspect nginx
docker &lt;span class="nb"&gt;history &lt;/span&gt;nginx
docker rmi nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand the difference between an image and a running container.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.5 Understand Docker Containers
&lt;/h3&gt;

&lt;p&gt;A container is a running or stopped instance created from a Docker image.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container creation.&lt;/li&gt;
&lt;li&gt;Container execution.&lt;/li&gt;
&lt;li&gt;Container lifecycle.&lt;/li&gt;
&lt;li&gt;Container isolation.&lt;/li&gt;
&lt;li&gt;Container networking.&lt;/li&gt;
&lt;li&gt;Container storage.&lt;/li&gt;
&lt;li&gt;Container resource limits.&lt;/li&gt;
&lt;li&gt;Container logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essential commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; web nginx
docker ps
docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
docker stop web
docker start web
docker restart web
docker logs web
docker inspect web
docker &lt;span class="nb"&gt;rm &lt;/span&gt;web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand foreground and detached execution, interactive containers, and port mapping.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.6 Learn Dockerfile
&lt;/h3&gt;

&lt;p&gt;A Dockerfile contains instructions used to build a Docker image.&lt;/p&gt;

&lt;p&gt;Learn these instructions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RUN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;COPY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ADD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WORKDIR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ENV&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ARG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EXPOSE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CMD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ENTRYPOINT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;USER&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HEALTHCHECK&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; python:3.12-slim&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; requirements.txt .&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--no-cache-dir&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;

&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8000&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["python", "app.py"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand how Dockerfile instructions create image layers and why instruction ordering can affect build caching.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.7 Build and Manage Docker Images
&lt;/h3&gt;

&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build an image.&lt;/li&gt;
&lt;li&gt;Tag an image.&lt;/li&gt;
&lt;li&gt;Inspect an image.&lt;/li&gt;
&lt;li&gt;Remove unused images.&lt;/li&gt;
&lt;li&gt;Use build arguments.&lt;/li&gt;
&lt;li&gt;Use environment variables.&lt;/li&gt;
&lt;li&gt;Optimize image size.&lt;/li&gt;
&lt;li&gt;Rebuild images after application changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; myapp:1.0 &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tag an image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker tag myapp:1.0 myapp:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  9.8 Docker Volumes and Storage
&lt;/h3&gt;

&lt;p&gt;Containers are designed to be replaceable. Data that must survive container replacement should be stored appropriately.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container writable layers.&lt;/li&gt;
&lt;li&gt;Volumes.&lt;/li&gt;
&lt;li&gt;Bind mounts.&lt;/li&gt;
&lt;li&gt;Temporary filesystem mounts.&lt;/li&gt;
&lt;li&gt;Volume management.&lt;/li&gt;
&lt;li&gt;Persistent application data.&lt;/li&gt;
&lt;li&gt;Backup considerations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker volume create app-data
docker volume &lt;span class="nb"&gt;ls
&lt;/span&gt;docker volume inspect app-data
docker volume &lt;span class="nb"&gt;rm &lt;/span&gt;app-data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand when to use a Docker volume and when a bind mount is more appropriate.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.9 Docker Networking
&lt;/h3&gt;

&lt;p&gt;Learn how containers communicate with each other and external systems.&lt;/p&gt;

&lt;p&gt;Understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bridge networks.&lt;/li&gt;
&lt;li&gt;Host networking.&lt;/li&gt;
&lt;li&gt;None networking.&lt;/li&gt;
&lt;li&gt;User-defined bridge networks.&lt;/li&gt;
&lt;li&gt;Port publishing.&lt;/li&gt;
&lt;li&gt;Container DNS.&lt;/li&gt;
&lt;li&gt;Network isolation.&lt;/li&gt;
&lt;li&gt;Container-to-container communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network &lt;span class="nb"&gt;ls
&lt;/span&gt;docker network create app-network
docker network inspect app-network
docker network connect app-network web
docker network disconnect app-network web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  9.10 Docker Compose
&lt;/h3&gt;

&lt;p&gt;Docker Compose allows you to define and manage multi-container applications using a YAML configuration file.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compose files.&lt;/li&gt;
&lt;li&gt;Services.&lt;/li&gt;
&lt;li&gt;Networks.&lt;/li&gt;
&lt;li&gt;Volumes.&lt;/li&gt;
&lt;li&gt;Environment variables.&lt;/li&gt;
&lt;li&gt;Service dependencies.&lt;/li&gt;
&lt;li&gt;Health checks.&lt;/li&gt;
&lt;li&gt;Container startup order.&lt;/li&gt;
&lt;li&gt;Compose lifecycle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;web&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx:latest&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;8080:80"&lt;/span&gt;

  &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql:8&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example-password&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;mysql-data:/var/lib/mysql&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;mysql-data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a learning example. Do not use a simple hardcoded database password in production.&lt;/p&gt;

&lt;p&gt;Useful commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
docker compose ps
docker compose logs
docker compose down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand why Docker Compose is useful for local development and testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.11 Docker Registry and Image Management
&lt;/h3&gt;

&lt;p&gt;A container registry stores and distributes container images.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Hub.&lt;/li&gt;
&lt;li&gt;Private registries.&lt;/li&gt;
&lt;li&gt;Image repositories.&lt;/li&gt;
&lt;li&gt;Tags.&lt;/li&gt;
&lt;li&gt;Image authentication.&lt;/li&gt;
&lt;li&gt;Image push and pull.&lt;/li&gt;
&lt;li&gt;Registry permissions.&lt;/li&gt;
&lt;li&gt;Image scanning.&lt;/li&gt;
&lt;li&gt;Image retention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how to publish an image to a registry and retrieve it from another environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.12 Amazon Elastic Container Registry (ECR)
&lt;/h3&gt;

&lt;p&gt;Amazon ECR is a managed container image registry integrated with AWS.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ECR repositories.&lt;/li&gt;
&lt;li&gt;Private and public repositories.&lt;/li&gt;
&lt;li&gt;Image tags.&lt;/li&gt;
&lt;li&gt;Image push and pull.&lt;/li&gt;
&lt;li&gt;IAM permissions.&lt;/li&gt;
&lt;li&gt;Repository policies.&lt;/li&gt;
&lt;li&gt;Image scanning.&lt;/li&gt;
&lt;li&gt;Lifecycle policies.&lt;/li&gt;
&lt;li&gt;Authentication to ECR.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand how Docker images are stored in ECR before being deployed to ECS or EKS.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.13 Multi-Stage Docker Builds
&lt;/h3&gt;

&lt;p&gt;Multi-stage builds help reduce final image size by separating build dependencies from runtime dependencies.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build stages.&lt;/li&gt;
&lt;li&gt;Build-time dependencies.&lt;/li&gt;
&lt;li&gt;Runtime images.&lt;/li&gt;
&lt;li&gt;Copying artifacts between stages.&lt;/li&gt;
&lt;li&gt;Image optimization.&lt;/li&gt;
&lt;li&gt;Build caching.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand why smaller images can improve deployment efficiency and reduce unnecessary attack surface.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.14 Docker Security Best Practices
&lt;/h3&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run containers as non-root users where possible.&lt;/li&gt;
&lt;li&gt;Use trusted and maintained base images.&lt;/li&gt;
&lt;li&gt;Avoid embedding secrets in Dockerfiles.&lt;/li&gt;
&lt;li&gt;Scan images for vulnerabilities.&lt;/li&gt;
&lt;li&gt;Keep images updated.&lt;/li&gt;
&lt;li&gt;Apply resource limits.&lt;/li&gt;
&lt;li&gt;Use minimal images.&lt;/li&gt;
&lt;li&gt;Avoid unnecessary container privileges.&lt;/li&gt;
&lt;li&gt;Restrict network access.&lt;/li&gt;
&lt;li&gt;Use read-only filesystems where appropriate.&lt;/li&gt;
&lt;li&gt;Manage image tags carefully.&lt;/li&gt;
&lt;li&gt;Protect registry credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9.15 Docker Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Learn how to troubleshoot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Containers that exit immediately.&lt;/li&gt;
&lt;li&gt;Image pull failures.&lt;/li&gt;
&lt;li&gt;Port conflicts.&lt;/li&gt;
&lt;li&gt;Application connectivity problems.&lt;/li&gt;
&lt;li&gt;Permission issues.&lt;/li&gt;
&lt;li&gt;Volume mounting errors.&lt;/li&gt;
&lt;li&gt;Container DNS problems.&lt;/li&gt;
&lt;li&gt;Build failures.&lt;/li&gt;
&lt;li&gt;High container resource usage.&lt;/li&gt;
&lt;li&gt;Application errors inside containers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs &amp;lt;container-name&amp;gt;
docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &amp;lt;container-name&amp;gt; sh
docker inspect &amp;lt;container-name&amp;gt;
docker stats
docker events
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  9.16 Practical Docker Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Containerize a Static Website&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a simple HTML webpage.&lt;/li&gt;
&lt;li&gt;Write a Dockerfile.&lt;/li&gt;
&lt;li&gt;Build an Nginx image.&lt;/li&gt;
&lt;li&gt;Run the container.&lt;/li&gt;
&lt;li&gt;Publish the application port.&lt;/li&gt;
&lt;li&gt;Access the webpage through a browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Containerize a Python Application&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Python application.&lt;/li&gt;
&lt;li&gt;Write a requirements file.&lt;/li&gt;
&lt;li&gt;Build a Docker image.&lt;/li&gt;
&lt;li&gt;Run the container.&lt;/li&gt;
&lt;li&gt;Configure environment variables.&lt;/li&gt;
&lt;li&gt;View application logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Multi-Container Application&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Build a sample application using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend container.&lt;/li&gt;
&lt;li&gt;Backend container.&lt;/li&gt;
&lt;li&gt;Database container.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Docker Compose to manage services, networks, and persistent storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Publish Images to Amazon ECR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an ECR repository.&lt;/li&gt;
&lt;li&gt;Build a Docker image.&lt;/li&gt;
&lt;li&gt;Authenticate to ECR.&lt;/li&gt;
&lt;li&gt;Tag the image.&lt;/li&gt;
&lt;li&gt;Push the image.&lt;/li&gt;
&lt;li&gt;Verify the uploaded image.&lt;/li&gt;
&lt;li&gt;Pull the image from the repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Optimize a Docker Image&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an initial Docker image.&lt;/li&gt;
&lt;li&gt;Identify unnecessary layers and dependencies.&lt;/li&gt;
&lt;li&gt;Implement a multi-stage build.&lt;/li&gt;
&lt;li&gt;Use a smaller trusted base image.&lt;/li&gt;
&lt;li&gt;Compare image sizes.&lt;/li&gt;
&lt;li&gt;Scan the resulting image.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9.17 Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docker documentation: &lt;a href="https://docs.docker.com/" rel="noopener noreferrer"&gt;https://docs.docker.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docker Get Started: &lt;a href="https://docs.docker.com/get-started/" rel="noopener noreferrer"&gt;https://docs.docker.com/get-started/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Dockerfile reference: &lt;a href="https://docs.docker.com/reference/dockerfile/" rel="noopener noreferrer"&gt;https://docs.docker.com/reference/dockerfile/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docker Compose documentation: &lt;a href="https://docs.docker.com/compose/" rel="noopener noreferrer"&gt;https://docs.docker.com/compose/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon ECR documentation: &lt;a href="https://docs.aws.amazon.com/ecr/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ecr/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9.18 Phase 9 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;By the end of this phase, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain containerization and Docker architecture.&lt;/li&gt;
&lt;li&gt;[ ] Differentiate containers and virtual machines.&lt;/li&gt;
&lt;li&gt;[ ] Install and configure Docker.&lt;/li&gt;
&lt;li&gt;[ ] Manage images and containers.&lt;/li&gt;
&lt;li&gt;[ ] Write Dockerfiles.&lt;/li&gt;
&lt;li&gt;[ ] Build and tag images.&lt;/li&gt;
&lt;li&gt;[ ] Work with Docker volumes.&lt;/li&gt;
&lt;li&gt;[ ] Configure Docker networking.&lt;/li&gt;
&lt;li&gt;[ ] Use Docker Compose.&lt;/li&gt;
&lt;li&gt;[ ] Push and pull images from registries.&lt;/li&gt;
&lt;li&gt;[ ] Integrate Docker with Amazon ECR.&lt;/li&gt;
&lt;li&gt;[ ] Build optimized multi-stage images.&lt;/li&gt;
&lt;li&gt;[ ] Apply Docker security best practices.&lt;/li&gt;
&lt;li&gt;[ ] Troubleshoot common Docker issues.&lt;/li&gt;
&lt;li&gt;[ ] Containerize a sample application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; You should be able to containerize applications, manage their images and runtime environments, publish images to Amazon ECR, and prepare containerized workloads for deployment through orchestration platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 10: CI/CD Pipelines and Automation (Weeks 36–40)
&lt;/h2&gt;

&lt;p&gt;CI/CD is one of the most important skills for an AWS DevOps Engineer. It helps teams automate software building, testing, and deployment instead of performing every step manually.&lt;/p&gt;

&lt;p&gt;In this phase, you will learn how to design, build, secure, troubleshoot, and maintain CI/CD pipelines using tools such as GitHub Actions and Jenkins.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.1 What Is CI/CD?
&lt;/h3&gt;

&lt;p&gt;CI/CD stands for Continuous Integration and Continuous Delivery or Continuous Deployment.&lt;/p&gt;

&lt;p&gt;It is a software development practice that automates the process of integrating code changes, validating applications, and delivering software to environments.&lt;/p&gt;

&lt;p&gt;Without CI/CD, developers may need to manually:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write application code.&lt;/li&gt;
&lt;li&gt;Test the application.&lt;/li&gt;
&lt;li&gt;Build a Docker image.&lt;/li&gt;
&lt;li&gt;Push the image to a container registry.&lt;/li&gt;
&lt;li&gt;Connect to a server.&lt;/li&gt;
&lt;li&gt;Deploy the application.&lt;/li&gt;
&lt;li&gt;Verify whether the deployment succeeded.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;CI/CD pipelines automate many of these activities.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.2 Continuous Integration (CI)
&lt;/h3&gt;

&lt;p&gt;Continuous Integration is the practice of frequently integrating code changes into a shared repository.&lt;/p&gt;

&lt;p&gt;Whenever a developer pushes code or creates a pull request, an automated pipeline can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the source code.&lt;/li&gt;
&lt;li&gt;Install dependencies.&lt;/li&gt;
&lt;li&gt;Run code-quality checks.&lt;/li&gt;
&lt;li&gt;Execute unit tests.&lt;/li&gt;
&lt;li&gt;Build the application.&lt;/li&gt;
&lt;li&gt;Build a Docker image.&lt;/li&gt;
&lt;li&gt;Perform security scans.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A developer pushes a Python application to GitHub. GitHub Actions automatically runs tests and builds the application.&lt;/p&gt;

&lt;p&gt;If the tests fail, the pipeline reports the failure so the developer can fix the issue before the code proceeds further.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.3 Continuous Delivery vs. Continuous Deployment
&lt;/h3&gt;

&lt;p&gt;These terms are related but have an important difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Delivery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Code is automatically built, tested, and prepared for deployment. A human approval may be required before production deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every change that successfully passes the required automated checks is automatically deployed to production.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Continuous Delivery&lt;/th&gt;
&lt;th&gt;Continuous Deployment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Automated build&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automated testing&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production deployment&lt;/td&gt;
&lt;td&gt;Approval may be required&lt;/td&gt;
&lt;td&gt;Automated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human intervention&lt;/td&gt;
&lt;td&gt;Often required&lt;/td&gt;
&lt;td&gt;Not normally required&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  10.4 Understanding a CI/CD Pipeline
&lt;/h3&gt;

&lt;p&gt;A pipeline consists of multiple stages that execute in a defined order.&lt;/p&gt;

&lt;p&gt;A typical application pipeline looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer writes code
        |
        v
Push code to GitHub
        |
        v
Source Code Checkout
        |
        v
Install Dependencies
        |
        v
Code Quality Checks
        |
        v
Run Automated Tests
        |
        v
Build Application
        |
        v
Build Docker Image
        |
        v
Security and Image Scanning
        |
        v
Push Image to Amazon ECR
        |
        v
Deploy to AWS Environment
        |
        v
Deployment Verification
        |
        v
Monitoring and Notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not every pipeline needs every stage. The pipeline should reflect the application's architecture, security requirements, and release process.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.5 Important CI/CD Concepts
&lt;/h3&gt;

&lt;p&gt;Before working with pipeline tools, understand these concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pipeline:&lt;/strong&gt; A collection of automated steps that build, test, and deploy software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage:&lt;/strong&gt; A logical section of a pipeline, such as build, test, or deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Job:&lt;/strong&gt; A unit of work executed by a pipeline runner or agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step:&lt;/strong&gt; An individual command or action inside a job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runner or Agent:&lt;/strong&gt; The machine or execution environment that runs pipeline jobs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artifact:&lt;/strong&gt; A file produced during a pipeline, such as a compiled application, test report, or deployment package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment:&lt;/strong&gt; A deployment target such as development, testing, staging, or production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secret:&lt;/strong&gt; Sensitive information such as passwords, API tokens, and access credentials. Secrets must not be committed to source code.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.6 GitHub Actions
&lt;/h3&gt;

&lt;p&gt;GitHub Actions is a CI/CD and workflow automation platform integrated with GitHub.&lt;/p&gt;

&lt;p&gt;It allows developers to automate tasks whenever specific repository events occur.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running tests after every code push.&lt;/li&gt;
&lt;li&gt;Building Docker images.&lt;/li&gt;
&lt;li&gt;Scanning application dependencies.&lt;/li&gt;
&lt;li&gt;Publishing images to Amazon ECR.&lt;/li&gt;
&lt;li&gt;Deploying applications to AWS.&lt;/li&gt;
&lt;li&gt;Sending notifications after a deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Important GitHub Actions Components
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Workflow:&lt;/strong&gt; An automated process defined in a YAML file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Event:&lt;/strong&gt; The activity that triggers a workflow, such as &lt;code&gt;push&lt;/code&gt;, &lt;code&gt;pull_request&lt;/code&gt;, or a scheduled event.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Job:&lt;/strong&gt; A collection of steps executed on a runner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runner:&lt;/strong&gt; The machine that executes the workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step:&lt;/strong&gt; An individual action or shell command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; A reusable unit of automation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example GitHub Actions Workflow
&lt;/h4&gt;

&lt;p&gt;Create the following file inside your repository:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.github/workflows/ci.yml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Python Application CI&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout Source Code&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Set Up Python&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-python@v5&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;python-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3.12"&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install Dependencies&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;python -m pip install --upgrade pip&lt;/span&gt;
          &lt;span class="s"&gt;pip install -r requirements.txt&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run Tests&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;python -m unittest discover&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example checks out the repository, installs Python dependencies, and runs automated tests.&lt;/p&gt;

&lt;p&gt;For a production workflow, select supported action versions, pin third-party actions to verified commit SHAs where appropriate, and update them through a controlled process.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.7 Jenkins
&lt;/h3&gt;

&lt;p&gt;Jenkins is an open-source automation server commonly used to implement CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;It can integrate with GitHub, Docker, Kubernetes, AWS, and many other tools.&lt;/p&gt;

&lt;h4&gt;
  
  
  Important Jenkins Components
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Controller:&lt;/strong&gt; Manages pipeline execution, configuration, and scheduling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent:&lt;/strong&gt; Executes pipeline tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job:&lt;/strong&gt; An individual automation task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline:&lt;/strong&gt; A sequence of stages and steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jenkinsfile:&lt;/strong&gt; A file that defines a pipeline as code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugin:&lt;/strong&gt; An extension that adds functionality to Jenkins.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Example Jenkins Pipeline
&lt;/h4&gt;

&lt;p&gt;Create a file named &lt;code&gt;Jenkinsfile&lt;/code&gt; in your project repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight groovy"&gt;&lt;code&gt;&lt;span class="n"&gt;pipeline&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="n"&gt;any&lt;/span&gt;

    &lt;span class="n"&gt;stages&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Checkout'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Checking out source code'&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Install Dependencies'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="s1"&gt;'python3 -m pip install -r requirements.txt'&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Run Tests'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="s1"&gt;'python3 -m unittest discover'&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="n"&gt;stage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Build'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Building application'&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a basic declarative Jenkins pipeline. It demonstrates how to organize automation into stages.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.8 GitLab CI/CD Fundamentals
&lt;/h3&gt;

&lt;p&gt;GitLab CI/CD is an automation platform integrated into GitLab.&lt;/p&gt;

&lt;p&gt;Its pipeline configuration is normally defined in a file called:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.gitlab-ci.yml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Important concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pipelines&lt;/li&gt;
&lt;li&gt;Stages&lt;/li&gt;
&lt;li&gt;Jobs&lt;/li&gt;
&lt;li&gt;Runners&lt;/li&gt;
&lt;li&gt;Artifacts&lt;/li&gt;
&lt;li&gt;Cache&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;Deployment environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should understand how GitLab CI/CD works and be able to read and modify basic pipeline configurations, even if you choose GitHub Actions or Jenkins as your primary hands-on tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.9 Connecting CI/CD with Docker and Amazon ECR
&lt;/h3&gt;

&lt;p&gt;In a container-based application, a pipeline can build a Docker image and push it to Amazon Elastic Container Registry (ECR).&lt;/p&gt;

&lt;p&gt;A simplified workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Repository
       |
       v
GitHub Actions
       |
       v
Build Docker Image
       |
       v
Run Security Scan
       |
       v
Authenticate to AWS
       |
       v
Push Image to Amazon ECR
       |
       v
Deploy to ECS or EKS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A production pipeline should use secure authentication, preferably GitHub Actions OpenID Connect (OIDC) with an appropriately restricted AWS IAM role instead of long-lived AWS access keys.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.10 Deploying Applications Through CI/CD
&lt;/h3&gt;

&lt;p&gt;You should understand how pipelines deploy applications to different AWS services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon EC2:&lt;/strong&gt; Deploy an application or container to an EC2 instance using a controlled deployment mechanism.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon ECS:&lt;/strong&gt; Update an ECS service with a new task definition and container image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon EKS:&lt;/strong&gt; Update Kubernetes deployment manifests or Helm releases to use the new image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Lambda:&lt;/strong&gt; Package and deploy updated function code or container images.&lt;/p&gt;

&lt;p&gt;Learn how to handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development, testing, staging, and production environments.&lt;/li&gt;
&lt;li&gt;Environment-specific configuration.&lt;/li&gt;
&lt;li&gt;Deployment approvals.&lt;/li&gt;
&lt;li&gt;Health checks.&lt;/li&gt;
&lt;li&gt;Failed deployments.&lt;/li&gt;
&lt;li&gt;Rollbacks.&lt;/li&gt;
&lt;li&gt;Release versioning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10.11 CI/CD Security Best Practices
&lt;/h3&gt;

&lt;p&gt;A CI/CD pipeline can become a security risk if credentials, permissions, and dependencies are not managed properly.&lt;/p&gt;

&lt;p&gt;Follow these practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Never hardcode AWS access keys or passwords in pipeline files.&lt;/li&gt;
&lt;li&gt;Use GitHub Secrets or an equivalent secret-management facility.&lt;/li&gt;
&lt;li&gt;Prefer OIDC-based authentication for GitHub Actions to AWS.&lt;/li&gt;
&lt;li&gt;Follow the principle of least privilege for IAM roles.&lt;/li&gt;
&lt;li&gt;Scan dependencies and container images.&lt;/li&gt;
&lt;li&gt;Protect important branches.&lt;/li&gt;
&lt;li&gt;Require reviews for sensitive changes.&lt;/li&gt;
&lt;li&gt;Restrict production deployment permissions.&lt;/li&gt;
&lt;li&gt;Pin and review third-party pipeline actions.&lt;/li&gt;
&lt;li&gt;Keep build agents and dependencies updated.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  10.12 Pipeline Troubleshooting
&lt;/h3&gt;

&lt;p&gt;A DevOps Engineer should be able to investigate pipeline failures systematically.&lt;/p&gt;

&lt;p&gt;Common problems include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Possible Cause&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dependency installation fails&lt;/td&gt;
&lt;td&gt;Incorrect package version or network issue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit tests fail&lt;/td&gt;
&lt;td&gt;Application bug or incorrect test configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker build fails&lt;/td&gt;
&lt;td&gt;Invalid Dockerfile or missing build files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECR push fails&lt;/td&gt;
&lt;td&gt;Incorrect IAM permissions or authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment fails&lt;/td&gt;
&lt;td&gt;Configuration, networking, or permission issue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pipeline cannot access secrets&lt;/td&gt;
&lt;td&gt;Incorrect secret configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production health check fails&lt;/td&gt;
&lt;td&gt;Application startup or infrastructure problem&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Useful troubleshooting practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read the complete pipeline logs.&lt;/li&gt;
&lt;li&gt;Identify the first failing step.&lt;/li&gt;
&lt;li&gt;Reproduce the error locally when possible.&lt;/li&gt;
&lt;li&gt;Verify environment variables and secrets.&lt;/li&gt;
&lt;li&gt;Check IAM permissions and AWS service logs.&lt;/li&gt;
&lt;li&gt;Validate the deployment before attempting a rollback.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10.13 Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Python CI Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a simple Python application and build a GitHub Actions workflow that installs dependencies and runs unit tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Docker Build Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a Dockerfile for a Python application. Configure GitHub Actions to build the image whenever code is pushed to the main branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Docker Image Publishing to Amazon ECR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Extend the workflow to authenticate to AWS using OIDC, build the image, and push it to an ECR repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: AWS Deployment Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a pipeline that deploys an application to an AWS service such as ECS. Include deployment verification and a rollback strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Multi-Environment CI/CD Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Design a pipeline with separate development, staging, and production environments. Add an approval step before production deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.14 Recommended Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Actions Documentation: &lt;a href="https://docs.github.com/en/actions" rel="noopener noreferrer"&gt;https://docs.github.com/en/actions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Jenkins Documentation: &lt;a href="https://www.jenkins.io/doc/" rel="noopener noreferrer"&gt;https://www.jenkins.io/doc/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitLab CI/CD Documentation: &lt;a href="https://docs.gitlab.com/ci/" rel="noopener noreferrer"&gt;https://docs.gitlab.com/ci/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon ECR Documentation: &lt;a href="https://docs.aws.amazon.com/ecr/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ecr/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS IAM OIDC Documentation: &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10.15 Phase 10 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to Kubernetes, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain CI, Continuous Delivery, and Continuous Deployment.&lt;/li&gt;
&lt;li&gt;[ ] Describe the stages of a CI/CD pipeline.&lt;/li&gt;
&lt;li&gt;[ ] Understand workflows, jobs, steps, runners, and artifacts.&lt;/li&gt;
&lt;li&gt;[ ] Create a basic GitHub Actions workflow.&lt;/li&gt;
&lt;li&gt;[ ] Understand Jenkins architecture and Jenkinsfiles.&lt;/li&gt;
&lt;li&gt;[ ] Read and understand a basic GitLab CI/CD pipeline.&lt;/li&gt;
&lt;li&gt;[ ] Build Docker images through a pipeline.&lt;/li&gt;
&lt;li&gt;[ ] Push Docker images to Amazon ECR.&lt;/li&gt;
&lt;li&gt;[ ] Explain secure GitHub Actions-to-AWS authentication using OIDC.&lt;/li&gt;
&lt;li&gt;[ ] Understand deployment approvals and environment protection.&lt;/li&gt;
&lt;li&gt;[ ] Troubleshoot common pipeline failures.&lt;/li&gt;
&lt;li&gt;[ ] Build at least one complete CI/CD project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt; By the end of this phase, you should be able to create an automated CI/CD pipeline that takes application code from a Git repository, runs tests, builds a Docker image, publishes it to Amazon ECR, and prepares it for deployment to AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 11: Kubernetes and Container Orchestration (Weeks 41–47)
&lt;/h2&gt;

&lt;p&gt;Docker helps you package and run applications inside containers. However, managing a large number of containers across multiple servers introduces additional challenges.&lt;/p&gt;

&lt;p&gt;Consider an application running across 20 containers. What happens if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A container crashes?&lt;/li&gt;
&lt;li&gt;Application traffic suddenly increases?&lt;/li&gt;
&lt;li&gt;A server becomes unavailable?&lt;/li&gt;
&lt;li&gt;You need to deploy a new application version?&lt;/li&gt;
&lt;li&gt;Multiple application services need to communicate?&lt;/li&gt;
&lt;li&gt;You need to scale applications without manually managing every container?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Managing these tasks manually becomes difficult as applications grow.&lt;/p&gt;

&lt;p&gt;This is where Kubernetes becomes useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.1 What Is Kubernetes?
&lt;/h3&gt;

&lt;p&gt;Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications.&lt;/p&gt;

&lt;p&gt;It helps manage containers across a cluster of machines.&lt;/p&gt;

&lt;p&gt;Kubernetes is commonly abbreviated as K8s.&lt;/p&gt;

&lt;p&gt;Important capabilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container orchestration.&lt;/li&gt;
&lt;li&gt;Automated application deployment.&lt;/li&gt;
&lt;li&gt;Scaling application workloads.&lt;/li&gt;
&lt;li&gt;Self-healing and container replacement.&lt;/li&gt;
&lt;li&gt;Service discovery and load balancing.&lt;/li&gt;
&lt;li&gt;Configuration and secret management.&lt;/li&gt;
&lt;li&gt;Rolling updates and rollbacks.&lt;/li&gt;
&lt;li&gt;Resource management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose an application runs inside three containers.&lt;/p&gt;

&lt;p&gt;If one container crashes, Kubernetes can detect the failure and create a replacement to maintain the desired number of application instances.&lt;/p&gt;

&lt;p&gt;This is an example of Kubernetes self-healing behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.2 Why Do We Need Kubernetes?
&lt;/h3&gt;

&lt;p&gt;Docker can run containers, but Docker alone does not provide the complete orchestration capabilities required for managing large containerized applications across a cluster.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Docker&lt;/th&gt;
&lt;th&gt;Kubernetes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Builds container images&lt;/td&gt;
&lt;td&gt;Manages containerized workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runs individual containers&lt;/td&gt;
&lt;td&gt;Coordinates workloads across a cluster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provides container networking&lt;/td&gt;
&lt;td&gt;Provides cluster-level networking and services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uses Docker Compose for multi-container applications&lt;/td&gt;
&lt;td&gt;Uses Kubernetes resources and controllers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does not provide Kubernetes-style cluster orchestration by itself&lt;/td&gt;
&lt;td&gt;Provides scheduling, scaling, and self-healing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Docker and Kubernetes solve related but different problems. Kubernetes can run containers using compatible container runtimes such as containerd.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.3 Kubernetes Architecture
&lt;/h3&gt;

&lt;p&gt;A Kubernetes cluster consists of two major parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Control Plane&lt;/li&gt;
&lt;li&gt;Worker Nodes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Control Plane&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The control plane manages the cluster and makes decisions about application workloads.&lt;/p&gt;

&lt;p&gt;Important components include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Server&lt;/li&gt;
&lt;li&gt;Scheduler&lt;/li&gt;
&lt;li&gt;Controller Manager&lt;/li&gt;
&lt;li&gt;etcd&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Worker Nodes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Worker nodes run application workloads.&lt;/p&gt;

&lt;p&gt;Important components include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kubelet&lt;/li&gt;
&lt;li&gt;kube-proxy (commonly used, although some networking implementations replace its functionality)&lt;/li&gt;
&lt;li&gt;Container Runtime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simplified architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Kubernetes Cluster
                         |
              +----------------------+
              |     Control Plane    |
              |                      |
              |    API Server        |
              |    Scheduler        |
              |    Controller Mgr   |
              |    etcd             |
              +----------------------+
                         |
              +----------+----------+
              |                     |
        Worker Node 1         Worker Node 2
              |                     |
        +-----------+         +-----------+
        | Pod       |         | Pod       |
        | Container |         | Container |
        +-----------+         +-----------+
        | Pod       |         | Pod       |
        | Container |         | Container |
        +-----------+         +-----------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  11.4 Control Plane Components
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;API Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The API Server is the main communication interface of Kubernetes.&lt;/p&gt;

&lt;p&gt;When you execute a command such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;kubectl communicates with the Kubernetes API Server to retrieve cluster information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scheduler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Scheduler decides which worker node should run a newly created Pod.&lt;/p&gt;

&lt;p&gt;It considers factors such as available resources and scheduling constraints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controller Manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Controller Manager runs controllers that continuously compare the actual cluster state with the desired state.&lt;/p&gt;

&lt;p&gt;For example, if you request three application replicas but only two are running, a controller works to create another replica.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;etcd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;etcd is a distributed key-value store that maintains Kubernetes cluster state and configuration data.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.5 Worker Node Components
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;kubelet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The kubelet runs on each worker node and communicates with the API Server.&lt;/p&gt;

&lt;p&gt;It ensures that the Pods assigned to its node are running as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Container Runtime&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The container runtime is responsible for running containers.&lt;/p&gt;

&lt;p&gt;Examples include containerd and CRI-O.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;kube-proxy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;kube-proxy traditionally implements Kubernetes Service networking behavior on nodes. Some cluster networking solutions provide equivalent functionality without kube-proxy.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.6 What Is a Pod?
&lt;/h3&gt;

&lt;p&gt;A Pod is the smallest deployable unit in Kubernetes.&lt;/p&gt;

&lt;p&gt;A Pod can contain one or more containers that share certain resources, such as networking and storage.&lt;/p&gt;

&lt;p&gt;Most application Pods contain one main application container, although multi-container Pods are useful for tightly coupled supporting processes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx-pod&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
      &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx:stable&lt;/span&gt;
      &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this configuration as &lt;code&gt;pod.yaml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Create the Pod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the Pod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View detailed information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod nginx-pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  11.7 What Is a ReplicaSet?
&lt;/h3&gt;

&lt;p&gt;A ReplicaSet maintains a specified number of identical Pod replicas.&lt;/p&gt;

&lt;p&gt;For example, if you configure three replicas, Kubernetes attempts to maintain three matching Pods.&lt;/p&gt;

&lt;p&gt;If one Pod disappears, the ReplicaSet creates another to restore the desired count.&lt;/p&gt;

&lt;p&gt;In real-world applications, Deployments are generally used to manage ReplicaSets rather than creating ReplicaSets directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.8 What Is a Deployment?
&lt;/h3&gt;

&lt;p&gt;A Deployment manages application Pods and their ReplicaSets.&lt;/p&gt;

&lt;p&gt;It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application deployment.&lt;/li&gt;
&lt;li&gt;Replica management.&lt;/li&gt;
&lt;li&gt;Rolling updates.&lt;/li&gt;
&lt;li&gt;Rollbacks.&lt;/li&gt;
&lt;li&gt;Declarative application updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx-deployment&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
          &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx:stable&lt;/span&gt;
          &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the Deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check its status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get deployments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check Pods:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scale the Deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl scale deployment nginx-deployment &lt;span class="nt"&gt;--replicas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update the container image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nb"&gt;set &lt;/span&gt;image deployment/nginx-deployment &lt;span class="nv"&gt;nginx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nginx:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check rollout status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl rollout status deployment/nginx-deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Undo a deployment update:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl rollout undo deployment/nginx-deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  11.9 Kubernetes Services
&lt;/h3&gt;

&lt;p&gt;Pods are temporary resources. Their IP addresses can change when they are recreated.&lt;/p&gt;

&lt;p&gt;A Kubernetes Service provides a stable network endpoint for accessing a group of Pods.&lt;/p&gt;

&lt;p&gt;Important Service types:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ClusterIP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides internal access to an application from within the cluster. This is the default Service type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NodePort&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Exposes a Service on a port across the cluster nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LoadBalancer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Requests an external load balancer through the cluster's infrastructure integration, when supported.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Service&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx-service&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ClusterIP&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
  &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
      &lt;span class="na"&gt;targetPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the Service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check Services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  11.10 Namespaces
&lt;/h3&gt;

&lt;p&gt;Namespaces provide logical separation of resources within a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;They are useful for organizing environments and teams.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;development&lt;/li&gt;
&lt;li&gt;testing&lt;/li&gt;
&lt;li&gt;staging&lt;/li&gt;
&lt;li&gt;production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create a namespace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create namespace development
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List namespaces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get namespaces
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy an application into a namespace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; deployment.yaml &lt;span class="nt"&gt;-n&lt;/span&gt; development
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List Pods in a namespace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-n&lt;/span&gt; development
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Namespaces provide logical organization, but they are not a complete security boundary by themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.11 ConfigMaps and Secrets
&lt;/h3&gt;

&lt;p&gt;Applications often need configuration values such as database endpoints, application modes, and credentials.&lt;/p&gt;

&lt;p&gt;Kubernetes provides two important resources for managing configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ConfigMap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores non-confidential configuration data.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create configmap app-config &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--from-literal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;APP_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;development
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Secret&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores sensitive configuration data such as passwords and tokens.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create secret generic app-secret &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--from-literal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;change-this-value
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The example value is only a placeholder. Do not use real credentials in public repositories or article examples.&lt;/p&gt;

&lt;p&gt;Important security considerations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable encryption at rest for Kubernetes Secrets.&lt;/li&gt;
&lt;li&gt;Apply restrictive RBAC permissions.&lt;/li&gt;
&lt;li&gt;Avoid exposing secrets in logs.&lt;/li&gt;
&lt;li&gt;Consider external secret-management solutions.&lt;/li&gt;
&lt;li&gt;Use AWS Secrets Manager or another appropriate secret store when integrating with AWS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kubernetes Secrets are not automatically secure merely because their values are encoded in Base64.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.12 Health Checks and Probes
&lt;/h3&gt;

&lt;p&gt;Kubernetes uses probes to understand application health.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Liveness Probe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checks whether a container is still functioning. Kubernetes can restart a container when its liveness probe repeatedly fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Readiness Probe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checks whether a container is ready to receive traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Startup Probe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides time for an application to start before liveness and readiness checks become active.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;livenessProbe&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;httpGet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/&lt;/span&gt;
    &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
  &lt;span class="na"&gt;initialDelaySeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
  &lt;span class="na"&gt;periodSeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;

&lt;span class="na"&gt;readinessProbe&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;httpGet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/&lt;/span&gt;
    &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
  &lt;span class="na"&gt;periodSeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These settings must be tuned to the application's actual startup and health-check behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.13 Resource Requests and Limits
&lt;/h3&gt;

&lt;p&gt;Kubernetes allows you to specify CPU and memory requirements for containers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The amount of CPU and memory Kubernetes uses when scheduling a Pod.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The maximum CPU and memory resources a container can use, subject to Kubernetes resource behavior.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;requests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;128Mi"&lt;/span&gt;
    &lt;span class="na"&gt;cpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;250m"&lt;/span&gt;
  &lt;span class="na"&gt;limits&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;256Mi"&lt;/span&gt;
    &lt;span class="na"&gt;cpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;500m"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resource management helps prevent applications from consuming excessive cluster resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.14 Kubernetes Storage
&lt;/h3&gt;

&lt;p&gt;Containers are generally designed to be replaceable. Data that must survive container replacement needs appropriate storage.&lt;/p&gt;

&lt;p&gt;Important storage concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Volumes&lt;/li&gt;
&lt;li&gt;Persistent Volumes (PV)&lt;/li&gt;
&lt;li&gt;Persistent Volume Claims (PVC)&lt;/li&gt;
&lt;li&gt;StorageClasses&lt;/li&gt;
&lt;li&gt;Dynamic provisioning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Persistent Volume&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Represents storage available to the cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Persistent Volume Claim&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Represents a request for storage by an application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;StorageClass&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Defines how storage can be dynamically provisioned.&lt;/p&gt;

&lt;p&gt;In AWS, persistent storage can be integrated with services such as Amazon EBS and Amazon EFS through suitable CSI drivers.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.15 Ingress
&lt;/h3&gt;

&lt;p&gt;Ingress provides HTTP and HTTPS routing to Services inside a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  Internet
                     |
                     v
               Ingress Controller
                     |
              +------+------+
              |             |
              v             v
          Service A     Service B
              |             |
              v             v
          Application   Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An Ingress resource defines routing rules, while an Ingress Controller implements those rules.&lt;/p&gt;

&lt;p&gt;Kubernetes Gateway API is another important approach to managing application traffic and should also be explored.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.16 RBAC and Kubernetes Security
&lt;/h3&gt;

&lt;p&gt;RBAC stands for Role-Based Access Control.&lt;/p&gt;

&lt;p&gt;It controls what users and service accounts are allowed to do in a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;Important resources include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role&lt;/li&gt;
&lt;li&gt;ClusterRole&lt;/li&gt;
&lt;li&gt;RoleBinding&lt;/li&gt;
&lt;li&gt;ClusterRoleBinding&lt;/li&gt;
&lt;li&gt;ServiceAccount&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Follow the principle of least privilege.&lt;/li&gt;
&lt;li&gt;Avoid giving unnecessary cluster-admin permissions.&lt;/li&gt;
&lt;li&gt;Restrict access to Secrets.&lt;/li&gt;
&lt;li&gt;Use network policies where supported.&lt;/li&gt;
&lt;li&gt;Keep Kubernetes and container images updated.&lt;/li&gt;
&lt;li&gt;Scan images for vulnerabilities.&lt;/li&gt;
&lt;li&gt;Use secure authentication and authorization.&lt;/li&gt;
&lt;li&gt;Avoid running containers as root unless required.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  11.17 Helm
&lt;/h3&gt;

&lt;p&gt;Helm is a package manager for Kubernetes.&lt;/p&gt;

&lt;p&gt;It helps you package, configure, install, and upgrade Kubernetes applications.&lt;/p&gt;

&lt;p&gt;Important Helm concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chart&lt;/li&gt;
&lt;li&gt;Release&lt;/li&gt;
&lt;li&gt;Values&lt;/li&gt;
&lt;li&gt;Templates&lt;/li&gt;
&lt;li&gt;Repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm version
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm search repo nginx
helm &lt;span class="nb"&gt;install &lt;/span&gt;my-nginx bitnami/nginx
helm list
helm upgrade my-nginx bitnami/nginx
helm uninstall my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always review the chart's source, permissions, configuration, and resource requirements before installing it in a production environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.18 Important kubectl Commands
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;kubectl&lt;/code&gt; is the command-line tool used to communicate with Kubernetes clusters.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get nodes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List cluster nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List Pods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get deployments&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List Deployments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get services&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl describe pod NAME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inspect a Pod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl logs POD_NAME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View container logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl exec -it POD_NAME -- sh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open a shell in a container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl apply -f file.yaml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Apply a configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl delete -f file.yaml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete resources defined in a file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get all&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display common resources in the current namespace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl rollout history deployment/NAME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View Deployment rollout history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl top pods&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;View Pod resource usage when Metrics Server is available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl config get-contexts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List configured cluster contexts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  11.19 Kubernetes Troubleshooting
&lt;/h3&gt;

&lt;p&gt;A DevOps Engineer must understand how to identify and resolve common Kubernetes problems.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Meaning or Possible Cause&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pending&lt;/td&gt;
&lt;td&gt;Pod has not been scheduled or cannot obtain required resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ImagePullBackOff&lt;/td&gt;
&lt;td&gt;Kubernetes cannot successfully pull the container image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CrashLoopBackOff&lt;/td&gt;
&lt;td&gt;Container repeatedly starts and crashes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CreateContainerConfigError&lt;/td&gt;
&lt;td&gt;Container configuration or referenced resources are invalid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OOMKilled&lt;/td&gt;
&lt;td&gt;Container was terminated after exceeding its memory limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node NotReady&lt;/td&gt;
&lt;td&gt;Node is not reporting healthy status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Useful troubleshooting commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-o&lt;/span&gt; wide
kubectl describe pod POD_NAME
kubectl logs POD_NAME
kubectl logs POD_NAME &lt;span class="nt"&gt;--previous&lt;/span&gt;
kubectl get events &lt;span class="nt"&gt;--sort-by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;.metadata.creationTimestamp
kubectl describe node NODE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always inspect events, application logs, resource availability, and configuration before making changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.20 Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Deploy an Nginx Application&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a Kubernetes cluster using Minikube or another suitable local environment. Deploy Nginx using a Pod and then a Deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Application Scaling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a Deployment with three replicas. Scale it to five replicas and verify the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Service Networking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a ClusterIP Service and access your application from another Pod.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Configuration Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use ConfigMaps and Secrets to provide configuration values to an application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Application Health Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure liveness, readiness, and startup probes for an application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 6: Persistent Storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deploy an application that uses a PersistentVolumeClaim and verify that data survives Pod replacement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 7: Helm Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install an application using Helm and perform an upgrade and rollback.&lt;/p&gt;

&lt;h3&gt;
  
  
  11.21 Recommended Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes Official Documentation: &lt;a href="https://kubernetes.io/docs/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kubernetes Tutorials: &lt;a href="https://kubernetes.io/docs/tutorials/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/tutorials/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Minikube: &lt;a href="https://minikube.sigs.k8s.io/docs/" rel="noopener noreferrer"&gt;https://minikube.sigs.k8s.io/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Helm Documentation: &lt;a href="https://helm.sh/docs/" rel="noopener noreferrer"&gt;https://helm.sh/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kubernetes Concepts: &lt;a href="https://kubernetes.io/docs/concepts/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/concepts/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  11.22 Phase 11 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to AWS container services, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain Kubernetes and why container orchestration is needed.&lt;/li&gt;
&lt;li&gt;[ ] Explain Kubernetes cluster architecture.&lt;/li&gt;
&lt;li&gt;[ ] Understand control plane and worker node components.&lt;/li&gt;
&lt;li&gt;[ ] Create and manage Pods.&lt;/li&gt;
&lt;li&gt;[ ] Deploy applications using Deployments.&lt;/li&gt;
&lt;li&gt;[ ] Scale application replicas.&lt;/li&gt;
&lt;li&gt;[ ] Configure Kubernetes Services.&lt;/li&gt;
&lt;li&gt;[ ] Work with Namespaces.&lt;/li&gt;
&lt;li&gt;[ ] Understand ConfigMaps and Secrets.&lt;/li&gt;
&lt;li&gt;[ ] Configure application health probes.&lt;/li&gt;
&lt;li&gt;[ ] Manage CPU and memory requests and limits.&lt;/li&gt;
&lt;li&gt;[ ] Understand Persistent Volumes and Persistent Volume Claims.&lt;/li&gt;
&lt;li&gt;[ ] Configure Ingress and understand Gateway API fundamentals.&lt;/li&gt;
&lt;li&gt;[ ] Understand Kubernetes RBAC.&lt;/li&gt;
&lt;li&gt;[ ] Install applications using Helm.&lt;/li&gt;
&lt;li&gt;[ ] Troubleshoot common Kubernetes errors.&lt;/li&gt;
&lt;li&gt;[ ] Complete at least three practical Kubernetes projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt; By the end of this phase, you should be able to deploy, expose, scale, configure, and troubleshoot containerized applications on a Kubernetes cluster and understand the foundations required to work with Amazon EKS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 12: AWS Container Services — ECR, ECS, Fargate, and EKS (Weeks 48–51)
&lt;/h2&gt;

&lt;p&gt;In the previous phases, you learned Docker and Kubernetes. Now it is time to understand how organizations run containerized applications on AWS.&lt;/p&gt;

&lt;p&gt;AWS provides several services for storing, managing, and running containers.&lt;/p&gt;

&lt;p&gt;The most important services for an AWS DevOps Engineer are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Elastic Container Registry (ECR)&lt;/li&gt;
&lt;li&gt;Amazon Elastic Container Service (ECS)&lt;/li&gt;
&lt;li&gt;AWS Fargate&lt;/li&gt;
&lt;li&gt;Amazon Elastic Kubernetes Service (EKS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of this phase, you should understand how to select the appropriate container service, deploy applications, manage infrastructure, and troubleshoot container workloads in AWS.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.1 Understanding AWS Container Architecture
&lt;/h3&gt;

&lt;p&gt;Consider an organization that develops a web application using Docker.&lt;/p&gt;

&lt;p&gt;The organization needs to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build a Docker image.&lt;/li&gt;
&lt;li&gt;Store the image securely.&lt;/li&gt;
&lt;li&gt;Run containers on AWS.&lt;/li&gt;
&lt;li&gt;Scale the application based on traffic.&lt;/li&gt;
&lt;li&gt;Expose the application to users.&lt;/li&gt;
&lt;li&gt;Monitor application health.&lt;/li&gt;
&lt;li&gt;Secure access to AWS resources.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AWS container services help implement this architecture.&lt;/p&gt;

&lt;p&gt;A simplified architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              Developer
                  |
                  v
             GitHub Repo
                  |
                  v
             CI/CD Pipeline
                  |
                  v
             Docker Build
                  |
                  v
              Amazon ECR
                  |
          +-------+-------+
          |               |
          v               v
        Amazon ECS      Amazon EKS
          |               |
          v               v
       Fargate or       Kubernetes
       EC2 capacity      Cluster
          |               |
          +-------+-------+
                  |
                  v
           Application Users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  12.2 Amazon Elastic Container Registry (ECR)
&lt;/h3&gt;

&lt;p&gt;Amazon ECR is a fully managed container image registry.&lt;/p&gt;

&lt;p&gt;It allows organizations to store, manage, and retrieve container images.&lt;/p&gt;

&lt;p&gt;Think of ECR as a private Docker image repository hosted on AWS.&lt;/p&gt;

&lt;p&gt;Important capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store Docker and OCI-compatible container images.&lt;/li&gt;
&lt;li&gt;Manage private repositories.&lt;/li&gt;
&lt;li&gt;Integrate with Amazon ECS and EKS.&lt;/li&gt;
&lt;li&gt;Support image tagging.&lt;/li&gt;
&lt;li&gt;Scan images for vulnerabilities using supported scanning features.&lt;/li&gt;
&lt;li&gt;Apply lifecycle policies to manage old images.&lt;/li&gt;
&lt;li&gt;Control repository access using IAM and repository policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Important ECR Concepts
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Registry:&lt;/strong&gt; The image registry associated with an AWS account and Region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; A location where container images are stored.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image:&lt;/strong&gt; A packaged application containing its runtime and dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tag:&lt;/strong&gt; A label used to identify a particular image version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lifecycle Policy:&lt;/strong&gt; A policy that can expire or retain images based on configured rules.&lt;/p&gt;

&lt;h4&gt;
  
  
  Basic ECR Workflow
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   |
   v
Build Docker Image
   |
   v
Authenticate to ECR
   |
   v
Tag Docker Image
   |
   v
Push Image to ECR
   |
   v
Image Stored in Repository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Common ECR Commands
&lt;/h4&gt;

&lt;p&gt;Authenticate Docker to your ECR registry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ecr get-login-password &lt;span class="nt"&gt;--region&lt;/span&gt; ap-south-1 | &lt;span class="se"&gt;\&lt;/span&gt;
docker login &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--username&lt;/span&gt; AWS &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--password-stdin&lt;/span&gt; ACCOUNT_ID.dkr.ecr.ap-south-1.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ecr create-repository &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--repository-name&lt;/span&gt; my-application &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--region&lt;/span&gt; ap-south-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build an image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-application &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tag the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker tag my-application:latest &lt;span class="se"&gt;\&lt;/span&gt;
ACCOUNT_ID.dkr.ecr.ap-south-1.amazonaws.com/my-application:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Push the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker push &lt;span class="se"&gt;\&lt;/span&gt;
ACCOUNT_ID.dkr.ecr.ap-south-1.amazonaws.com/my-application:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;ACCOUNT_ID&lt;/code&gt; with your AWS account ID and use the appropriate Region and repository name.&lt;/p&gt;

&lt;p&gt;For production deployments, prefer immutable or uniquely identifiable image tags rather than relying only on &lt;code&gt;latest&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.3 Amazon Elastic Container Service (ECS)
&lt;/h3&gt;

&lt;p&gt;Amazon ECS is a fully managed container orchestration service provided by AWS.&lt;/p&gt;

&lt;p&gt;It allows you to deploy, manage, and scale containerized applications without having to operate your own Kubernetes control plane.&lt;/p&gt;

&lt;p&gt;ECS integrates with other AWS services such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon ECR&lt;/li&gt;
&lt;li&gt;Elastic Load Balancing&lt;/li&gt;
&lt;li&gt;AWS IAM&lt;/li&gt;
&lt;li&gt;Amazon CloudWatch&lt;/li&gt;
&lt;li&gt;Amazon VPC&lt;/li&gt;
&lt;li&gt;AWS Auto Scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Important ECS Components
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A logical grouping of infrastructure used to run ECS tasks and services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task Definition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A blueprint describing how containers should run.&lt;/p&gt;

&lt;p&gt;It includes information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container image.&lt;/li&gt;
&lt;li&gt;CPU and memory configuration.&lt;/li&gt;
&lt;li&gt;Port mappings.&lt;/li&gt;
&lt;li&gt;Environment variables.&lt;/li&gt;
&lt;li&gt;Logging configuration.&lt;/li&gt;
&lt;li&gt;IAM roles.&lt;/li&gt;
&lt;li&gt;Storage configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An instantiated workload created from a task definition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maintains the desired number of running tasks and manages their lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Container Instance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An EC2 instance registered with an ECS cluster when using the EC2 launch type or capacity provider model.&lt;/p&gt;

&lt;h4&gt;
  
  
  ECS Architecture
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Amazon ECS
                      |
                ECS Cluster
                      |
          +-----------+-----------+
          |                       |
          v                       v
      ECS Service A          ECS Service B
          |                       |
          v                       v
       Task A                  Task B
          |                       |
      +---+---+               +---+---+
      |       |               |       |
    App     Sidecar          App     Sidecar
  Container Container      Container Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  ECS Launch Options
&lt;/h4&gt;

&lt;p&gt;ECS supports different infrastructure choices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EC2 Launch Type&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You manage the EC2 instances that provide compute capacity for your containers.&lt;/p&gt;

&lt;p&gt;You are responsible for aspects such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instance selection.&lt;/li&gt;
&lt;li&gt;Operating system maintenance.&lt;/li&gt;
&lt;li&gt;Capacity planning.&lt;/li&gt;
&lt;li&gt;Instance-level security.&lt;/li&gt;
&lt;li&gt;Scaling the underlying infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fargate Launch Type&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Fargate provides serverless compute for containers.&lt;/p&gt;

&lt;p&gt;You do not need to provision or manage the underlying EC2 instances.&lt;/p&gt;

&lt;p&gt;You configure the task's resource requirements, and AWS manages the underlying compute infrastructure.&lt;/p&gt;

&lt;p&gt;ECS can also use capacity providers to manage and scale infrastructure for workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.4 AWS Fargate
&lt;/h3&gt;

&lt;p&gt;AWS Fargate is a serverless compute engine for containers.&lt;/p&gt;

&lt;p&gt;It works with Amazon ECS and Amazon EKS.&lt;/p&gt;

&lt;p&gt;With Fargate, you can run containers without directly managing the underlying servers.&lt;/p&gt;

&lt;p&gt;Important benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No direct EC2 instance management.&lt;/li&gt;
&lt;li&gt;Infrastructure management handled by AWS.&lt;/li&gt;
&lt;li&gt;Resource-based task or Pod configuration.&lt;/li&gt;
&lt;li&gt;Integration with AWS networking and IAM.&lt;/li&gt;
&lt;li&gt;Simplified container operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose an organization needs to run a small API application.&lt;/p&gt;

&lt;p&gt;Instead of creating EC2 instances, installing a container runtime, and managing the servers, the organization can use ECS with Fargate.&lt;/p&gt;

&lt;p&gt;It defines the required CPU, memory, networking, and container image. Fargate provides the underlying compute capacity.&lt;/p&gt;

&lt;p&gt;Remember that serverless does not mean free. Fargate usage, networking, storage, and other associated resources can incur charges.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.5 Amazon ECS vs. AWS Fargate
&lt;/h3&gt;

&lt;p&gt;These services are related but are not the same.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Amazon ECS&lt;/th&gt;
&lt;th&gt;AWS Fargate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Container orchestration service&lt;/td&gt;
&lt;td&gt;Serverless container compute engine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manages container workloads&lt;/td&gt;
&lt;td&gt;Provides compute capacity to run containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supports EC2 and Fargate capacity&lt;/td&gt;
&lt;td&gt;Works with ECS and EKS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defines clusters, tasks, and services&lt;/td&gt;
&lt;td&gt;Runs workloads without direct server management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ECS manages the orchestration of workloads, while Fargate provides the underlying serverless compute for supported workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.6 Amazon Elastic Kubernetes Service (EKS)
&lt;/h3&gt;

&lt;p&gt;Amazon EKS is a managed Kubernetes service provided by AWS.&lt;/p&gt;

&lt;p&gt;It allows organizations to run Kubernetes workloads without managing the Kubernetes control plane themselves.&lt;/p&gt;

&lt;p&gt;AWS manages the EKS control plane, while you remain responsible for configuring and operating your workloads and much of the worker infrastructure.&lt;/p&gt;

&lt;p&gt;Important EKS features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managed Kubernetes control plane.&lt;/li&gt;
&lt;li&gt;Integration with AWS IAM.&lt;/li&gt;
&lt;li&gt;VPC networking.&lt;/li&gt;
&lt;li&gt;Integration with Amazon ECR.&lt;/li&gt;
&lt;li&gt;Support for Kubernetes workloads.&lt;/li&gt;
&lt;li&gt;Integration with AWS load balancing.&lt;/li&gt;
&lt;li&gt;Support for EC2 and Fargate compute options, subject to workload requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  EKS Architecture
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 AWS Cloud
                     |
                     v
             Amazon EKS Cluster
                     |
          +----------+----------+
          |                     |
          v                     v
     EKS Control Plane      Worker Compute
      Managed by AWS        |
          |                 +------+
          |                 |      |
          v                 v      v
       Kubernetes          EC2   Fargate
          API             Nodes  Pods
          |
          v
     Kubernetes Resources
     - Deployments
     - Services
     - Pods
     - ConfigMaps
     - Secrets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;EKS worker workloads can run on managed node groups, self-managed nodes, or Fargate profiles, depending on the cluster design.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.7 EKS Important Concepts
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EKS Cluster&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The managed Kubernetes environment created through Amazon EKS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managed Node Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A group of EC2 worker nodes managed through EKS.&lt;/p&gt;

&lt;p&gt;AWS helps manage node provisioning and lifecycle operations, while you still need to maintain compatible configurations and plan upgrades.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fargate Profile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Defines which Kubernetes Pods should run using AWS Fargate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EKS Add-ons&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add-ons provide important cluster capabilities, such as networking, DNS, and storage integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EKS Access Entries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provide a way to configure IAM principal access to an EKS cluster.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.8 Connecting kubectl to EKS
&lt;/h3&gt;

&lt;p&gt;The AWS CLI can update your local kubeconfig file to connect to an EKS cluster.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws eks update-kubeconfig &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--region&lt;/span&gt; ap-south-1 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--name&lt;/span&gt; my-eks-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check cluster nodes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check running Pods:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-A&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View cluster information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl cluster-info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The IAM identity used by the AWS CLI must have the necessary EKS access, and the network must allow connectivity to the Kubernetes API endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.9 AWS Load Balancing with ECS and EKS
&lt;/h3&gt;

&lt;p&gt;Applications running inside containers often need to receive traffic from external users.&lt;/p&gt;

&lt;p&gt;AWS provides Elastic Load Balancing services.&lt;/p&gt;

&lt;p&gt;Important load balancers include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Load Balancer (ALB)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Works at the application layer and supports HTTP/HTTPS routing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network Load Balancer (NLB)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Works at the transport layer and supports high-performance TCP, UDP, and TLS use cases.&lt;/p&gt;

&lt;p&gt;For ECS, you can associate a load balancer with a service.&lt;/p&gt;

&lt;p&gt;For EKS, AWS Load Balancer Controller can provision and manage supported AWS load-balancing resources based on Kubernetes resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.10 ECR vs. ECS vs. EKS vs. Fargate
&lt;/h3&gt;

&lt;p&gt;Understanding the differences between these services is important for interviews.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Primary Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ECR&lt;/td&gt;
&lt;td&gt;Stores container images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECS&lt;/td&gt;
&lt;td&gt;Orchestrates container workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EKS&lt;/td&gt;
&lt;td&gt;Provides managed Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fargate&lt;/td&gt;
&lt;td&gt;Runs containers without direct server management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An organization builds a Docker image and pushes it to Amazon ECR.&lt;/p&gt;

&lt;p&gt;It then chooses one of two orchestration approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ECS for AWS-native container orchestration.&lt;/li&gt;
&lt;li&gt;EKS for Kubernetes-based container orchestration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For compute, it can choose supported EC2-based capacity or Fargate, depending on the service, workload, and architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.11 ECS vs. EKS
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;ECS&lt;/th&gt;
&lt;th&gt;EKS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Orchestration&lt;/td&gt;
&lt;td&gt;AWS-native&lt;/td&gt;
&lt;td&gt;Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning complexity&lt;/td&gt;
&lt;td&gt;Generally simpler&lt;/td&gt;
&lt;td&gt;Generally more complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes compatibility&lt;/td&gt;
&lt;td&gt;No Kubernetes API&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS integration&lt;/td&gt;
&lt;td&gt;Native AWS integration&lt;/td&gt;
&lt;td&gt;AWS and Kubernetes ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control plane management&lt;/td&gt;
&lt;td&gt;AWS-managed service&lt;/td&gt;
&lt;td&gt;AWS manages Kubernetes control plane&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workload compute&lt;/td&gt;
&lt;td&gt;EC2 or Fargate&lt;/td&gt;
&lt;td&gt;EC2 or Fargate, depending on workload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best suited for&lt;/td&gt;
&lt;td&gt;AWS-focused container workloads&lt;/td&gt;
&lt;td&gt;Kubernetes-based workloads and ecosystems&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Neither service is universally better. The right choice depends on team expertise, application requirements, operational complexity, portability needs, and cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.12 AWS Container Security
&lt;/h3&gt;

&lt;p&gt;Container security is an essential responsibility of an AWS DevOps Engineer.&lt;/p&gt;

&lt;p&gt;Important practices include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Store images in private ECR repositories when appropriate.&lt;/li&gt;
&lt;li&gt;Scan images for known vulnerabilities.&lt;/li&gt;
&lt;li&gt;Use minimal and trusted base images.&lt;/li&gt;
&lt;li&gt;Avoid running containers with unnecessary privileges.&lt;/li&gt;
&lt;li&gt;Follow IAM least-privilege principles.&lt;/li&gt;
&lt;li&gt;Use task roles for ECS applications.&lt;/li&gt;
&lt;li&gt;Use appropriate workload identity mechanisms for EKS.&lt;/li&gt;
&lt;li&gt;Store credentials in AWS Secrets Manager or another suitable secret-management system.&lt;/li&gt;
&lt;li&gt;Restrict network access using security groups and network policies where supported.&lt;/li&gt;
&lt;li&gt;Keep container images and runtime components updated.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not embed AWS credentials inside Docker images.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.13 Container Monitoring and Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Monitor your containerized applications using AWS monitoring services and platform-level tools.&lt;/p&gt;

&lt;p&gt;For ECS, understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ECS service events.&lt;/li&gt;
&lt;li&gt;Task status.&lt;/li&gt;
&lt;li&gt;Container exit codes.&lt;/li&gt;
&lt;li&gt;CloudWatch Logs.&lt;/li&gt;
&lt;li&gt;CPU and memory utilization.&lt;/li&gt;
&lt;li&gt;Load balancer health checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For EKS, understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pod status.&lt;/li&gt;
&lt;li&gt;Kubernetes events.&lt;/li&gt;
&lt;li&gt;Container logs.&lt;/li&gt;
&lt;li&gt;Node health.&lt;/li&gt;
&lt;li&gt;Resource utilization.&lt;/li&gt;
&lt;li&gt;Cluster networking.&lt;/li&gt;
&lt;li&gt;Control plane logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ecs list-clusters

aws ecs list-services &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--cluster&lt;/span&gt; my-cluster

aws ecs list-tasks &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--cluster&lt;/span&gt; my-cluster

aws eks list-clusters &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--region&lt;/span&gt; ap-south-1

kubectl get pods &lt;span class="nt"&gt;-A&lt;/span&gt;

kubectl describe pod POD_NAME

kubectl logs POD_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When troubleshooting, start with the service events and logs, then inspect IAM permissions, networking, resource availability, image access, and application health.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.14 Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Push a Docker Image to ECR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Build a Docker image locally, create an ECR repository, authenticate, and push the image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Deploy an Application Using ECS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an ECS cluster, task definition, and service. Run a containerized application and verify its health.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Run Containers Using Fargate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deploy a small application using ECS with Fargate. Configure CPU, memory, networking, logging, and security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Deploy an Application to EKS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a Kubernetes cluster using a suitable learning environment. Deploy an application using Kubernetes Deployments and Services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: CI/CD to ECS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Build a pipeline that creates a Docker image, pushes it to ECR, and updates an ECS service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 6: CI/CD to EKS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Build a pipeline that publishes an image to ECR and deploys the updated application to EKS.&lt;/p&gt;

&lt;h3&gt;
  
  
  12.15 Recommended Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Amazon ECR: &lt;a href="https://docs.aws.amazon.com/ecr/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ecr/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon ECS: &lt;a href="https://docs.aws.amazon.com/ecs/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ecs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Fargate: &lt;a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Amazon EKS: &lt;a href="https://docs.aws.amazon.com/eks/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/eks/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Containers: &lt;a href="https://aws.amazon.com/containers/" rel="noopener noreferrer"&gt;https://aws.amazon.com/containers/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  12.16 Phase 12 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to monitoring and observability, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain the purpose of Amazon ECR.&lt;/li&gt;
&lt;li&gt;[ ] Create an ECR repository and push Docker images.&lt;/li&gt;
&lt;li&gt;[ ] Understand ECS clusters, tasks, task definitions, and services.&lt;/li&gt;
&lt;li&gt;[ ] Explain the EC2 and Fargate compute options.&lt;/li&gt;
&lt;li&gt;[ ] Understand AWS Fargate.&lt;/li&gt;
&lt;li&gt;[ ] Explain Amazon EKS architecture.&lt;/li&gt;
&lt;li&gt;[ ] Connect kubectl to an EKS cluster.&lt;/li&gt;
&lt;li&gt;[ ] Understand EKS managed node groups and Fargate profiles.&lt;/li&gt;
&lt;li&gt;[ ] Configure application access through AWS load balancers.&lt;/li&gt;
&lt;li&gt;[ ] Understand ECS vs. EKS trade-offs.&lt;/li&gt;
&lt;li&gt;[ ] Apply container security best practices.&lt;/li&gt;
&lt;li&gt;[ ] Monitor and troubleshoot container workloads.&lt;/li&gt;
&lt;li&gt;[ ] Complete at least two practical AWS container projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt; By the end of this phase, you should be able to store Docker images in ECR, deploy applications using ECS or EKS, understand Fargate, configure application networking, and troubleshoot containerized workloads running on AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 13: Monitoring, Logging, and Observability (Weeks 52–55)
&lt;/h2&gt;

&lt;p&gt;Deploying an application successfully is not the end of a DevOps Engineer's responsibility.&lt;/p&gt;

&lt;p&gt;After deployment, you must ensure that the application and infrastructure continue working correctly.&lt;/p&gt;

&lt;p&gt;Consider an e-commerce application running on AWS.&lt;/p&gt;

&lt;p&gt;One day, customers report that the website is loading slowly. Some users cannot complete payments, and the application occasionally returns errors.&lt;/p&gt;

&lt;p&gt;A DevOps Engineer must investigate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the EC2 instance running out of memory?&lt;/li&gt;
&lt;li&gt;Is CPU utilization unusually high?&lt;/li&gt;
&lt;li&gt;Is the database responding slowly?&lt;/li&gt;
&lt;li&gt;Are application errors increasing?&lt;/li&gt;
&lt;li&gt;Is the load balancer reporting unhealthy targets?&lt;/li&gt;
&lt;li&gt;Are containers restarting repeatedly?&lt;/li&gt;
&lt;li&gt;Did a recent deployment introduce the problem?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monitoring, logging, and observability help answer these questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.1 What Is Monitoring?
&lt;/h3&gt;

&lt;p&gt;Monitoring is the process of continuously collecting and examining information about systems and applications to understand their health and performance.&lt;/p&gt;

&lt;p&gt;It helps identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure failures.&lt;/li&gt;
&lt;li&gt;High CPU and memory usage.&lt;/li&gt;
&lt;li&gt;Application errors.&lt;/li&gt;
&lt;li&gt;Network problems.&lt;/li&gt;
&lt;li&gt;Database performance issues.&lt;/li&gt;
&lt;li&gt;Service availability problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose an EC2 instance normally uses 30% CPU. Suddenly, CPU utilization increases to 95%.&lt;/p&gt;

&lt;p&gt;A monitoring system can detect this change and trigger an alert.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.2 What Is Logging?
&lt;/h3&gt;

&lt;p&gt;Logging is the process of recording events that occur inside an application or infrastructure component.&lt;/p&gt;

&lt;p&gt;Logs help engineers understand what happened before, during, and after an issue.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application startup messages.&lt;/li&gt;
&lt;li&gt;Authentication failures.&lt;/li&gt;
&lt;li&gt;Database connection errors.&lt;/li&gt;
&lt;li&gt;API request information.&lt;/li&gt;
&lt;li&gt;Container startup failures.&lt;/li&gt;
&lt;li&gt;Operating system events.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example application log:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2026-10-12 10:00:00 INFO Application started
2026-10-12 10:01:15 INFO Database connection successful
2026-10-12 10:02:30 ERROR Payment service connection failed
2026-10-12 10:02:35 WARN Retrying payment request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Logs provide detailed event information that helps troubleshoot application behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.3 What Is Observability?
&lt;/h3&gt;

&lt;p&gt;Observability is the ability to understand the internal state and behavior of a system by examining the information it produces.&lt;/p&gt;

&lt;p&gt;The three commonly discussed observability signals are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;Traces&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Metrics:&lt;/strong&gt; Numerical measurements that describe system behavior over time.&lt;/p&gt;

&lt;p&gt;Examples: CPU utilization, memory usage, request count, and error rate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs:&lt;/strong&gt; Records of individual events.&lt;/p&gt;

&lt;p&gt;Examples: application errors, authentication events, and database failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traces:&lt;/strong&gt; Information showing how a request travels across multiple services.&lt;/p&gt;

&lt;p&gt;For example, an online shopping request may pass through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Request
     |
     v
API Gateway
     |
     v
Authentication Service
     |
     v
Order Service
     |
     v
Payment Service
     |
     v
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Distributed tracing helps identify which service is responsible for a delay or failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.4 Monitoring vs. Logging vs. Observability
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring&lt;/td&gt;
&lt;td&gt;Detect system health problems&lt;/td&gt;
&lt;td&gt;CPU usage reaches 95%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging&lt;/td&gt;
&lt;td&gt;Understand recorded events&lt;/td&gt;
&lt;td&gt;Database connection failure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Investigate system behavior&lt;/td&gt;
&lt;td&gt;Identify which microservice caused request latency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These concepts complement one another. Monitoring identifies symptoms, logs provide event details, and traces help follow requests across distributed systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.5 Important Monitoring Metrics
&lt;/h3&gt;

&lt;p&gt;A DevOps Engineer should understand the following metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CPU Utilization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures how much processing capacity is being used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory Utilization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shows how much system memory is consumed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disk Utilization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures disk capacity usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disk I/O&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tracks disk read and write activity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network Traffic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures data transferred into and out of a system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request Rate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures the number of requests received over a period.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error Rate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures how many requests or operations fail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Latency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures how long an operation takes to complete.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Availability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measures the proportion of time a service is available.&lt;/p&gt;

&lt;p&gt;A useful starting point for application monitoring is to understand the RED method:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rate: Requests per second.&lt;/li&gt;
&lt;li&gt;Errors: Failed requests.&lt;/li&gt;
&lt;li&gt;Duration: Request response time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For infrastructure monitoring, the USE method is also useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utilization: How busy a resource is.&lt;/li&gt;
&lt;li&gt;Saturation: How much work is waiting.&lt;/li&gt;
&lt;li&gt;Errors: Resource-related errors.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  13.6 Amazon CloudWatch
&lt;/h3&gt;

&lt;p&gt;Amazon CloudWatch is an AWS monitoring and observability service.&lt;/p&gt;

&lt;p&gt;It helps monitor AWS resources, collect application data, create alarms, and visualize system health.&lt;/p&gt;

&lt;p&gt;Important CloudWatch features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metrics.&lt;/li&gt;
&lt;li&gt;Logs.&lt;/li&gt;
&lt;li&gt;Alarms.&lt;/li&gt;
&lt;li&gt;Dashboards.&lt;/li&gt;
&lt;li&gt;Log Insights.&lt;/li&gt;
&lt;li&gt;Events and integrations with other AWS services.&lt;/li&gt;
&lt;li&gt;Application monitoring capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  CloudWatch Metrics
&lt;/h4&gt;

&lt;p&gt;Metrics are numerical measurements collected over time.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 CPU utilization.&lt;/li&gt;
&lt;li&gt;EBS volume metrics.&lt;/li&gt;
&lt;li&gt;Application Load Balancer request count.&lt;/li&gt;
&lt;li&gt;RDS database metrics.&lt;/li&gt;
&lt;li&gt;ECS service metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can use metrics to understand resource utilization and application performance.&lt;/p&gt;

&lt;h4&gt;
  
  
  CloudWatch Logs
&lt;/h4&gt;

&lt;p&gt;CloudWatch Logs allows you to collect, store, and analyze log data.&lt;/p&gt;

&lt;p&gt;Important concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Group:&lt;/strong&gt; A logical collection of log streams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Stream:&lt;/strong&gt; A sequence of log events from a particular source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log Event:&lt;/strong&gt; A recorded event with a timestamp and message.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CloudWatch Logs
      |
      v
Log Group
      |
      +----------+
      |          |
      v          v
Log Stream 1  Log Stream 2
      |          |
      v          v
Log Events   Log Events
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CloudWatch Alarms
&lt;/h4&gt;

&lt;p&gt;CloudWatch Alarms monitor metrics and perform configured actions when specified conditions are met.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;If EC2 CPU utilization exceeds 80% for a configured evaluation period, an alarm can enter the ALARM state.&lt;/p&gt;

&lt;p&gt;You can configure notifications through Amazon SNS and integrate alarms with other operational workflows.&lt;/p&gt;

&lt;h4&gt;
  
  
  CloudWatch Dashboards
&lt;/h4&gt;

&lt;p&gt;Dashboards provide a visual representation of metrics from AWS resources and applications.&lt;/p&gt;

&lt;p&gt;A dashboard can display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 CPU utilization.&lt;/li&gt;
&lt;li&gt;Memory metrics collected through an appropriate agent.&lt;/li&gt;
&lt;li&gt;Application request count.&lt;/li&gt;
&lt;li&gt;Error rate.&lt;/li&gt;
&lt;li&gt;Database connections.&lt;/li&gt;
&lt;li&gt;Load balancer response time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  13.7 CloudWatch Agent
&lt;/h3&gt;

&lt;p&gt;The CloudWatch Agent can collect additional information from EC2 instances and on-premises servers.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory utilization.&lt;/li&gt;
&lt;li&gt;Disk utilization.&lt;/li&gt;
&lt;li&gt;Filesystem usage.&lt;/li&gt;
&lt;li&gt;Application log files.&lt;/li&gt;
&lt;li&gt;Additional operating system metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important: EC2's basic monitoring metrics do not automatically provide every operating system metric. Additional configuration, such as the CloudWatch Agent, may be required.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.8 CloudWatch Logs Insights
&lt;/h3&gt;

&lt;p&gt;CloudWatch Logs Insights allows you to query and analyze log data.&lt;/p&gt;

&lt;p&gt;Example query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;fields&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="k"&gt;like&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ERROR&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;sort&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="k"&gt;desc&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="k"&gt;limit&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query finds recent log events containing the word &lt;code&gt;ERROR&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You should learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search logs.&lt;/li&gt;
&lt;li&gt;Filter events.&lt;/li&gt;
&lt;li&gt;Identify repeated errors.&lt;/li&gt;
&lt;li&gt;Analyze application failures.&lt;/li&gt;
&lt;li&gt;Compare events across time periods.&lt;/li&gt;
&lt;li&gt;Investigate production incidents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  13.9 Prometheus
&lt;/h3&gt;

&lt;p&gt;Prometheus is an open-source monitoring and alerting toolkit.&lt;/p&gt;

&lt;p&gt;It is widely used in cloud-native and Kubernetes environments.&lt;/p&gt;

&lt;p&gt;Important features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time-series metrics collection.&lt;/li&gt;
&lt;li&gt;PromQL query language.&lt;/li&gt;
&lt;li&gt;Metric storage.&lt;/li&gt;
&lt;li&gt;Alerting integrations.&lt;/li&gt;
&lt;li&gt;Service discovery.&lt;/li&gt;
&lt;li&gt;Integration with Grafana.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prometheus commonly collects metrics by scraping HTTP endpoints exposed by applications or exporters.&lt;/p&gt;

&lt;p&gt;Important concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metric:&lt;/strong&gt; A measurement collected from a monitored system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time Series:&lt;/strong&gt; A sequence of metric values identified by metric name and labels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exporter:&lt;/strong&gt; A component that exposes metrics in a format Prometheus can collect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PromQL:&lt;/strong&gt; The query language used to retrieve and analyze Prometheus metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prometheus Server:&lt;/strong&gt; The main component responsible for collecting and storing metrics.&lt;/p&gt;

&lt;p&gt;Example PromQL query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query shows whether discovered targets are currently reachable.&lt;/p&gt;

&lt;p&gt;Another example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rate(http_requests_total[5m])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This calculates the per-second average increase in the request counter over the previous five minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.10 Grafana
&lt;/h3&gt;

&lt;p&gt;Grafana is an observability and visualization platform.&lt;/p&gt;

&lt;p&gt;It can connect to multiple data sources, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prometheus.&lt;/li&gt;
&lt;li&gt;Amazon CloudWatch.&lt;/li&gt;
&lt;li&gt;Loki.&lt;/li&gt;
&lt;li&gt;Elasticsearch-compatible data sources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It helps engineers create dashboards to understand system performance.&lt;/p&gt;

&lt;p&gt;Example dashboard panels:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Panel&lt;/th&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU Usage&lt;/td&gt;
&lt;td&gt;CPU utilization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory Usage&lt;/td&gt;
&lt;td&gt;Memory consumption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Request Rate&lt;/td&gt;
&lt;td&gt;Requests per second&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Error Rate&lt;/td&gt;
&lt;td&gt;Failed requests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Response Time&lt;/td&gt;
&lt;td&gt;Application latency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod Status&lt;/td&gt;
&lt;td&gt;Kubernetes workload health&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prometheus collects and stores metrics, while Grafana helps visualize them.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.11 ELK Stack and OpenSearch
&lt;/h3&gt;

&lt;p&gt;Logs from multiple servers and applications can become difficult to manage.&lt;/p&gt;

&lt;p&gt;Centralized logging platforms help collect, search, and analyze logs in one place.&lt;/p&gt;

&lt;p&gt;The traditional ELK Stack consists of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Elasticsearch:&lt;/strong&gt; Search and analytics engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logstash:&lt;/strong&gt; Data collection and processing pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kibana:&lt;/strong&gt; Visualization and exploration interface.&lt;/p&gt;

&lt;p&gt;Be aware that the Elasticsearch and Kibana ecosystem has evolved, including changes in licensing and distribution. Understand the versions and products being used by the organization.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.12 Amazon OpenSearch Service
&lt;/h3&gt;

&lt;p&gt;Amazon OpenSearch Service is a managed service for search, analytics, and log analysis.&lt;/p&gt;

&lt;p&gt;It can be used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralize application logs.&lt;/li&gt;
&lt;li&gt;Search log events.&lt;/li&gt;
&lt;li&gt;Analyze operational information.&lt;/li&gt;
&lt;li&gt;Create visualizations.&lt;/li&gt;
&lt;li&gt;Investigate application failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simplified centralized logging architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2 Logs --------+
                 |
ECS Logs --------+
                 |
EKS Logs --------+----&amp;gt; Log Collection
                 |            |
Application Logs-+            v
                         Processing
                              |
                              v
                     Amazon OpenSearch
                              |
                              v
                       Dashboards
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  13.13 SLI, SLO, and SLA
&lt;/h3&gt;

&lt;p&gt;These concepts are important in Site Reliability Engineering (SRE).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SLI — Service Level Indicator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A measurable value that represents service performance.&lt;/p&gt;

&lt;p&gt;Example: 99.9% of requests complete successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SLO — Service Level Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A target for a service-level indicator.&lt;/p&gt;

&lt;p&gt;Example: The application should maintain 99.9% successful requests over a defined measurement window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SLA — Service Level Agreement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A formal agreement between a service provider and customer that defines expected service levels and may specify consequences when commitments are not met.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SLI&lt;/td&gt;
&lt;td&gt;What you measure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SLO&lt;/td&gt;
&lt;td&gt;What target you aim to achieve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SLA&lt;/td&gt;
&lt;td&gt;What you formally commit to&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  13.14 Alerting and Incident Management
&lt;/h3&gt;

&lt;p&gt;Monitoring is useful only when important problems reach the people responsible for resolving them.&lt;/p&gt;

&lt;p&gt;Alerting systems notify engineers when defined conditions occur.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High CPU utilization.&lt;/li&gt;
&lt;li&gt;Application error rate exceeds a threshold.&lt;/li&gt;
&lt;li&gt;Database connections approach capacity.&lt;/li&gt;
&lt;li&gt;Kubernetes Pods repeatedly restart.&lt;/li&gt;
&lt;li&gt;An application endpoint becomes unavailable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good alert should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Actionable.&lt;/li&gt;
&lt;li&gt;Relevant.&lt;/li&gt;
&lt;li&gt;Clear.&lt;/li&gt;
&lt;li&gt;Prioritized.&lt;/li&gt;
&lt;li&gt;Linked to useful diagnostic information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid creating too many noisy alerts. Excessive notifications can cause alert fatigue.&lt;/p&gt;

&lt;h4&gt;
  
  
  Incident Response Workflow
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Problem Detected
       |
       v
Alert Triggered
       |
       v
Incident Assigned
       |
       v
Investigate Logs and Metrics
       |
       v
Identify Root Cause
       |
       v
Apply Fix or Mitigation
       |
       v
Verify Recovery
       |
       v
Document Lessons Learned
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A post-incident review should focus on understanding the causes and improving systems rather than assigning blame.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.15 Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: EC2 Monitoring with CloudWatch&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Launch a small EC2 instance, monitor CPU utilization, and create a CloudWatch dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Application Log Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure an application to write logs and collect them using the CloudWatch Agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 3: CloudWatch Alarm and Notification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an alarm for a suitable metric and configure an SNS notification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Prometheus and Grafana&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set up Prometheus and Grafana in a local learning environment. Collect system metrics and build dashboards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Kubernetes Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Monitor Kubernetes node and Pod metrics using a suitable Prometheus and Grafana setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 6: Centralized Logging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Collect logs from an application and send them to an appropriate centralized logging platform. Explore OpenSearch as one possible destination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 7: Production Incident Simulation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simulate an application failure, identify it through monitoring, investigate the logs, and document the resolution.&lt;/p&gt;

&lt;h3&gt;
  
  
  13.16 Recommended Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Amazon CloudWatch: &lt;a href="https://docs.aws.amazon.com/cloudwatch/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cloudwatch/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Prometheus: &lt;a href="https://prometheus.io/docs/" rel="noopener noreferrer"&gt;https://prometheus.io/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Grafana: &lt;a href="https://grafana.com/docs/" rel="noopener noreferrer"&gt;https://grafana.com/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenSearch: &lt;a href="https://opensearch.org/docs/" rel="noopener noreferrer"&gt;https://opensearch.org/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google SRE Books: &lt;a href="https://sre.google/books/" rel="noopener noreferrer"&gt;https://sre.google/books/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kubernetes Monitoring: &lt;a href="https://kubernetes.io/docs/tasks/debug/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/tasks/debug/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  13.17 Phase 13 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to security and DevSecOps, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain monitoring, logging, and observability.&lt;/li&gt;
&lt;li&gt;[ ] Understand metrics, logs, and distributed traces.&lt;/li&gt;
&lt;li&gt;[ ] Identify important infrastructure and application metrics.&lt;/li&gt;
&lt;li&gt;[ ] Configure CloudWatch metrics, logs, and alarms.&lt;/li&gt;
&lt;li&gt;[ ] Create CloudWatch dashboards.&lt;/li&gt;
&lt;li&gt;[ ] Use CloudWatch Logs Insights.&lt;/li&gt;
&lt;li&gt;[ ] Understand the purpose of the CloudWatch Agent.&lt;/li&gt;
&lt;li&gt;[ ] Explain Prometheus architecture and PromQL basics.&lt;/li&gt;
&lt;li&gt;[ ] Create Grafana dashboards.&lt;/li&gt;
&lt;li&gt;[ ] Understand centralized logging and OpenSearch.&lt;/li&gt;
&lt;li&gt;[ ] Explain SLI, SLO, and SLA.&lt;/li&gt;
&lt;li&gt;[ ] Configure meaningful alerts.&lt;/li&gt;
&lt;li&gt;[ ] Follow an incident response workflow.&lt;/li&gt;
&lt;li&gt;[ ] Complete at least two monitoring and troubleshooting projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt; By the end of this phase, you should be able to monitor AWS infrastructure and containerized applications, analyze logs, build observability dashboards, configure alerts, and investigate operational incidents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 14: Security and DevSecOps (Weeks 56–58)
&lt;/h2&gt;

&lt;p&gt;Security is a fundamental responsibility of every DevOps Engineer.&lt;/p&gt;

&lt;p&gt;Modern applications use cloud infrastructure, containers, APIs, databases, third-party libraries, and automated deployment pipelines. Every component can introduce security risks if it is not configured correctly.&lt;/p&gt;

&lt;p&gt;Consider an organization deploying an application to AWS.&lt;/p&gt;

&lt;p&gt;Even if the application works correctly, it may still have serious security problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS credentials are stored inside source code.&lt;/li&gt;
&lt;li&gt;An S3 bucket is publicly accessible.&lt;/li&gt;
&lt;li&gt;An IAM user has unnecessary administrative permissions.&lt;/li&gt;
&lt;li&gt;A Docker image contains vulnerable software packages.&lt;/li&gt;
&lt;li&gt;A production server exposes unnecessary network ports.&lt;/li&gt;
&lt;li&gt;Application secrets are visible in pipeline logs.&lt;/li&gt;
&lt;li&gt;An attacker exploits an outdated application dependency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DevSecOps addresses these challenges by integrating security into the entire software development and deployment lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.1 What Is DevSecOps?
&lt;/h3&gt;

&lt;p&gt;DevSecOps stands for Development, Security, and Operations.&lt;/p&gt;

&lt;p&gt;It is an approach that integrates security practices into software development, infrastructure management, testing, and deployment.&lt;/p&gt;

&lt;p&gt;Traditionally, security checks were often performed near the end of the software development lifecycle.&lt;/p&gt;

&lt;p&gt;DevSecOps encourages teams to identify and resolve security issues earlier.&lt;/p&gt;

&lt;p&gt;This approach is commonly called &lt;strong&gt;Shift Left Security&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of waiting until production deployment, security checks are introduced during development and throughout the CI/CD pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.2 DevOps vs. DevSecOps
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;DevOps&lt;/th&gt;
&lt;th&gt;DevSecOps&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrates development and operations&lt;/td&gt;
&lt;td&gt;Integrates development, security, and operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focuses on automation and delivery&lt;/td&gt;
&lt;td&gt;Includes security automation throughout delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May perform security checks separately&lt;/td&gt;
&lt;td&gt;Integrates security checks into workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automates build and deployment&lt;/td&gt;
&lt;td&gt;Automates build, deployment, and security validation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;DevSecOps does not replace DevOps. It extends DevOps practices with continuous security controls.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.3 Understanding the DevSecOps Lifecycle
&lt;/h3&gt;

&lt;p&gt;A secure software delivery lifecycle can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Plan
  |
  v
Develop
  |
  v
Source Code Security Checks
  |
  v
Build Application
  |
  v
Dependency Scanning
  |
  v
Build Container Image
  |
  v
Container Image Scanning
  |
  v
Infrastructure Security Checks
  |
  v
Deploy to Environment
  |
  v
Runtime Monitoring
  |
  v
Incident Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Security is not a single pipeline stage. It is a continuous responsibility throughout the lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.4 IAM Security and Least Privilege
&lt;/h3&gt;

&lt;p&gt;AWS Identity and Access Management (IAM) controls access to AWS resources.&lt;/p&gt;

&lt;p&gt;One of the most important security principles is &lt;strong&gt;Least Privilege&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It means providing only the permissions required to perform a specific task.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A CI/CD pipeline that only needs to push Docker images to one ECR repository should not receive full administrator permissions.&lt;/p&gt;

&lt;p&gt;Important IAM concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users.&lt;/li&gt;
&lt;li&gt;Groups.&lt;/li&gt;
&lt;li&gt;Roles.&lt;/li&gt;
&lt;li&gt;Policies.&lt;/li&gt;
&lt;li&gt;Permission boundaries.&lt;/li&gt;
&lt;li&gt;Trust policies.&lt;/li&gt;
&lt;li&gt;Temporary credentials.&lt;/li&gt;
&lt;li&gt;Multi-factor authentication (MFA).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security best practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Avoid using the AWS root account for daily operations.&lt;/li&gt;
&lt;li&gt;Enable MFA for privileged identities.&lt;/li&gt;
&lt;li&gt;Prefer IAM roles and temporary credentials.&lt;/li&gt;
&lt;li&gt;Avoid unnecessary IAM users with long-lived access keys.&lt;/li&gt;
&lt;li&gt;Restrict access to specific resources.&lt;/li&gt;
&lt;li&gt;Review unused permissions.&lt;/li&gt;
&lt;li&gt;Separate development and production permissions.&lt;/li&gt;
&lt;li&gt;Audit access using AWS CloudTrail.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  14.5 AWS Secrets Management
&lt;/h3&gt;

&lt;p&gt;Applications and pipelines often require sensitive information, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database passwords.&lt;/li&gt;
&lt;li&gt;API keys.&lt;/li&gt;
&lt;li&gt;Access tokens.&lt;/li&gt;
&lt;li&gt;Third-party service credentials.&lt;/li&gt;
&lt;li&gt;Encryption keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storing these values directly in application source code or configuration files creates security risks.&lt;/p&gt;

&lt;p&gt;AWS provides services for managing sensitive information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Secrets Manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stores, retrieves, and manages secrets. It supports integrations for secret rotation in suitable configurations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Systems Manager Parameter Store&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides centralized management of configuration data and secrets, with encryption capabilities for secure parameters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Key Management Service (KMS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides key-management capabilities for cryptographic operations and integration with AWS encryption services.&lt;/p&gt;

&lt;p&gt;Important practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never commit secrets to Git repositories.&lt;/li&gt;
&lt;li&gt;Do not include secrets in Docker images.&lt;/li&gt;
&lt;li&gt;Restrict secret access through IAM.&lt;/li&gt;
&lt;li&gt;Avoid printing secrets in pipeline logs.&lt;/li&gt;
&lt;li&gt;Rotate credentials where appropriate.&lt;/li&gt;
&lt;li&gt;Use encrypted storage for sensitive information.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  14.6 Encryption: At Rest and In Transit
&lt;/h3&gt;

&lt;p&gt;Encryption protects information from unauthorized access.&lt;/p&gt;

&lt;p&gt;There are two important concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encryption at Rest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Protects data stored on disks, databases, object storage, and backups.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon S3 server-side encryption.&lt;/li&gt;
&lt;li&gt;EBS volume encryption.&lt;/li&gt;
&lt;li&gt;RDS encryption.&lt;/li&gt;
&lt;li&gt;Encrypted backups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Encryption in Transit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Protects data while it moves between systems.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPS using TLS.&lt;/li&gt;
&lt;li&gt;Secure API communication.&lt;/li&gt;
&lt;li&gt;Encrypted database connections.&lt;/li&gt;
&lt;li&gt;Secure communication between application components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A secure AWS architecture should consider both.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.7 Network Security in AWS
&lt;/h3&gt;

&lt;p&gt;AWS provides several networking and security controls.&lt;/p&gt;

&lt;p&gt;Important services and concepts include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Act as stateful virtual firewalls associated with supported resources and network interfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network ACLs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provide stateless network filtering at the subnet level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS WAF&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Helps protect supported web applications against common web exploits and unwanted traffic patterns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Shield&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides protection against distributed denial-of-service (DDoS) attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Network Firewall&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides managed network protection and traffic filtering for supported VPC architectures.&lt;/p&gt;

&lt;p&gt;Security practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Expose only required ports.&lt;/li&gt;
&lt;li&gt;Avoid unrestricted SSH access from the internet.&lt;/li&gt;
&lt;li&gt;Use private subnets for internal workloads where appropriate.&lt;/li&gt;
&lt;li&gt;Restrict database access to approved application sources.&lt;/li&gt;
&lt;li&gt;Use HTTPS for public applications.&lt;/li&gt;
&lt;li&gt;Review security group rules regularly.&lt;/li&gt;
&lt;li&gt;Monitor unusual network activity.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  14.8 Vulnerability Management
&lt;/h3&gt;

&lt;p&gt;A vulnerability is a weakness in software, infrastructure, or configuration that could be exploited.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Outdated operating system packages.&lt;/li&gt;
&lt;li&gt;Vulnerable application libraries.&lt;/li&gt;
&lt;li&gt;Insecure container images.&lt;/li&gt;
&lt;li&gt;Misconfigured cloud resources.&lt;/li&gt;
&lt;li&gt;Weak authentication.&lt;/li&gt;
&lt;li&gt;Exposed credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A vulnerability management process includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify assets.&lt;/li&gt;
&lt;li&gt;Scan for vulnerabilities.&lt;/li&gt;
&lt;li&gt;Evaluate severity and exploitability.&lt;/li&gt;
&lt;li&gt;Prioritize findings.&lt;/li&gt;
&lt;li&gt;Apply patches or mitigations.&lt;/li&gt;
&lt;li&gt;Verify remediation.&lt;/li&gt;
&lt;li&gt;Monitor continuously.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  14.9 Important DevSecOps Security Testing Types
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SAST — Static Application Security Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examines source code or compiled application artifacts for potential security issues without executing the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DAST — Dynamic Application Security Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tests a running application to identify potential security weaknesses from the outside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SCA — Software Composition Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identifies vulnerable or risky third-party dependencies and open-source components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Container Image Scanning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checks container images for known vulnerabilities, misconfigurations, and other security concerns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure as Code Scanning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examines Terraform and other infrastructure definitions for insecure configurations before deployment.&lt;/p&gt;

&lt;p&gt;These methods complement each other. No single scanner can identify every possible security issue.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.10 Common DevSecOps Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Primary Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SonarQube&lt;/td&gt;
&lt;td&gt;Code quality and supported static analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trivy&lt;/td&gt;
&lt;td&gt;Vulnerability and misconfiguration scanning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checkov&lt;/td&gt;
&lt;td&gt;Infrastructure as Code security scanning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OWASP ZAP&lt;/td&gt;
&lt;td&gt;Dynamic application security testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Snyk&lt;/td&gt;
&lt;td&gt;Developer security and dependency analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Dependabot&lt;/td&gt;
&lt;td&gt;Dependency update and vulnerability workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gitleaks&lt;/td&gt;
&lt;td&gt;Secret detection in repositories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Security Hub&lt;/td&gt;
&lt;td&gt;Centralized security findings and posture management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Learn the purpose of each tool and gain hands-on experience with a few of them.&lt;/p&gt;

&lt;p&gt;You do not need to master every tool to become an effective DevOps Engineer.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.11 Container Security
&lt;/h3&gt;

&lt;p&gt;Docker images and running containers must be secured.&lt;/p&gt;

&lt;p&gt;Important practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use trusted base images.&lt;/li&gt;
&lt;li&gt;Prefer minimal images.&lt;/li&gt;
&lt;li&gt;Scan images before publishing them.&lt;/li&gt;
&lt;li&gt;Avoid unnecessary packages.&lt;/li&gt;
&lt;li&gt;Do not run applications as root without a valid requirement.&lt;/li&gt;
&lt;li&gt;Avoid embedding credentials in images.&lt;/li&gt;
&lt;li&gt;Use read-only filesystems where practical.&lt;/li&gt;
&lt;li&gt;Restrict container capabilities.&lt;/li&gt;
&lt;li&gt;Keep images updated.&lt;/li&gt;
&lt;li&gt;Use image digests or controlled image tags for reproducibility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For Kubernetes environments, also learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pod Security Standards.&lt;/li&gt;
&lt;li&gt;RBAC.&lt;/li&gt;
&lt;li&gt;Network Policies.&lt;/li&gt;
&lt;li&gt;Service Account permissions.&lt;/li&gt;
&lt;li&gt;Secret protection.&lt;/li&gt;
&lt;li&gt;Admission controls.&lt;/li&gt;
&lt;li&gt;Workload security contexts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  14.12 CI/CD Pipeline Security
&lt;/h3&gt;

&lt;p&gt;CI/CD pipelines often have access to source code, cloud credentials, container registries, and production environments.&lt;/p&gt;

&lt;p&gt;A compromised pipeline can therefore create serious security risks.&lt;/p&gt;

&lt;p&gt;Follow these practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use short-lived credentials where possible.&lt;/li&gt;
&lt;li&gt;Use OIDC to authenticate GitHub Actions to AWS.&lt;/li&gt;
&lt;li&gt;Restrict IAM permissions.&lt;/li&gt;
&lt;li&gt;Protect important branches.&lt;/li&gt;
&lt;li&gt;Require reviews for sensitive changes.&lt;/li&gt;
&lt;li&gt;Scan dependencies and container images.&lt;/li&gt;
&lt;li&gt;Protect pipeline secrets.&lt;/li&gt;
&lt;li&gt;Avoid executing untrusted code with privileged credentials.&lt;/li&gt;
&lt;li&gt;Pin and review third-party actions.&lt;/li&gt;
&lt;li&gt;Restrict production deployment approvals.&lt;/li&gt;
&lt;li&gt;Maintain audit logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  14.13 AWS Security Monitoring
&lt;/h3&gt;

&lt;p&gt;AWS provides services that help identify and investigate security risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS CloudTrail&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Records AWS account activity and API events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon GuardDuty&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provides threat detection using supported AWS data sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Security Hub&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aggregates and helps manage security findings and security posture information across supported services and accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Config&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tracks resource configuration changes and evaluates resources against rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Inspector&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Assesses supported workloads for vulnerabilities and exposure risks.&lt;/p&gt;

&lt;p&gt;Understand what each service does and how its findings can be integrated into an organization's security operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.14 Security Incident Response
&lt;/h3&gt;

&lt;p&gt;A security incident occurs when a security control fails or a threat affects the environment.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unauthorized access to an AWS account.&lt;/li&gt;
&lt;li&gt;Leaked application credentials.&lt;/li&gt;
&lt;li&gt;Public exposure of confidential data.&lt;/li&gt;
&lt;li&gt;Suspicious API activity.&lt;/li&gt;
&lt;li&gt;Malware detected on a server.&lt;/li&gt;
&lt;li&gt;A vulnerable container deployed to production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simplified response process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Security Alert
      |
      v
Identify Affected Resources
      |
      v
Assess Severity and Impact
      |
      v
Contain the Incident
      |
      v
Investigate Evidence
      |
      v
Remove the Threat
      |
      v
Recover Services
      |
      v
Document and Improve Controls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Incident response must follow the organization's approved procedures. Preserve relevant evidence and involve the appropriate security team.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.15 Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Secure an AWS IAM Role&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a role with limited permissions for a specific application task. Verify that unauthorized actions are denied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 2: Manage Application Secrets&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Store a test application secret in AWS Secrets Manager or Systems Manager Parameter Store and retrieve it using an appropriately restricted IAM role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Scan Docker Images&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Build a Docker image and scan it using Trivy. Review the findings and rebuild the image using updated dependencies or a safer base image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Scan Terraform Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Checkov to identify potential security issues in Terraform files. Fix the findings and rerun the scan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Secure a CI/CD Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Build a GitHub Actions pipeline that runs tests, performs security checks, and uses OIDC for AWS authentication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 6: AWS Security Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Explore CloudTrail, GuardDuty, AWS Config, and Security Hub. Understand how findings can help identify suspicious activity and configuration risks.&lt;/p&gt;

&lt;h3&gt;
  
  
  14.16 Recommended Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS Security Documentation: &lt;a href="https://docs.aws.amazon.com/security/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/security/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS IAM: &lt;a href="https://docs.aws.amazon.com/iam/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/iam/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Secrets Manager: &lt;a href="https://docs.aws.amazon.com/secretsmanager/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/secretsmanager/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP: &lt;a href="https://owasp.org/" rel="noopener noreferrer"&gt;https://owasp.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP ZAP: &lt;a href="https://www.zaproxy.org/docs/" rel="noopener noreferrer"&gt;https://www.zaproxy.org/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Trivy: &lt;a href="https://trivy.dev/" rel="noopener noreferrer"&gt;https://trivy.dev/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Checkov: &lt;a href="https://www.checkov.io/" rel="noopener noreferrer"&gt;https://www.checkov.io/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SonarQube: &lt;a href="https://docs.sonarsource.com/" rel="noopener noreferrer"&gt;https://docs.sonarsource.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  14.17 Phase 14 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to advanced DevOps and SRE practices, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain DevSecOps and Shift Left Security.&lt;/li&gt;
&lt;li&gt;[ ] Apply IAM least-privilege principles.&lt;/li&gt;
&lt;li&gt;[ ] Understand IAM roles, policies, and temporary credentials.&lt;/li&gt;
&lt;li&gt;[ ] Explain AWS Secrets Manager, Parameter Store, and KMS.&lt;/li&gt;
&lt;li&gt;[ ] Understand encryption at rest and in transit.&lt;/li&gt;
&lt;li&gt;[ ] Configure basic AWS network security controls.&lt;/li&gt;
&lt;li&gt;[ ] Explain SAST, DAST, and SCA.&lt;/li&gt;
&lt;li&gt;[ ] Scan Docker images for vulnerabilities.&lt;/li&gt;
&lt;li&gt;[ ] Scan Terraform configurations.&lt;/li&gt;
&lt;li&gt;[ ] Secure CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;[ ] Understand CloudTrail, GuardDuty, Security Hub, Config, and Inspector.&lt;/li&gt;
&lt;li&gt;[ ] Explain the security incident response process.&lt;/li&gt;
&lt;li&gt;[ ] Complete at least two practical security projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt; By the end of this phase, you should be able to apply fundamental security practices across AWS infrastructure, Docker containers, Kubernetes workloads, Terraform configurations, and CI/CD pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 15: Advanced DevOps, GitOps, and Site Reliability Engineering (SRE) (Weeks 59–62)
&lt;/h2&gt;

&lt;p&gt;By this stage, you have learned the major foundations of AWS DevOps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Computer fundamentals.&lt;/li&gt;
&lt;li&gt;Linux administration.&lt;/li&gt;
&lt;li&gt;Networking.&lt;/li&gt;
&lt;li&gt;Git and GitHub.&lt;/li&gt;
&lt;li&gt;Python and Bash scripting.&lt;/li&gt;
&lt;li&gt;AWS services.&lt;/li&gt;
&lt;li&gt;Terraform and Infrastructure as Code.&lt;/li&gt;
&lt;li&gt;Docker.&lt;/li&gt;
&lt;li&gt;CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Kubernetes.&lt;/li&gt;
&lt;li&gt;AWS container services.&lt;/li&gt;
&lt;li&gt;Monitoring and observability.&lt;/li&gt;
&lt;li&gt;Security and DevSecOps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next step is to understand how experienced DevOps Engineers design reliable systems, automate complex infrastructure, manage application releases, and improve operational efficiency.&lt;/p&gt;

&lt;p&gt;This phase introduces advanced practices and tools used in modern cloud and product engineering teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.1 What Is Advanced DevOps?
&lt;/h3&gt;

&lt;p&gt;Advanced DevOps goes beyond learning individual tools.&lt;/p&gt;

&lt;p&gt;It focuses on combining infrastructure, automation, security, deployment, monitoring, and operational practices to build reliable systems.&lt;/p&gt;

&lt;p&gt;An advanced DevOps Engineer should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design production-ready cloud infrastructure.&lt;/li&gt;
&lt;li&gt;Automate infrastructure provisioning.&lt;/li&gt;
&lt;li&gt;Build reusable CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Manage Kubernetes workloads.&lt;/li&gt;
&lt;li&gt;Implement deployment strategies.&lt;/li&gt;
&lt;li&gt;Monitor application reliability.&lt;/li&gt;
&lt;li&gt;Investigate production incidents.&lt;/li&gt;
&lt;li&gt;Improve infrastructure security.&lt;/li&gt;
&lt;li&gt;Optimize cloud costs.&lt;/li&gt;
&lt;li&gt;Collaborate with development, security, and operations teams.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  15.2 Ansible for Configuration Management
&lt;/h3&gt;

&lt;p&gt;Ansible is an open-source automation tool used for configuration management, application deployment, and infrastructure automation.&lt;/p&gt;

&lt;p&gt;Terraform and Ansible solve related but different problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Primarily provisions and manages infrastructure resources.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instances.&lt;/li&gt;
&lt;li&gt;VPCs.&lt;/li&gt;
&lt;li&gt;Subnets.&lt;/li&gt;
&lt;li&gt;Security groups.&lt;/li&gt;
&lt;li&gt;Load balancers.&lt;/li&gt;
&lt;li&gt;Databases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ansible&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Primarily configures systems and automates tasks on existing infrastructure.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing software packages.&lt;/li&gt;
&lt;li&gt;Configuring Linux servers.&lt;/li&gt;
&lt;li&gt;Creating users.&lt;/li&gt;
&lt;li&gt;Managing services.&lt;/li&gt;
&lt;li&gt;Deploying applications.&lt;/li&gt;
&lt;li&gt;Updating configuration files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Important Ansible Concepts
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Control Node:&lt;/strong&gt; The machine from which Ansible commands are executed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managed Node:&lt;/strong&gt; A system that Ansible manages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inventory:&lt;/strong&gt; A list of managed hosts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Playbook:&lt;/strong&gt; A YAML file defining automation tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module:&lt;/strong&gt; A reusable unit of work that performs an operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role:&lt;/strong&gt; A reusable structure for organizing tasks, variables, handlers, and related files.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example Ansible Playbook
&lt;/h4&gt;

&lt;p&gt;Create a file named &lt;code&gt;install_nginx.yml&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install and Start Nginx&lt;/span&gt;
  &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;webservers&lt;/span&gt;
  &lt;span class="na"&gt;become&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install Nginx&lt;/span&gt;
      &lt;span class="na"&gt;ansible.builtin.package&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
        &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;present&lt;/span&gt;

    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Start Nginx&lt;/span&gt;
      &lt;span class="na"&gt;ansible.builtin.service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
        &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;started&lt;/span&gt;
        &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute the playbook:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; inventory install_nginx.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example installs Nginx and ensures that its service is running and enabled.&lt;/p&gt;

&lt;p&gt;Learn the following topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ansible installation.&lt;/li&gt;
&lt;li&gt;Inventory management.&lt;/li&gt;
&lt;li&gt;Ad hoc commands.&lt;/li&gt;
&lt;li&gt;Playbooks.&lt;/li&gt;
&lt;li&gt;Variables.&lt;/li&gt;
&lt;li&gt;Facts.&lt;/li&gt;
&lt;li&gt;Conditionals.&lt;/li&gt;
&lt;li&gt;Loops.&lt;/li&gt;
&lt;li&gt;Handlers.&lt;/li&gt;
&lt;li&gt;Roles.&lt;/li&gt;
&lt;li&gt;Templates.&lt;/li&gt;
&lt;li&gt;Ansible Vault.&lt;/li&gt;
&lt;li&gt;AWS integration.&lt;/li&gt;
&lt;li&gt;Configuration management at scale.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  15.3 GitOps
&lt;/h3&gt;

&lt;p&gt;GitOps is an operational approach in which Git repositories act as the source of truth for the desired state of infrastructure and applications.&lt;/p&gt;

&lt;p&gt;Instead of manually changing production environments, engineers declare the desired configuration in Git.&lt;/p&gt;

&lt;p&gt;A GitOps controller continuously compares the desired state with the actual state and reconciles differences.&lt;/p&gt;

&lt;h4&gt;
  
  
  How GitOps Works
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
    |
    v
Changes Kubernetes YAML
    |
    v
Pushes Changes to Git
    |
    v
Git Repository
    |
    v
GitOps Controller
    |
    v
Compares Desired and Actual State
    |
    v
Applies Required Changes
    |
    v
Kubernetes Cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version-controlled infrastructure and application configuration.&lt;/li&gt;
&lt;li&gt;Improved deployment consistency.&lt;/li&gt;
&lt;li&gt;Easier auditability.&lt;/li&gt;
&lt;li&gt;Better collaboration.&lt;/li&gt;
&lt;li&gt;Simplified rollback through Git history.&lt;/li&gt;
&lt;li&gt;Continuous reconciliation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitOps is particularly useful in Kubernetes environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.4 Argo CD
&lt;/h3&gt;

&lt;p&gt;Argo CD is a declarative GitOps continuous delivery tool for Kubernetes.&lt;/p&gt;

&lt;p&gt;It monitors Git repositories and synchronizes Kubernetes applications with the desired configuration.&lt;/p&gt;

&lt;p&gt;Important Argo CD concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application.&lt;/li&gt;
&lt;li&gt;Project.&lt;/li&gt;
&lt;li&gt;Repository.&lt;/li&gt;
&lt;li&gt;Sync.&lt;/li&gt;
&lt;li&gt;Health status.&lt;/li&gt;
&lt;li&gt;Application source.&lt;/li&gt;
&lt;li&gt;Automated synchronization.&lt;/li&gt;
&lt;li&gt;Self-healing.&lt;/li&gt;
&lt;li&gt;Pruning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Example Argo CD Workflow
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Repository
       |
       v
Kubernetes YAML Files
       |
       v
Argo CD
       |
       v
Compare Desired State
       |
       v
Synchronize Resources
       |
       v
Kubernetes Cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Learn how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Argo CD in a learning Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;Connect a Git repository.&lt;/li&gt;
&lt;li&gt;Create an Argo CD application.&lt;/li&gt;
&lt;li&gt;Synchronize an application.&lt;/li&gt;
&lt;li&gt;Understand automated synchronization.&lt;/li&gt;
&lt;li&gt;Configure health checks.&lt;/li&gt;
&lt;li&gt;Understand pruning and self-healing.&lt;/li&gt;
&lt;li&gt;Troubleshoot synchronization failures.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Official documentation: &lt;a href="https://argo-cd.readthedocs.io/" rel="noopener noreferrer"&gt;https://argo-cd.readthedocs.io/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  15.5 Deployment Strategies
&lt;/h3&gt;

&lt;p&gt;Deploying a new application version without disrupting users is an important DevOps responsibility.&lt;/p&gt;

&lt;p&gt;Learn these deployment strategies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rolling Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gradually replaces existing application instances with new versions.&lt;/p&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gradual rollout.&lt;/li&gt;
&lt;li&gt;Reduced deployment disruption.&lt;/li&gt;
&lt;li&gt;Commonly supported by Kubernetes Deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Blue-Green Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maintains two environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blue: Current production version.&lt;/li&gt;
&lt;li&gt;Green: New application version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After validating the green environment, traffic is switched to it.&lt;/p&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast traffic switching.&lt;/li&gt;
&lt;li&gt;Easier rollback when the previous environment remains available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Canary Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Releases a new version to a small percentage of users before expanding the deployment.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5% of traffic receives the new version.&lt;/li&gt;
&lt;li&gt;Engineers monitor errors and performance.&lt;/li&gt;
&lt;li&gt;If successful, the rollout expands.&lt;/li&gt;
&lt;li&gt;If problems occur, the rollout is stopped or reversed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recreate Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stops the existing version before starting the new version.&lt;/p&gt;

&lt;p&gt;It is simple but may cause downtime.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Main Idea&lt;/th&gt;
&lt;th&gt;Common Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rolling&lt;/td&gt;
&lt;td&gt;Gradually replace instances&lt;/td&gt;
&lt;td&gt;Routine application updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blue-Green&lt;/td&gt;
&lt;td&gt;Switch between two environments&lt;/td&gt;
&lt;td&gt;Controlled production releases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Canary&lt;/td&gt;
&lt;td&gt;Release to a small percentage first&lt;/td&gt;
&lt;td&gt;Risk-sensitive deployments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recreate&lt;/td&gt;
&lt;td&gt;Replace all instances at once&lt;/td&gt;
&lt;td&gt;Applications that tolerate downtime&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  15.6 Site Reliability Engineering (SRE)
&lt;/h3&gt;

&lt;p&gt;Site Reliability Engineering applies engineering practices to operations and service reliability.&lt;/p&gt;

&lt;p&gt;It focuses on creating systems that remain available, performant, scalable, and recoverable.&lt;/p&gt;

&lt;p&gt;An SRE works to balance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reliability.&lt;/li&gt;
&lt;li&gt;Application performance.&lt;/li&gt;
&lt;li&gt;Deployment speed.&lt;/li&gt;
&lt;li&gt;Operational efficiency.&lt;/li&gt;
&lt;li&gt;Automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important SRE concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service Level Indicators.&lt;/li&gt;
&lt;li&gt;Service Level Objectives.&lt;/li&gt;
&lt;li&gt;Service Level Agreements.&lt;/li&gt;
&lt;li&gt;Error budgets.&lt;/li&gt;
&lt;li&gt;Incident management.&lt;/li&gt;
&lt;li&gt;Toil reduction.&lt;/li&gt;
&lt;li&gt;Capacity planning.&lt;/li&gt;
&lt;li&gt;Reliability testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What Is Toil?
&lt;/h4&gt;

&lt;p&gt;Toil refers to repetitive, manual operational work that does not create lasting value.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manually restarting services every day.&lt;/li&gt;
&lt;li&gt;Repeatedly creating infrastructure by hand.&lt;/li&gt;
&lt;li&gt;Performing routine deployments manually.&lt;/li&gt;
&lt;li&gt;Investigating the same recurring alerts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SRE teams aim to reduce toil through automation and engineering improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.7 Error Budgets
&lt;/h3&gt;

&lt;p&gt;An error budget represents the acceptable amount of unreliability within a defined SLO measurement period.&lt;/p&gt;

&lt;p&gt;For example, suppose a service has a 99.9% availability target over a 30-day period.&lt;/p&gt;

&lt;p&gt;The remaining 0.1% represents its availability error budget.&lt;/p&gt;

&lt;p&gt;If reliability decreases and the error budget is consumed too quickly, the organization may prioritize reliability improvements over additional feature releases.&lt;/p&gt;

&lt;p&gt;Error budgets help teams make informed decisions about release velocity and reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.8 High Availability and Fault Tolerance
&lt;/h3&gt;

&lt;p&gt;High availability means designing systems to remain accessible despite certain component failures.&lt;/p&gt;

&lt;p&gt;Fault tolerance means designing systems to continue operating despite specific failures.&lt;/p&gt;

&lt;p&gt;Important concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redundancy:&lt;/strong&gt; Having additional resources available if a component fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failover:&lt;/strong&gt; Switching operations to a backup component or environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-AZ Architecture:&lt;/strong&gt; Distributing supported resources across multiple Availability Zones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto Scaling:&lt;/strong&gt; Automatically adjusting capacity based on configured requirements and policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Load Balancing:&lt;/strong&gt; Distributing traffic across multiple targets.&lt;/p&gt;

&lt;p&gt;Example AWS architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  Internet
                     |
                     v
              Application Load
                  Balancer
                     |
          +----------+----------+
          |                     |
          v                     v
      Availability Zone A   Availability Zone B
          |                     |
          v                     v
        EC2 A                 EC2 B
          |                     |
          +----------+----------+
                     |
                     v
                Database
              Multi-AZ Setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The architecture must use services and configurations that support the intended availability design. Multi-AZ deployment improves resilience but does not eliminate every failure scenario.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.9 Disaster Recovery and Business Continuity
&lt;/h3&gt;

&lt;p&gt;Disaster Recovery (DR) focuses on restoring systems and data after a major failure.&lt;/p&gt;

&lt;p&gt;Business Continuity (BC) focuses on maintaining essential business operations during disruptions.&lt;/p&gt;

&lt;p&gt;Important DR concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RTO — Recovery Time Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The maximum targeted time required to restore a service after disruption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RPO — Recovery Point Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The maximum targeted amount of data loss measured in time.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RTO: 2 hours.&lt;/li&gt;
&lt;li&gt;RPO: 15 minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means the recovery target is to restore service within two hours and limit data loss to approximately the previous 15 minutes.&lt;/p&gt;

&lt;p&gt;Important AWS services and capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Backup.&lt;/li&gt;
&lt;li&gt;Amazon S3 versioning.&lt;/li&gt;
&lt;li&gt;Cross-Region replication where appropriate.&lt;/li&gt;
&lt;li&gt;Amazon RDS automated backups.&lt;/li&gt;
&lt;li&gt;EBS snapshots.&lt;/li&gt;
&lt;li&gt;Multi-AZ deployments.&lt;/li&gt;
&lt;li&gt;Infrastructure as Code.&lt;/li&gt;
&lt;li&gt;Route 53 health checks and routing policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn the major disaster recovery approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup and restore.&lt;/li&gt;
&lt;li&gt;Pilot light.&lt;/li&gt;
&lt;li&gt;Warm standby.&lt;/li&gt;
&lt;li&gt;Multi-site active/active.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  15.10 Auto Scaling and Performance Optimization
&lt;/h3&gt;

&lt;p&gt;Applications must handle changing workloads.&lt;/p&gt;

&lt;p&gt;For example, an e-commerce application may receive more traffic during a major sale.&lt;/p&gt;

&lt;p&gt;Auto Scaling helps increase or decrease capacity based on configured policies.&lt;/p&gt;

&lt;p&gt;Learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 Auto Scaling.&lt;/li&gt;
&lt;li&gt;Target tracking scaling policies.&lt;/li&gt;
&lt;li&gt;Scheduled scaling.&lt;/li&gt;
&lt;li&gt;Predictive scaling.&lt;/li&gt;
&lt;li&gt;ECS service auto scaling.&lt;/li&gt;
&lt;li&gt;Kubernetes Horizontal Pod Autoscaler.&lt;/li&gt;
&lt;li&gt;Kubernetes Cluster Autoscaler.&lt;/li&gt;
&lt;li&gt;EKS node scaling approaches.&lt;/li&gt;
&lt;li&gt;Load testing.&lt;/li&gt;
&lt;li&gt;Application performance optimization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understand the difference between scaling vertically and scaling horizontally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical Scaling:&lt;/strong&gt; Increasing the resources of an existing machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Horizontal Scaling:&lt;/strong&gt; Adding more machines or application instances.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.11 Cloud Cost Optimization
&lt;/h3&gt;

&lt;p&gt;A DevOps Engineer must understand how infrastructure decisions affect cloud spending.&lt;/p&gt;

&lt;p&gt;Important AWS cost optimization practices include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select appropriately sized EC2 instances.&lt;/li&gt;
&lt;li&gt;Remove unused resources.&lt;/li&gt;
&lt;li&gt;Use Auto Scaling where suitable.&lt;/li&gt;
&lt;li&gt;Review storage usage.&lt;/li&gt;
&lt;li&gt;Apply S3 lifecycle policies.&lt;/li&gt;
&lt;li&gt;Monitor data transfer costs.&lt;/li&gt;
&lt;li&gt;Review NAT Gateway usage.&lt;/li&gt;
&lt;li&gt;Select appropriate database configurations.&lt;/li&gt;
&lt;li&gt;Use cost allocation tags.&lt;/li&gt;
&lt;li&gt;Monitor spending through AWS Budgets and Cost Explorer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Learn these AWS services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Cost Explorer.&lt;/li&gt;
&lt;li&gt;AWS Budgets.&lt;/li&gt;
&lt;li&gt;AWS Compute Optimizer.&lt;/li&gt;
&lt;li&gt;AWS Cost and Usage Reports.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not assume that resources are free simply because an account is eligible for Free Tier benefits. Always review current pricing and clean up unused resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.12 Advanced Infrastructure Automation
&lt;/h3&gt;

&lt;p&gt;As infrastructure grows, manual configuration becomes difficult to maintain.&lt;/p&gt;

&lt;p&gt;Learn how to combine Terraform, Ansible, GitHub Actions, and AWS services.&lt;/p&gt;

&lt;p&gt;A simplified workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Git Repository
      |
      v
CI/CD Pipeline
      |
      v
Terraform
      |
      v
Provision AWS Infrastructure
      |
      v
Ansible
      |
      v
Configure Servers
      |
      v
Docker Deployment
      |
      v
Monitoring and Alerting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create reusable Terraform modules.&lt;/li&gt;
&lt;li&gt;Maintain remote state securely.&lt;/li&gt;
&lt;li&gt;Review infrastructure changes before applying them.&lt;/li&gt;
&lt;li&gt;Automate configuration management.&lt;/li&gt;
&lt;li&gt;Validate infrastructure changes.&lt;/li&gt;
&lt;li&gt;Separate environments.&lt;/li&gt;
&lt;li&gt;Implement infrastructure deployment approvals.&lt;/li&gt;
&lt;li&gt;Monitor automation failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  15.13 Hands-On Projects
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project 1: Automated Server Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Ansible to install and configure Nginx on Linux servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 2: GitOps Deployment with Argo CD&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deploy a Kubernetes application from a Git repository and configure synchronization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 3: Blue-Green Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create two application environments and implement controlled traffic switching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 4: Canary Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Release a new application version to a small percentage of traffic and monitor its health.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 5: Highly Available AWS Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Design a multi-AZ application architecture using load balancing, Auto Scaling, and a suitable database configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 6: Disaster Recovery Simulation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a backup and recovery plan. Test restoration and document the actual recovery time and data recovery point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project 7: AWS Cost Optimization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Review a sample infrastructure design, identify potential unnecessary costs, and propose improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  15.14 Recommended Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ansible Documentation: &lt;a href="https://docs.ansible.com/" rel="noopener noreferrer"&gt;https://docs.ansible.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Argo CD Documentation: &lt;a href="https://argo-cd.readthedocs.io/" rel="noopener noreferrer"&gt;https://argo-cd.readthedocs.io/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google SRE Books: &lt;a href="https://sre.google/books/" rel="noopener noreferrer"&gt;https://sre.google/books/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Well-Architected Framework: &lt;a href="https://docs.aws.amazon.com/wellarchitected/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/wellarchitected/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Disaster Recovery: &lt;a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-disaster-recovery/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-disaster-recovery/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Cost Optimization: &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  15.15 Phase 15 Completion Checklist
&lt;/h3&gt;

&lt;p&gt;Before moving to your final portfolio and job preparation, make sure you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Explain configuration management using Ansible.&lt;/li&gt;
&lt;li&gt;[ ] Create and execute basic Ansible playbooks.&lt;/li&gt;
&lt;li&gt;[ ] Explain GitOps principles.&lt;/li&gt;
&lt;li&gt;[ ] Deploy applications using Argo CD.&lt;/li&gt;
&lt;li&gt;[ ] Understand rolling, blue-green, canary, and recreate deployments.&lt;/li&gt;
&lt;li&gt;[ ] Explain SRE and toil reduction.&lt;/li&gt;
&lt;li&gt;[ ] Understand SLI, SLO, SLA, and error budgets.&lt;/li&gt;
&lt;li&gt;[ ] Design basic high-availability AWS architectures.&lt;/li&gt;
&lt;li&gt;[ ] Understand disaster recovery strategies.&lt;/li&gt;
&lt;li&gt;[ ] Explain RTO and RPO.&lt;/li&gt;
&lt;li&gt;[ ] Configure and understand application auto scaling.&lt;/li&gt;
&lt;li&gt;[ ] Identify cloud cost optimization opportunities.&lt;/li&gt;
&lt;li&gt;[ ] Automate infrastructure and application configuration.&lt;/li&gt;
&lt;li&gt;[ ] Complete at least three advanced DevOps projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt; By the end of this phase, you should understand advanced DevOps practices, GitOps, SRE fundamentals, deployment strategies, high availability, disaster recovery, automation, and cloud cost optimization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Section 18: Build a Real-World AWS DevOps Project Portfolio (Weeks 63–66)
&lt;/h2&gt;

&lt;p&gt;Learning DevOps tools is important, but employers also want to understand how you apply those tools to solve real-world problems.&lt;/p&gt;

&lt;p&gt;A strong project portfolio demonstrates your ability to design infrastructure, automate deployments, manage containers, monitor applications, and troubleshoot failures.&lt;/p&gt;

&lt;p&gt;You do not need dozens of projects. Focus on building a few well-documented projects that demonstrate your understanding of the complete DevOps lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  18.1 What Should Your DevOps Portfolio Demonstrate?
&lt;/h3&gt;

&lt;p&gt;Your portfolio should demonstrate that you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provision cloud infrastructure using Infrastructure as Code.&lt;/li&gt;
&lt;li&gt;Configure and manage Linux servers.&lt;/li&gt;
&lt;li&gt;Build and manage Docker images and containers.&lt;/li&gt;
&lt;li&gt;Create automated CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;Deploy applications to AWS.&lt;/li&gt;
&lt;li&gt;Work with Kubernetes and container orchestration.&lt;/li&gt;
&lt;li&gt;Implement monitoring, logging, and alerting.&lt;/li&gt;
&lt;li&gt;Apply security best practices.&lt;/li&gt;
&lt;li&gt;Troubleshoot application and infrastructure issues.&lt;/li&gt;
&lt;li&gt;Document technical decisions and deployment procedures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  18.2 Recommended Projects for Your Portfolio
&lt;/h3&gt;

&lt;p&gt;Start with smaller projects and gradually move toward more complex implementations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Project 1: AWS Infrastructure Provisioning Using Terraform
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Automate the creation of AWS infrastructure using Terraform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS&lt;/li&gt;
&lt;li&gt;Terraform&lt;/li&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;Git and GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a custom VPC.&lt;/li&gt;
&lt;li&gt;Configure public and private subnets.&lt;/li&gt;
&lt;li&gt;Create appropriate route tables.&lt;/li&gt;
&lt;li&gt;Configure Internet Gateway and NAT Gateway where required.&lt;/li&gt;
&lt;li&gt;Provision EC2 instances.&lt;/li&gt;
&lt;li&gt;Configure security groups with least-privilege access.&lt;/li&gt;
&lt;li&gt;Organize infrastructure using reusable Terraform modules.&lt;/li&gt;
&lt;li&gt;Configure a remote Terraform state backend.&lt;/li&gt;
&lt;li&gt;Document the infrastructure architecture.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; A reusable infrastructure project that demonstrates Infrastructure as Code and AWS networking knowledge.&lt;/p&gt;

&lt;h4&gt;
  
  
  Project 2: Automated CI/CD Pipeline for a Web Application
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Automate application building, testing, and deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git and GitHub&lt;/li&gt;
&lt;li&gt;GitHub Actions or Jenkins&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;AWS ECR&lt;/li&gt;
&lt;li&gt;AWS ECS or EC2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a simple application.&lt;/li&gt;
&lt;li&gt;Store the application source code in GitHub.&lt;/li&gt;
&lt;li&gt;Write a Dockerfile.&lt;/li&gt;
&lt;li&gt;Build the Docker image.&lt;/li&gt;
&lt;li&gt;Run automated tests.&lt;/li&gt;
&lt;li&gt;Scan the image for vulnerabilities.&lt;/li&gt;
&lt;li&gt;Push the image to Amazon ECR.&lt;/li&gt;
&lt;li&gt;Deploy the application to an AWS compute environment.&lt;/li&gt;
&lt;li&gt;Configure deployment notifications and failure handling.&lt;/li&gt;
&lt;li&gt;Document the pipeline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; An automated pipeline that demonstrates how code moves from a repository to a running application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Project 3: Kubernetes Application Deployment
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Deploy and manage a containerized application using Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;kubectl&lt;/li&gt;
&lt;li&gt;Helm&lt;/li&gt;
&lt;li&gt;Minikube or another suitable Kubernetes environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build a Docker image.&lt;/li&gt;
&lt;li&gt;Create Kubernetes Deployment manifests.&lt;/li&gt;
&lt;li&gt;Configure Services.&lt;/li&gt;
&lt;li&gt;Create ConfigMaps and Secrets.&lt;/li&gt;
&lt;li&gt;Configure readiness and liveness probes.&lt;/li&gt;
&lt;li&gt;Set CPU and memory requests and limits.&lt;/li&gt;
&lt;li&gt;Configure persistent storage where required.&lt;/li&gt;
&lt;li&gt;Deploy the application using Helm.&lt;/li&gt;
&lt;li&gt;Perform scaling and rolling updates.&lt;/li&gt;
&lt;li&gt;Troubleshoot common Pod and Service issues.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; A Kubernetes project demonstrating application deployment, configuration, scaling, and troubleshooting.&lt;/p&gt;

&lt;h4&gt;
  
  
  Project 4: Monitoring and Observability
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Monitor application and infrastructure health.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prometheus&lt;/li&gt;
&lt;li&gt;Grafana&lt;/li&gt;
&lt;li&gt;AWS CloudWatch&lt;/li&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deploy a sample application.&lt;/li&gt;
&lt;li&gt;Collect infrastructure or application metrics.&lt;/li&gt;
&lt;li&gt;Configure Prometheus scraping.&lt;/li&gt;
&lt;li&gt;Create Grafana dashboards.&lt;/li&gt;
&lt;li&gt;Configure CloudWatch metrics and alarms where appropriate.&lt;/li&gt;
&lt;li&gt;Create alerts for selected conditions.&lt;/li&gt;
&lt;li&gt;Simulate an application failure.&lt;/li&gt;
&lt;li&gt;Investigate the failure using metrics and logs.&lt;/li&gt;
&lt;li&gt;Document the incident and resolution.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; A monitoring project demonstrating how to detect, investigate, and respond to operational issues.&lt;/p&gt;

&lt;h4&gt;
  
  
  Project 5: DevSecOps Pipeline
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Integrate security checks into the software delivery process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Actions or Jenkins&lt;/li&gt;
&lt;li&gt;SonarQube&lt;/li&gt;
&lt;li&gt;Trivy&lt;/li&gt;
&lt;li&gt;Checkov&lt;/li&gt;
&lt;li&gt;Gitleaks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an application repository.&lt;/li&gt;
&lt;li&gt;Configure source-code quality analysis.&lt;/li&gt;
&lt;li&gt;Add dependency vulnerability checks.&lt;/li&gt;
&lt;li&gt;Scan Docker images using Trivy.&lt;/li&gt;
&lt;li&gt;Scan Terraform configurations using Checkov.&lt;/li&gt;
&lt;li&gt;Detect accidentally committed secrets.&lt;/li&gt;
&lt;li&gt;Configure pipeline failure conditions for selected security findings.&lt;/li&gt;
&lt;li&gt;Document security checks and their results.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Expected outcome:&lt;/strong&gt; A CI/CD pipeline that incorporates automated security checks.&lt;/p&gt;

&lt;h3&gt;
  
  
  18.3 Flagship Capstone: End-to-End AWS DevOps Platform
&lt;/h3&gt;

&lt;p&gt;After completing the smaller projects, combine your knowledge into one comprehensive project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project objective:&lt;/strong&gt; Design and implement an automated platform for deploying, operating, monitoring, and securing a containerized application on AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suggested architecture:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Developer
                     |
                     v
                GitHub Repo
                     |
                     v
              CI/CD Pipeline
              (GitHub Actions)
                     |
          +----------+----------+
          |          |          |
          v          v          v
        Tests     Security    Build
                  Scanning
                     |
                     v
                 Docker Image
                     |
                     v
                  AWS ECR
                     |
                     v
             AWS ECS or Amazon EKS
                     |
                     v
               Load Balancer
                     |
                     v
               Web Application
                     |
          +----------+----------+
          |                     |
          v                     v
      Monitoring             Logging
   CloudWatch/Grafana       CloudWatch
          |                     |
          +----------+----------+
                     |
                     v
               Alerts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Terraform to provision the infrastructure. Store application code and deployment configuration in GitHub. Integrate security checks into the pipeline and implement monitoring and logging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core implementation requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provision AWS networking and compute infrastructure using Terraform.&lt;/li&gt;
&lt;li&gt;Build and containerize an application using Docker.&lt;/li&gt;
&lt;li&gt;Store container images in Amazon ECR.&lt;/li&gt;
&lt;li&gt;Create a CI/CD pipeline using GitHub Actions or Jenkins.&lt;/li&gt;
&lt;li&gt;Deploy the application using ECS or EKS.&lt;/li&gt;
&lt;li&gt;Configure a load balancer and appropriate network access.&lt;/li&gt;
&lt;li&gt;Implement application and infrastructure monitoring.&lt;/li&gt;
&lt;li&gt;Centralize relevant logs.&lt;/li&gt;
&lt;li&gt;Configure security controls and automated vulnerability scanning.&lt;/li&gt;
&lt;li&gt;Document deployment, rollback, and troubleshooting procedures.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You do not need to implement every advanced feature in your first version. Build a working foundation first, then improve it incrementally.&lt;/p&gt;

&lt;h3&gt;
  
  
  18.4 How to Document Projects on GitHub
&lt;/h3&gt;

&lt;p&gt;A project is more convincing when another engineer can understand and reproduce it.&lt;/p&gt;

&lt;p&gt;Use a structure similar to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws-devops-capstone/
│
├── application/
│
├── docker/
│   └── Dockerfile
│
├── terraform/
│   ├── modules/
│   ├── environments/
│   └── README.md
│
├── kubernetes/
│
├── helm/
│
├── .github/
│   └── workflows/
│
├── monitoring/
│
├── security/
│
├── docs/
│   ├── architecture/
│   ├── deployment/
│   └── troubleshooting/
│
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your README.md should explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project objective and problem statement.&lt;/li&gt;
&lt;li&gt;Technologies used.&lt;/li&gt;
&lt;li&gt;Architecture diagram.&lt;/li&gt;
&lt;li&gt;Prerequisites.&lt;/li&gt;
&lt;li&gt;Setup and deployment instructions.&lt;/li&gt;
&lt;li&gt;Infrastructure and application configuration.&lt;/li&gt;
&lt;li&gt;Security considerations.&lt;/li&gt;
&lt;li&gt;Monitoring and logging.&lt;/li&gt;
&lt;li&gt;Troubleshooting examples.&lt;/li&gt;
&lt;li&gt;Screenshots or demonstration links, where appropriate.&lt;/li&gt;
&lt;li&gt;Known limitations and future improvements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Never publish AWS access keys, passwords, private certificates, Terraform state files, or other sensitive information in a public repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  18.5 Four-Week Portfolio Plan
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Expected result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Week 63&lt;/td&gt;
&lt;td&gt;Review and improve Terraform and CI/CD projects&lt;/td&gt;
&lt;td&gt;Two documented projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 64&lt;/td&gt;
&lt;td&gt;Improve Docker and Kubernetes projects&lt;/td&gt;
&lt;td&gt;Working container and orchestration demonstrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 65&lt;/td&gt;
&lt;td&gt;Add monitoring and security&lt;/td&gt;
&lt;td&gt;Observability and DevSecOps demonstrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 66&lt;/td&gt;
&lt;td&gt;Complete and document capstone&lt;/td&gt;
&lt;td&gt;One integrated flagship project&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can adapt this schedule based on the complexity of your projects and the time available.&lt;/p&gt;

&lt;h3&gt;
  
  
  18.6 Important Portfolio Principles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Prefer working projects over copied configurations.&lt;/li&gt;
&lt;li&gt;Understand every command and configuration you use.&lt;/li&gt;
&lt;li&gt;Explain why you selected a particular AWS service or deployment strategy.&lt;/li&gt;
&lt;li&gt;Include meaningful commit history.&lt;/li&gt;
&lt;li&gt;Document errors you encountered and how you resolved them.&lt;/li&gt;
&lt;li&gt;Use architecture diagrams to explain complex systems.&lt;/li&gt;
&lt;li&gt;Never claim that a project is production-ready unless it has actually been designed, tested, and operated to that standard.&lt;/li&gt;
&lt;li&gt;Keep repositories clean, organized, and reproducible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  18.7 Free and Low-Cost Practice Strategy
&lt;/h3&gt;

&lt;p&gt;You can build a strong portfolio without continuously running expensive cloud infrastructure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use local Linux virtual machines for Linux practice.&lt;/li&gt;
&lt;li&gt;Use Minikube or another local Kubernetes environment.&lt;/li&gt;
&lt;li&gt;Use local Docker containers for containerization practice.&lt;/li&gt;
&lt;li&gt;Use Terraform validation and planning to practice infrastructure configuration without necessarily creating resources.&lt;/li&gt;
&lt;li&gt;Use GitHub for source control and eligible CI/CD usage within its current plan limits.&lt;/li&gt;
&lt;li&gt;Use AWS only when necessary for cloud-specific demonstrations.&lt;/li&gt;
&lt;li&gt;Review current AWS pricing and Free Tier eligibility before creating resources.&lt;/li&gt;
&lt;li&gt;Delete resources after completing practical exercises and verify that chargeable resources have been removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Local practice does not replace real AWS experience, but it can reduce unnecessary cloud expenses while you learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Section 19: Become Job-Ready — Resume, GitHub, Interviews, and Job Search
&lt;/h2&gt;

&lt;p&gt;Completing a learning roadmap is only one part of becoming an AWS DevOps Engineer. You must also be able to demonstrate your knowledge, explain your projects, solve technical problems, and communicate effectively during interviews.&lt;/p&gt;

&lt;p&gt;This section explains how to prepare for entry-level and junior AWS DevOps opportunities.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.1 Build an ATS-Friendly DevOps Resume
&lt;/h3&gt;

&lt;p&gt;Your resume should clearly communicate your technical skills, practical projects, and ability to work with cloud infrastructure and automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended resume structure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Name and contact information&lt;/li&gt;
&lt;li&gt;Professional summary&lt;/li&gt;
&lt;li&gt;Technical skills&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Work experience, if applicable&lt;/li&gt;
&lt;li&gt;Education&lt;/li&gt;
&lt;li&gt;Certifications, if earned&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example professional summary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Entry-level AWS DevOps Engineer with hands-on project experience in AWS cloud services, Linux administration, Terraform, Docker, Kubernetes, and CI/CD automation. Familiar with infrastructure provisioning, containerized application deployments, monitoring, logging, and DevSecOps practices. Passionate about building reliable, secure, and automated cloud infrastructure."&lt;/p&gt;

&lt;p&gt;Customize this summary to reflect your actual knowledge and completed projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.2 Organize Your Technical Skills
&lt;/h3&gt;

&lt;p&gt;Group related skills so recruiters can quickly understand your technical background.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Skills&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;AWS, IAM, EC2, S3, VPC, ELB, Auto Scaling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating Systems&lt;/td&gt;
&lt;td&gt;Linux, Ubuntu, shell administration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programming and Scripting&lt;/td&gt;
&lt;td&gt;Python, Bash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version Control&lt;/td&gt;
&lt;td&gt;Git, GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure as Code&lt;/td&gt;
&lt;td&gt;Terraform, CloudFormation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Containers&lt;/td&gt;
&lt;td&gt;Docker, Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI/CD&lt;/td&gt;
&lt;td&gt;GitHub Actions, Jenkins, GitLab CI/CD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Containers&lt;/td&gt;
&lt;td&gt;ECR, ECS, EKS, Fargate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration Management&lt;/td&gt;
&lt;td&gt;Ansible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring&lt;/td&gt;
&lt;td&gt;CloudWatch, Prometheus, Grafana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging&lt;/td&gt;
&lt;td&gt;ELK Stack, OpenSearch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;IAM, KMS, Secrets Manager, Trivy, Checkov&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitOps&lt;/td&gt;
&lt;td&gt;Argo CD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SRE&lt;/td&gt;
&lt;td&gt;SLI, SLO, SLA, incident management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Only include technologies you can explain and demonstrate. Separate tools you have used in practical projects from those you have only studied.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.3 Create a Professional GitHub Profile
&lt;/h3&gt;

&lt;p&gt;Your GitHub profile should serve as a portfolio of your technical work.&lt;/p&gt;

&lt;p&gt;Recommended steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a professional profile photo or avatar.&lt;/li&gt;
&lt;li&gt;Write a clear technical bio.&lt;/li&gt;
&lt;li&gt;Add your major technical skills.&lt;/li&gt;
&lt;li&gt;Pin your best repositories.&lt;/li&gt;
&lt;li&gt;Write meaningful README files.&lt;/li&gt;
&lt;li&gt;Include architecture diagrams.&lt;/li&gt;
&lt;li&gt;Maintain clean commit history.&lt;/li&gt;
&lt;li&gt;Remove credentials and sensitive configuration from repositories.&lt;/li&gt;
&lt;li&gt;Keep project documentation updated.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Suggested pinned repositories:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Infrastructure Automation with Terraform&lt;/li&gt;
&lt;li&gt;Automated CI/CD Pipeline&lt;/li&gt;
&lt;li&gt;Docker Application Deployment&lt;/li&gt;
&lt;li&gt;Kubernetes Application Deployment&lt;/li&gt;
&lt;li&gt;DevSecOps Pipeline&lt;/li&gt;
&lt;li&gt;AWS DevOps Capstone Project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quality and clarity matter more than the number of repositories.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.4 Prepare for AWS DevOps Technical Interviews
&lt;/h3&gt;

&lt;p&gt;Interview preparation should cover both theoretical understanding and practical troubleshooting.&lt;/p&gt;

&lt;p&gt;Organize your preparation into these categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux and Operating Systems&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain Linux architecture.&lt;/li&gt;
&lt;li&gt;What is the difference between a process and a thread?&lt;/li&gt;
&lt;li&gt;Explain file permissions.&lt;/li&gt;
&lt;li&gt;How do you troubleshoot high CPU utilization?&lt;/li&gt;
&lt;li&gt;How do you investigate disk-space issues?&lt;/li&gt;
&lt;li&gt;What is systemd?&lt;/li&gt;
&lt;li&gt;How do you troubleshoot SSH connection failures?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain TCP and UDP.&lt;/li&gt;
&lt;li&gt;What happens when you open a website?&lt;/li&gt;
&lt;li&gt;What is DNS?&lt;/li&gt;
&lt;li&gt;Explain public and private IP addresses.&lt;/li&gt;
&lt;li&gt;What is a subnet?&lt;/li&gt;
&lt;li&gt;What is the difference between a security group and a network ACL?&lt;/li&gt;
&lt;li&gt;How do you troubleshoot connectivity issues?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain IAM users, groups, roles, and policies.&lt;/li&gt;
&lt;li&gt;What is the difference between EC2 and Lambda?&lt;/li&gt;
&lt;li&gt;Explain VPC components.&lt;/li&gt;
&lt;li&gt;What is the difference between S3 and EBS?&lt;/li&gt;
&lt;li&gt;Explain Application Load Balancer and Network Load Balancer.&lt;/li&gt;
&lt;li&gt;What is Auto Scaling?&lt;/li&gt;
&lt;li&gt;How do CloudWatch and CloudTrail differ?&lt;/li&gt;
&lt;li&gt;How would you secure an AWS environment?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Infrastructure as Code?&lt;/li&gt;
&lt;li&gt;Explain Terraform state.&lt;/li&gt;
&lt;li&gt;What is the difference between a resource and a data source?&lt;/li&gt;
&lt;li&gt;What are Terraform modules?&lt;/li&gt;
&lt;li&gt;Explain remote state.&lt;/li&gt;
&lt;li&gt;What is the purpose of terraform plan?&lt;/li&gt;
&lt;li&gt;How do you manage sensitive variables?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is a container?&lt;/li&gt;
&lt;li&gt;What is the difference between an image and a container?&lt;/li&gt;
&lt;li&gt;Explain Dockerfile instructions.&lt;/li&gt;
&lt;li&gt;What are Docker volumes?&lt;/li&gt;
&lt;li&gt;Explain Docker networking.&lt;/li&gt;
&lt;li&gt;What is a multistage build?&lt;/li&gt;
&lt;li&gt;How do you troubleshoot a container that exits unexpectedly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain Kubernetes architecture.&lt;/li&gt;
&lt;li&gt;What is a Pod?&lt;/li&gt;
&lt;li&gt;What is the difference between a Deployment and a StatefulSet?&lt;/li&gt;
&lt;li&gt;Explain Kubernetes Services.&lt;/li&gt;
&lt;li&gt;What are ConfigMaps and Secrets?&lt;/li&gt;
&lt;li&gt;What are readiness and liveness probes?&lt;/li&gt;
&lt;li&gt;How do you troubleshoot a Pod stuck in Pending or CrashLoopBackOff?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CI/CD and DevSecOps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain a CI/CD pipeline.&lt;/li&gt;
&lt;li&gt;What is the difference between continuous delivery and continuous deployment?&lt;/li&gt;
&lt;li&gt;How do you securely manage pipeline credentials?&lt;/li&gt;
&lt;li&gt;What is a deployment rollback?&lt;/li&gt;
&lt;li&gt;What are blue-green and canary deployments?&lt;/li&gt;
&lt;li&gt;How do you integrate security scanning into a pipeline?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Monitoring and SRE&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain metrics, logs, and traces.&lt;/li&gt;
&lt;li&gt;What is Prometheus?&lt;/li&gt;
&lt;li&gt;What is Grafana?&lt;/li&gt;
&lt;li&gt;What are SLIs, SLOs, and SLAs?&lt;/li&gt;
&lt;li&gt;How do you design an alerting strategy?&lt;/li&gt;
&lt;li&gt;What is incident management?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not simply memorize answers. Practise explaining concepts in your own words and demonstrate them using your projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.5 Practise Real-World Troubleshooting Scenarios
&lt;/h3&gt;

&lt;p&gt;Employers often evaluate how candidates investigate and solve problems.&lt;/p&gt;

&lt;p&gt;Practise scenarios such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An EC2 instance is unreachable through SSH.&lt;/li&gt;
&lt;li&gt;An application is running locally but not accessible from the internet.&lt;/li&gt;
&lt;li&gt;A Docker container exits immediately after starting.&lt;/li&gt;
&lt;li&gt;A CI/CD pipeline fails during the deployment stage.&lt;/li&gt;
&lt;li&gt;A Kubernetes Pod enters CrashLoopBackOff.&lt;/li&gt;
&lt;li&gt;A Kubernetes Service cannot communicate with its Pods.&lt;/li&gt;
&lt;li&gt;A Terraform deployment fails because of an IAM permission error.&lt;/li&gt;
&lt;li&gt;An application experiences high CPU utilization.&lt;/li&gt;
&lt;li&gt;An AWS application unexpectedly incurs high costs.&lt;/li&gt;
&lt;li&gt;A deployment introduces an application failure.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For each scenario, practise the following troubleshooting method:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand the reported problem.&lt;/li&gt;
&lt;li&gt;Identify the affected component.&lt;/li&gt;
&lt;li&gt;Collect relevant logs and metrics.&lt;/li&gt;
&lt;li&gt;Form a possible cause.&lt;/li&gt;
&lt;li&gt;Test your hypothesis.&lt;/li&gt;
&lt;li&gt;Apply a safe corrective action.&lt;/li&gt;
&lt;li&gt;Verify that the issue is resolved.&lt;/li&gt;
&lt;li&gt;Document the root cause and prevention steps.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  19.6 Consider Relevant AWS Certifications
&lt;/h3&gt;

&lt;p&gt;Certifications can help demonstrate structured knowledge, but they do not replace practical experience.&lt;/p&gt;

&lt;p&gt;Potential certifications include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Certified Cloud Practitioner — foundational cloud knowledge.&lt;/li&gt;
&lt;li&gt;AWS Certified Solutions Architect – Associate — AWS architecture fundamentals.&lt;/li&gt;
&lt;li&gt;AWS Certified Developer – Associate — application development on AWS.&lt;/li&gt;
&lt;li&gt;AWS Certified CloudOps Engineer – Associate — operational management of AWS workloads.&lt;/li&gt;
&lt;li&gt;AWS Certified DevOps Engineer – Professional — advanced AWS DevOps practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need to earn every certification.&lt;/p&gt;

&lt;p&gt;Start with the certification that best matches your current knowledge and career goals. Review the latest official exam guides before preparing because certification names, objectives, and exam requirements can change.&lt;/p&gt;

&lt;p&gt;Official certification information: &lt;a href="https://aws.amazon.com/certification/" rel="noopener noreferrer"&gt;https://aws.amazon.com/certification/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  19.7 Create a Consistent Job Search Strategy
&lt;/h3&gt;

&lt;p&gt;Once you have a credible technical foundation and demonstrable projects, begin applying for relevant opportunities.&lt;/p&gt;

&lt;p&gt;Search for roles such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Junior DevOps Engineer&lt;/li&gt;
&lt;li&gt;Associate DevOps Engineer&lt;/li&gt;
&lt;li&gt;AWS Cloud Engineer&lt;/li&gt;
&lt;li&gt;Cloud Operations Engineer&lt;/li&gt;
&lt;li&gt;Infrastructure Engineer&lt;/li&gt;
&lt;li&gt;Junior Site Reliability Engineer&lt;/li&gt;
&lt;li&gt;Build and Release Engineer&lt;/li&gt;
&lt;li&gt;Platform Engineering Associate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended job-search activities:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Activity&lt;/th&gt;
&lt;th&gt;Suggested frequency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Technical learning&lt;/td&gt;
&lt;td&gt;Daily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hands-on practice&lt;/td&gt;
&lt;td&gt;Daily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interview questions&lt;/td&gt;
&lt;td&gt;5 days per week&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub improvements&lt;/td&gt;
&lt;td&gt;Weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resume improvements&lt;/td&gt;
&lt;td&gt;As needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job applications&lt;/td&gt;
&lt;td&gt;Consistently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mock interviews&lt;/td&gt;
&lt;td&gt;Weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical revision&lt;/td&gt;
&lt;td&gt;Weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tailor your resume to the actual requirements of each role. Do not claim professional experience with tools or production systems that you have not worked with.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.8 Develop Communication and Documentation Skills
&lt;/h3&gt;

&lt;p&gt;DevOps engineers work with developers, testers, security engineers, infrastructure teams, and business stakeholders.&lt;/p&gt;

&lt;p&gt;Develop the ability to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain technical concepts clearly.&lt;/li&gt;
&lt;li&gt;Document deployment procedures.&lt;/li&gt;
&lt;li&gt;Write incident reports.&lt;/li&gt;
&lt;li&gt;Communicate infrastructure changes.&lt;/li&gt;
&lt;li&gt;Explain technical trade-offs.&lt;/li&gt;
&lt;li&gt;Collaborate through GitHub pull requests.&lt;/li&gt;
&lt;li&gt;Describe project challenges and solutions.&lt;/li&gt;
&lt;li&gt;Ask clear questions when troubleshooting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Strong communication is an important part of engineering effectiveness.&lt;/p&gt;

&lt;h3&gt;
  
  
  19.9 Final Job-Readiness Checklist
&lt;/h3&gt;

&lt;p&gt;Before considering yourself ready to apply for junior AWS DevOps roles, review this checklist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fundamentals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Understand computer and operating-system fundamentals.&lt;/li&gt;
&lt;li&gt;[ ] Work comfortably with Linux.&lt;/li&gt;
&lt;li&gt;[ ] Understand networking fundamentals.&lt;/li&gt;
&lt;li&gt;[ ] Use Git and GitHub confidently.&lt;/li&gt;
&lt;li&gt;[ ] Write basic Python and Bash scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS and Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Understand core AWS services.&lt;/li&gt;
&lt;li&gt;[ ] Configure IAM permissions securely.&lt;/li&gt;
&lt;li&gt;[ ] Understand VPC networking.&lt;/li&gt;
&lt;li&gt;[ ] Provision infrastructure using Terraform.&lt;/li&gt;
&lt;li&gt;[ ] Understand AWS architecture and cost management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Containers and Automation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Build and manage Docker images.&lt;/li&gt;
&lt;li&gt;[ ] Write Dockerfiles.&lt;/li&gt;
&lt;li&gt;[ ] Deploy applications using Kubernetes.&lt;/li&gt;
&lt;li&gt;[ ] Build CI/CD pipelines.&lt;/li&gt;
&lt;li&gt;[ ] Understand ECS and EKS fundamentals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Operations and Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Configure monitoring and logging.&lt;/li&gt;
&lt;li&gt;[ ] Understand alerting and incident response.&lt;/li&gt;
&lt;li&gt;[ ] Apply DevSecOps principles.&lt;/li&gt;
&lt;li&gt;[ ] Troubleshoot common infrastructure issues.&lt;/li&gt;
&lt;li&gt;[ ] Understand backup and disaster recovery fundamentals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Portfolio and Career&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Complete multiple practical projects.&lt;/li&gt;
&lt;li&gt;[ ] Build one documented end-to-end capstone.&lt;/li&gt;
&lt;li&gt;[ ] Maintain a professional GitHub portfolio.&lt;/li&gt;
&lt;li&gt;[ ] Prepare an ATS-friendly resume.&lt;/li&gt;
&lt;li&gt;[ ] Practise technical and scenario-based interviews.&lt;/li&gt;
&lt;li&gt;[ ] Understand and explain every project listed on your resume.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  19.10 Final Advice: Focus on Engineering Skills, Not Just Tools
&lt;/h3&gt;

&lt;p&gt;Becoming an AWS DevOps Engineer is not about memorizing hundreds of commands or collecting certificates.&lt;/p&gt;

&lt;p&gt;It is about understanding how applications are developed, deployed, secured, monitored, and maintained.&lt;/p&gt;

&lt;p&gt;Build your foundation first. Practise consistently. Create projects that solve meaningful problems. Learn to troubleshoot failures rather than simply following tutorials.&lt;/p&gt;

&lt;p&gt;A strong engineer understands not only &lt;strong&gt;how&lt;/strong&gt; to use a tool, but also &lt;strong&gt;why&lt;/strong&gt; it is used, &lt;strong&gt;when&lt;/strong&gt; it is appropriate, and &lt;strong&gt;what trade-offs&lt;/strong&gt; it introduces.&lt;/p&gt;

&lt;p&gt;Your learning journey does not end when you get your first job. Continue learning, experimenting, documenting, and improving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with fundamentals. Build with purpose. Automate with confidence. Operate with reliability.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
