+ +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 π + + ++ +The biggest difference between a junior and experienced +engineer is not the number of commands they know. + +It is how they approach problems. + +
+ ++ +"Deployment failed." + +"Server is down." + +"Docker stopped." + +
+ ++ +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? + +
+ ++ +OBSERVE + +β + +IDENTIFY + +β + +ISOLATE + +β + +FIX + +β + +VERIFY + +β + +PREVENT + +
+ ++ +Most production environments still require you to +understand processes, filesystems, permissions, +networking, services and logs. + +
+ ++/ +βββ etc +βββ var +β βββ log +βββ home +βββ opt +βββ tmp +βββ usr +βββ app ++ +
+ps -ef +top +htop +kill PID +kill -9 PID +systemctl status nginx +journalctl -u nginx ++ +
+df -h +du -sh * +free -m +vmstat +iostat +uptime ++ +
+ +A DevOps engineer must understand what happens between +the browser and the application. + +
+ ++ping +curl -v +wget +nslookup +dig +telnet +nc +traceroute +ss +netstat ++ +
+ +Understand what your DevOps pipeline is actually +building and deploying. + +
+ ++mvn clean package + +scp app.war server:/tmp/ + +cp app.war \ +/opt/tomcat/webapps/ + +systemctl restart tomcat ++ +
+ +Don't just learn docker run. + +Understand images, layers, containers, +networking, volumes, registries, security, +multi-stage builds and production debugging. + +
+ ++SOURCE + β +Maven + β +Compile + β +Test + β +Package + β +JAR + β +Docker Image + β +Container ++ +
+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 ++ +
+ +Infrastructure should be repeatable, reviewable +and version-controlled. + +
+ ++ +One container is simple. + +Hundreds of containers require orchestration. + +
+ ++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 ++ +
+CPU, memory, latency, throughput, +request rate, error rate. +
+ ++Application logs, access logs, +system logs and audit logs. +
+ ++Follow one request across +multiple services. +
+ ++Alert on meaningful symptoms, +not every tiny metric change. +
+ ++ +This is where you stop thinking like someone who +only knows commands and start thinking like an +operations engineer. + +
+ ++ +Production is returning HTTP 502. + +What do you do? + +
+ + ++systemctl status tomcat + +ps -ef | grep java + +ss -lntp ++ +
+tail -100 catalina.out + +journalctl -u tomcat ++ +
+curl -v http://localhost:8080/app ++ +
+Browser + β +DNS + β +Load Balancer + β +Reverse Proxy + β +Tomcat + β +Application + β +Database ++ +
+ +Docker container keeps restarting. + +
+ ++docker ps -a + +docker logs APP + +docker inspect APP + +docker stats ++ +Possible causes: + +
+ +Kubernetes Pod is CrashLoopBackOff. + +
+ ++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. + +
+ +Jenkins pipeline suddenly takes 25 minutes. + +
+ ++Checkout +Build +Dependencies +Tests +Static Analysis +Docker Build +Push +Deployment +Smoke Test ++ +Then optimize the actual bottleneck. + +Potential improvements: + +
+Git β Maven β WAR β Tomcat β Browser +
+ + +FOUNDATION + + ++Git β Maven β JAR β Docker β Container +
+ + +CONTAINERS + + ++Maven β WAR β Tomcat Image β Container +
+ + +ENTERPRISE + + ++GitHub β Jenkins β Build β Test β Docker β Deploy +
+ + +AUTOMATION + + ++Jenkins β Docker β ECR β EC2 β Application +
+ + +CLOUD + + ++Jenkins β Docker β Registry β Kubernetes β Service +
+ + +ADVANCED + + ++What is Docker? +
+ ++Image vs Container? +
+ ++ +Your Docker image is 1.5GB. + +How would you reduce it? + +
+ ++ +Your deployment succeeded but users +still receive errors. What do you check? + +
+ ++"Server is slow." +
+ ++CPU? + +Memory? + +Disk I/O? + +Network? + +JVM GC? + +Threads? + +Database? + +External dependency? + +Traffic spike? + +Recent deployment? +
+ ++"Jenkins failed." +
+ ++Which stage? + +What changed? + +Is the failure reproducible? + +Code? + +Dependency? + +Credential? + +Agent? + +Infrastructure? + +Environment? +
+ +β Processes
+β Services
+β Permissions
+β Logs
+β Disk / Memory
+ +β Images
+β Containers
+β Networks
+β Volumes
+β Multi-stage builds
+ +β Pipeline
+β Webhook
+β Agents
+β Credentials
+β Deployment
+ +β VPC
+β EC2
+β IAM
+β ALB
+β RDS
+ +β Pods
+β Deployments
+β Services
+β Ingress
+β Troubleshooting
+ +β Incident response
+β Root cause analysis
+β Monitoring
+β Rollback
+β Prevention
+ +