diff --git a/pom.xml b/pom.xml index 9cab804820..865ad55916 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,16 @@ + + + + + org.apache.maven.plugins + maven-war-plugin + 3.4.0 + + + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index a5febb751c..af276000e4 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -1,12 +1,3153 @@ - +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + +<% + String candidate = "DevOps Engineer"; + int xp = 8450; + int level = 12; +%> + + + + + + + + + + +DEVOPS ENGINEER OS πŸš€ + + + + + -

HEY WE DEPLOYED OUR APP USING JENKINS

-

MY 2nd VERSION

- - - - - - + + + + + + + + + +
+ +
+ + +πŸ”₯ 2 YEARS β†’ PRODUCTION-READY DEVOPS MINDSET + + +

+Become a +
+ +DevOps Engineer + +

+ +

+ +This is not a list of commands. + +This is a production-engineering journey: +Linux β†’ Networking β†’ Git β†’ Maven β†’ Tomcat β†’ +Docker β†’ Jenkins β†’ CI/CD β†’ AWS β†’ Terraform β†’ +Kubernetes β†’ Security β†’ Monitoring β†’ +Troubleshooting. + +

+ +

+ + +Think like an engineer. +Debug like an engineer. +Deploy like an engineer. + + +

+ + +START THE JOURNEY πŸš€ + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +DEVOPS + + + + + +deploy.sh + + + + + + + +☁️ πŸš€ ☸️ + + + + + +
+ +
+ + + + +
+ +
+ +
+ +
+<%= level %> +Current Level +
+ +
+<%= xp %> +XP Earned +
+ +
+26 +Engineering Modules +
+ +
+50+ +Production Scenarios +
+ +
+ +
+ +
+ +

🎯 Overall Engineering Progress

+ +
+ +
+ +
+ +
+ +72% β€” Keep building real projects. + +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 00 + +

🧠 The DevOps Mindset

+ +

+ +The biggest difference between a junior and experienced +engineer is not the number of commands they know. + +It is how they approach problems. + +

+ +
+ + +
+ +
+ +
🟒
+ +

Junior Thinking

+ +

+ +"Deployment failed." + +"Server is down." + +"Docker stopped." + +

+ +
+ + +
+ +
πŸ”₯
+ +

Experienced Thinking

+ +

+ +What changed? + +Where exactly did it fail? + +Can I reproduce it? + +What evidence do the logs provide? + +What is the blast radius? + +How do I prevent it from happening again? + +

+ +
+ + +
+ +
🧠
+ +

Golden Rule

+ +

+ +OBSERVE + +↓ + +IDENTIFY + +↓ + +ISOLATE + +↓ + +FIX + +↓ + +VERIFY + +↓ + +PREVENT + +

+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MASTER ROADMAP + +

πŸ—ΊοΈ From Developer β†’ DevOps Engineer

+ +
+ +
+ +
+
🐧
+Linux +
+ +
β†’
+ +
+
🌐
+Networking +
+ +
β†’
+ +
+
🌳
+Git +
+ +
β†’
+ +
+
β˜•
+Java +
+ +
β†’
+ +
+
🐱
+Tomcat +
+ +
β†’
+ +
+
🐳
+Docker +
+ +
β†’
+ +
+
βš™οΈ
+Jenkins +
+ +
β†’
+ +
+
☁️
+AWS +
+ +
β†’
+ +
+
☸️
+Kubernetes +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 01 + +

🐧 Linux β€” Your DevOps House

+ +

+ +Most production environments still require you to +understand processes, filesystems, permissions, +networking, services and logs. + +

+ +
+ + +
+ +
+ +BEGINNER + +

Filesystem

+ +
+/
+β”œβ”€β”€ etc
+β”œβ”€β”€ var
+β”‚   └── log
+β”œβ”€β”€ home
+β”œβ”€β”€ opt
+β”œβ”€β”€ tmp
+β”œβ”€β”€ usr
+└── app
+
+ +
+ + +
+ +INTERMEDIATE + +

Processes

+ +
+ps -ef
+top
+htop
+kill PID
+kill -9 PID
+systemctl status nginx
+journalctl -u nginx
+
+ +
+ + +
+ +PRODUCTION + +

Disk / Memory

+ +
+df -h
+du -sh *
+free -m
+vmstat
+iostat
+uptime
+
+ +
+ +
+ + +
+ +
+● ● ●   production-debug.sh +
+ +
+ + +# Application is down. Don't restart blindly. + + +
+ + +$ ps -ef | grep java + + +
+ + +$ ss -lntp + + +
+ + +$ df -h + + +
+ + +$ free -m + + +
+ + +$ journalctl -u tomcat --since "30 minutes ago" + + +
+ + +# Evidence first. Action second. + + +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 02 + +

🌐 Networking

+ +

+ +A DevOps engineer must understand what happens between +the browser and the application. + +

+ +
+ + +
+ +
🌍 Browser
+ +
↓
+ +
DNS
+ +
↓
+ +
πŸ”€ Load Balancer
+ +
↓
+ +
NGINX / Reverse Proxy
+ +
↓
+ +
🐱 Tomcat :8080
+ +
↓
+ +
β˜• Java Application
+ +
↓
+ +
πŸ—„οΈ Database :1521
+ +
+ + +
+ + +
+ +
+ +

Know These

+ +
    + +
  • IP Address
  • +
  • DNS
  • +
  • TCP / UDP
  • +
  • HTTP / HTTPS
  • +
  • Ports
  • +
  • TLS
  • +
  • NAT
  • +
  • Subnet / CIDR
  • +
  • Firewall
  • +
  • Load Balancer
  • +
  • Reverse Proxy
  • + +
+ +
+ + +
+ +

Debugging Toolkit

+ +
+ping
+curl -v
+wget
+nslookup
+dig
+telnet
+nc
+traceroute
+ss
+netstat
+
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 03 + +

🌳 Git β€” Time Machine for Code

+ +
+ + +
+ +
+πŸ‘¨β€πŸ’» Working Directory +
+ +
↓ git add
+ +
+πŸ“¦ Staging Area +
+ +
↓ git commit
+ +
+πŸ—ƒοΈ Local Repository +
+ +
↓ git push
+ +
+☁️ GitHub +
+ +
+ + +
+ +
+git.sh +
+ +
+ +$ git clone repository + +
+ +$ git checkout -b feature/login + +
+ +$ git add . + +
+ +$ git commit -m "Add login feature" + +
+ +$ git push origin feature/login + +
+ +$ git log --oneline + +
+ +$ git diff + +
+ +$ git revert <commit> + +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 04 + +

🐱 Java + Tomcat

+ +

+ +Understand what your DevOps pipeline is actually +building and deploying. + +

+ +
+ + +
+ +
πŸ‘¨β€πŸ’» Java Source
+ +
↓
+ +
πŸ—οΈ Maven
+ +
↓
+ +
πŸ“¦ app.war
+ +
↓
+ +
🐱 Tomcat
+ +
↓
+ +
🌐 :8080
+ +
+ + +
+ +
+ +

Tomcat Concepts

+ +
    + +
  • JVM
  • +
  • WAR
  • +
  • JAR
  • +
  • Servlet
  • +
  • Connector
  • +
  • Threads
  • +
  • Heap
  • +
  • Garbage Collection
  • +
  • Connection Pool
  • +
  • Access Logs
  • +
  • catalina.out
  • + +
+ +
+ + +
+ +

Deployment

+ +
+mvn clean package
+
+scp app.war server:/tmp/
+
+cp app.war \
+/opt/tomcat/webapps/
+
+systemctl restart tomcat
+
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 05 + +

🐳 Docker β€” Package the Application

+ +

+ +Don't just learn docker run. + +Understand images, layers, containers, +networking, volumes, registries, security, +multi-stage builds and production debugging. + +

+ +
+ + +
+ +

Build #1 β€” Java Application

+ +
+ +
+ +FROM eclipse-temurin:21-jre + +

+ +WORKDIR /app + +

+ +COPY target/app.jar app.jar + +

+ +EXPOSE 8080 + +

+ +ENTRYPOINT ["java","-jar","app.jar"] + +
+ +
+ +
+ + +
+ + +
+ +

Build #2 β€” Maven + Docker

+ +
+SOURCE
+   ↓
+Maven
+   ↓
+Compile
+   ↓
+Test
+   ↓
+Package
+   ↓
+JAR
+   ↓
+Docker Image
+   ↓
+Container
+
+ +
+ + +
+ + +
+ +

πŸ”₯ Build #3 β€” Multi-Stage Docker

+ +
+ +
+ +FROM maven:3.9-eclipse-temurin-21 AS build + +

+ +WORKDIR /build + +

+ +COPY pom.xml . + +
+ +RUN mvn dependency:go-offline + +

+ +COPY src ./src + +
+ +RUN mvn clean package + +

+ + +FROM eclipse-temurin:21-jre + +

+ +WORKDIR /app + +

+ +COPY --from=build \ +/build/target/app.jar app.jar + +

+ +USER 1001 + +

+ +EXPOSE 8080 + +

+ +ENTRYPOINT ["java","-jar","app.jar"] + +
+ +
+ +
+ + +
+ + +
+ +

🐱 Build #4 β€” Docker + Tomcat

+ +
+ +
+ +FROM maven:3.9-eclipse-temurin-21 AS build + +

+ +WORKDIR /build + +

+ +COPY pom.xml . + +
+ +COPY src ./src + +

+ +RUN mvn clean package + +

+ + +FROM tomcat:10-jdk21 + +

+ +RUN rm -rf /usr/local/tomcat/webapps/* + +

+ +COPY --from=build \ +/build/target/app.war \ +/usr/local/tomcat/webapps/app.war + +

+ +EXPOSE 8080 + +

+ +CMD ["catalina.sh","run"] + +
+ +
+ +
+ + +
+ + +
+ +
+ +

Docker Commands

+ +
+docker build
+docker images
+docker ps
+docker ps -a
+docker run
+docker stop
+docker start
+docker rm
+docker rmi
+docker logs
+docker exec
+docker inspect
+docker stats
+
+ +
+ + +
+ +

Experienced Engineer Questions

+ +
    + +
  • Why is my image huge?
  • +
  • Why is the container restarting?
  • +
  • Why does it work locally?
  • +
  • Why is port 8080 inaccessible?
  • +
  • Why is the container using too much memory?
  • +
  • Why should we avoid running as root?
  • +
  • How do I make builds reproducible?
  • + +
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 06 + +

βš™οΈ Jenkins CI/CD

+ +
+ + +
+ +
πŸ‘¨β€πŸ’»
Developer
+
β†’
+
🌳
Git
+
β†’
+
βš™οΈ
Jenkins
+
β†’
+
πŸ—οΈ
Maven
+
β†’
+
πŸ§ͺ
Tests
+
β†’
+
🐳
Docker
+
β†’
+
☁️
Deploy
+ +
+ + +
+ +

Production-style Jenkinsfile

+ +
+ +
+ +pipeline { + +
+ +  agent any + +

+ +  stages { + +

+ +    stage('Checkout') { + +
+      steps { +
+        checkout scm +
+      } +
+ +    } + +

+ +    stage('Build') { + +
+      steps { +
+        sh 'mvn clean package' +
+      } +
+ +    } + +

+ +    stage('Test') { + +
+      steps { +
+        sh 'mvn test' +
+      } +
+ +    } + +

+ +    stage('Docker Build') { + +
+      steps { +
+        sh 'docker build -t myapp:${BUILD_NUMBER} .' +
+      } +
+ +    } + +

+ +    stage('Deploy') { + +
+      steps { +
+        sh 'docker compose up -d' +
+      } +
+ +    } + +

+ +  } + +
+ +} + +
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 07 + +

☁️ AWS Architecture

+ +
+ + +
+ +
+🌍 Internet +
+ +
↓
+ +
+Route 53 +
+ +
↓
+ +
+πŸ”€ Application Load Balancer +
+ +
↓
+ +
+☁️ VPC +
+ +
↓
+ +
+πŸ–₯️ EC2 / EKS +
+ +
↓
+ +
+🐳 Application +
+ +
↓
+ +
+πŸ—„οΈ RDS +
+ +
+ + +
+ +
+ +

Must Understand

+ +
    + +
  • VPC
  • +
  • Subnet
  • +
  • Route Table
  • +
  • Internet Gateway
  • +
  • NAT Gateway
  • +
  • Security Group
  • +
  • IAM
  • +
  • EC2
  • +
  • EBS
  • +
  • S3
  • +
  • RDS
  • +
  • ALB
  • +
  • Auto Scaling
  • +
  • CloudWatch
  • +
  • ECR
  • +
  • EKS
  • + +
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 08 + +

πŸ—οΈ Terraform

+ +

+ +Infrastructure should be repeatable, reviewable +and version-controlled. + +

+ +
+ + +
+ +
+ +resource "aws_instance" "devops" { + +

+ +  ami = "ami-example" + +

+ +  instance_type = "t3.micro" + +

+ +  tags = { + +
+ +    Name = "devops-server" + +
+ +  } + +
+ +} + +

+ +terraform init + +
+ +terraform plan + +
+ +terraform apply + +
+ +terraform destroy + +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 09 + +

☸️ Kubernetes

+ +

+ +One container is simple. + +Hundreds of containers require orchestration. + +

+ +
+ + +
+ +
+☸️ Kubernetes Cluster +
+ +
↓
+ +
+Control Plane +
+ +
↓
+ +
+Worker Nodes +
+ +
↓
+ +
+ +
🐳 Pod
+
🐳 Pod
+
🐳 Pod
+ +
+ +
+ + +
+ +
+ +

Core Objects

+ +
    + +
  • Pod
  • +
  • Deployment
  • +
  • ReplicaSet
  • +
  • Service
  • +
  • Ingress
  • +
  • ConfigMap
  • +
  • Secret
  • +
  • Volume
  • +
  • Namespace
  • +
  • StatefulSet
  • +
  • DaemonSet
  • +
  • CronJob
  • + +
+ +
+ + +
+ +

Production Debugging

+ +
+kubectl get pods
+
+kubectl describe pod APP
+
+kubectl logs APP
+
+kubectl get events
+
+kubectl get svc
+
+kubectl get ingress
+
+kubectl exec -it APP -- /bin/sh
+
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 10 + +

πŸ” DevSecOps

+ +
+ + +
+ +
🌳
Source
+
β†’
+
πŸ”
SAST
+
β†’
+
πŸ“¦
Dependency Scan
+
β†’
+
πŸ”
Secret Scan
+
β†’
+
🐳
Image Scan
+
β†’
+
πŸš€
Deploy
+ +
+ + +
+ +
+ +

Security Principles

+ +
    + +
  • Least Privilege
  • +
  • IAM
  • +
  • RBAC
  • +
  • Secrets Management
  • +
  • TLS
  • +
  • Image Scanning
  • +
  • Dependency Scanning
  • +
  • Network Segmentation
  • + +
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 11 + +

πŸ“Š Monitoring & Observability

+ +
+ + +
+ +
+ +

CPU

+ +

72%

+ +
+
+
+ +
+ + +
+ +

Memory

+ +

51%

+ +
+
+
+ +
+ + +
+ +

Disk

+ +

81%

+ +
+
+
+ +
+ + +
+ +

Error Rate

+ +

0.8%

+ +
+
+
+ +
+ +
+ + +
+ + +
+ +
+ +

Metrics

+ +

+CPU, memory, latency, throughput, +request rate, error rate. +

+ +
+ +
+ +

Logs

+ +

+Application logs, access logs, +system logs and audit logs. +

+ +
+ +
+ +

Traces

+ +

+Follow one request across +multiple services. +

+ +
+ +
+ +

Alerts

+ +

+Alert on meaningful symptoms, +not every tiny metric change. +

+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +MODULE 12 + +

🚨 Production Incident Simulator

+ +

+ +This is where you stop thinking like someone who +only knows commands and start thinking like an +operations engineer. + +

+ +
+ + +
+ +

🚨 INCIDENT #001

+ +

+ +Production is returning HTTP 502. + +What do you do? + +

+ + +
+ +Step 1 β€” Don't restart immediately. + +

+ +Check whether the application is alive. + +
+systemctl status tomcat
+
+ps -ef | grep java
+
+ss -lntp
+
+ +
+ + +
+ +Step 2 β€” Check logs. + +
+tail -100 catalina.out
+
+journalctl -u tomcat
+
+ +
+ + +
+ +Step 3 β€” Test locally. + +
+curl -v http://localhost:8080/app
+
+ +
+ + +
+ +Step 4 β€” Check the complete path. + +
+Browser
+ ↓
+DNS
+ ↓
+Load Balancer
+ ↓
+Reverse Proxy
+ ↓
+Tomcat
+ ↓
+Application
+ ↓
+Database
+
+ +
+ +
+ + +
+ + +
+ +

🚨 INCIDENT #002

+ +

+ +Docker container keeps restarting. + +

+ +
+ +Investigate: + +
+docker ps -a
+
+docker logs APP
+
+docker inspect APP
+
+docker stats
+
+ +Possible causes: + +
    + +
  • Application crash
  • +
  • Wrong environment variable
  • +
  • Missing dependency
  • +
  • Incorrect command
  • +
  • Port configuration
  • +
  • Memory limit
  • +
  • Health check failure
  • + +
+ +
+ +
+ + +
+ + +
+ +

🚨 INCIDENT #003

+ +

+ +Kubernetes Pod is CrashLoopBackOff. + +

+ +
+ +Start with: + +
+kubectl get pod
+
+kubectl describe pod APP
+
+kubectl logs APP
+
+kubectl logs APP --previous
+
+kubectl get events
+
+ +Never assume Kubernetes itself is broken. + +Find the failing layer. + +
+ +
+ + +
+ + +
+ +

🚨 INCIDENT #004

+ +

+ +Jenkins pipeline suddenly takes 25 minutes. + +

+ +
+ +Investigate each stage: + +
+Checkout
+Build
+Dependencies
+Tests
+Static Analysis
+Docker Build
+Push
+Deployment
+Smoke Test
+
+ +Then optimize the actual bottleneck. + +Potential improvements: + +
    + +
  • Dependency caching
  • +
  • Docker layer caching
  • +
  • Parallel tests
  • +
  • Smaller images
  • +
  • Reusable agents
  • +
  • Parallel pipeline stages
  • + +
+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +REAL PROJECT BUILDS + +

πŸ”₯ Build These Systems

+ +
+ + +
+ +
+ +
1️⃣
+ +

Java β†’ Tomcat

+ +

+Git β†’ Maven β†’ WAR β†’ Tomcat β†’ Browser +

+ + +FOUNDATION + + +
+ + +
+ +
2️⃣
+ +

Java β†’ Docker

+ +

+Git β†’ Maven β†’ JAR β†’ Docker β†’ Container +

+ + +CONTAINERS + + +
+ + +
+ +
3️⃣
+ +

Docker + Tomcat

+ +

+Maven β†’ WAR β†’ Tomcat Image β†’ Container +

+ + +ENTERPRISE + + +
+ + +
+ +
4️⃣
+ +

Jenkins CI/CD

+ +

+GitHub β†’ Jenkins β†’ Build β†’ Test β†’ Docker β†’ Deploy +

+ + +AUTOMATION + + +
+ + +
+ +
5️⃣
+ +

AWS Deployment

+ +

+Jenkins β†’ Docker β†’ ECR β†’ EC2 β†’ Application +

+ + +CLOUD + + +
+ + +
+ +
6️⃣
+ +

Kubernetes

+ +

+Jenkins β†’ Docker β†’ Registry β†’ Kubernetes β†’ Service +

+ + +ADVANCED + + +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +INTERVIEW MODE + +

🎯 Think Like a 5-Year Candidate

+ +
+ + +
+ + +
+ +

🟒 Beginner

+ +

+What is Docker? +

+ +
+ +Docker packages applications and their dependencies +into portable containers. + +
+ +
+ + +
+ +

🟑 Intermediate

+ +

+Image vs Container? +

+ +
+ +An image is an immutable package/template. + +A container is a running instance of an image. + +
+ +
+ + +
+ +

πŸ”΄ Advanced

+ +

+ +Your Docker image is 1.5GB. + +How would you reduce it? + +

+ +
+ +Think: + +Multi-stage builds. + +Smaller base image. + +Remove unnecessary packages. + +Use `.dockerignore`. + +Reduce layers. + +Do not ship build tools into runtime. + +
+ +
+ + +
+ +

πŸ”₯ Production

+ +

+ +Your deployment succeeded but users +still receive errors. What do you check? + +

+ +
+ +Deployment success does not equal application health. + +Check: + +Load balancer. + +Application health. + +Logs. + +Metrics. + +Dependencies. + +Database. + +Network. + +Recent configuration changes. + +
+ +
+ + +
+ +
+ +
+ + + + +
+ +
+ +
+ +ENGINEERING MINDSET + +

🧠 Junior vs Experienced

+ +
+ + +
+ +
+ +

❌ Junior

+ +

+"Server is slow." +

+ +
+ + +
+ +

πŸ”₯ Experienced

+ +

+CPU? + +Memory? + +Disk I/O? + +Network? + +JVM GC? + +Threads? + +Database? + +External dependency? + +Traffic spike? + +Recent deployment? +

+ +
+ + +
+ +

❌ Junior

+ +

+"Jenkins failed." +

+ +
+ + +
+ +

πŸ”₯ Experienced

+ +

+Which stage? + +What changed? + +Is the failure reproducible? + +Code? + +Dependency? + +Credential? + +Agent? + +Infrastructure? + +Environment? +

+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +FINAL PROJECT + +

πŸ† Production-Style DevOps Architecture

+ +
+ + +
+ +
+🌍 USERS +
+ +
↓
+ +
+Route 53 +
+ +
↓
+ +
+πŸ”€ Application Load Balancer +
+ +
↓
+ +
+☸️ Kubernetes / EKS +
+ +
↓
+ +
+🐳 Application Pods +
+ +
↓
+ +
+πŸ—„οΈ RDS +
+ +
+ +
+ +CI/CD + +

+ +GitHub +β†’ Jenkins +β†’ Maven +β†’ Tests +β†’ SonarQube +β†’ Trivy +β†’ Docker +β†’ ECR +β†’ EKS + +
+ +
+ +
+ +OBSERVABILITY + +

+ +Prometheus +β†’ Grafana +β†’ Alerts + +
+ +
+ +
+ +
+ + + + +
+ +
+ +
+ +JOB READY CHECKLIST + +

πŸ† Can You Explain These?

+ +
+ + +
+ +
+ +

🐧 Linux

+ +

β˜‘ Processes

+

β˜‘ Services

+

β˜‘ Permissions

+

β˜‘ Logs

+

β˜‘ Disk / Memory

+ +
+ + +
+ +

🐳 Docker

+ +

β˜‘ Images

+

β˜‘ Containers

+

β˜‘ Networks

+

β˜‘ Volumes

+

β˜‘ Multi-stage builds

+ +
+ + +
+ +

βš™οΈ Jenkins

+ +

β˜‘ Pipeline

+

β˜‘ Webhook

+

β˜‘ Agents

+

β˜‘ Credentials

+

β˜‘ Deployment

+ +
+ + +
+ +

☁️ AWS

+ +

β˜‘ VPC

+

β˜‘ EC2

+

β˜‘ IAM

+

β˜‘ ALB

+

β˜‘ RDS

+ +
+ + +
+ +

☸️ Kubernetes

+ +

β˜‘ Pods

+

β˜‘ Deployments

+

β˜‘ Services

+

β˜‘ Ingress

+

β˜‘ Troubleshooting

+ +
+ + +
+ +

🚨 Production

+ +

β˜‘ Incident response

+

β˜‘ Root cause analysis

+

β˜‘ Monitoring

+

β˜‘ Rollback

+

β˜‘ Prevention

+ +
+ +
+ +
+ +
+ + + + +
+ +
+ +

πŸš€ DEVOPS ENGINEER OS

+ +

+ +Learn the technology. + +Understand the architecture. + +Build it. + +Break it. + +Debug it. + +Automate it. + +Monitor it. + +Then explain it like an engineer. + +

+ +

+ +Single JSP β€’ Embedded UI β€’ Embedded JavaScript β€’ +Embedded SVG β€’ DevOps Learning System + +

+ +
+ +
+ + + + + + +