DevOps 엔지니어가 되려면 뭘 공부해야 하나 — 단계별 로드맵
ko
posts
roadmap
Linux, 네트워크, Docker, Kubernetes, CI/CD, IaC, 모니터링까지. DevOps 엔지니어가 되기 위한 공부 순서를 정리했습니다.
개요
DevOps는 다루는 영역이 Linux부터 클라우드, 오케스트레이션까지 걸쳐 있습니다. 이 글은 많이 쓰이는 순서를 기준으로, 단계별로 무엇을 익혀야 하는지 정리합니다.
1. 기반 — Linux, 네트워크, Git, Shell
정리 보기
DevOps의 출발점은 서버 환경을 이해하는 것입니다.
Linux
- 프로세스, CPU, 메모리, 디스크 관리
- 파일 권한, 소유자
- systemd 서비스 관리
- 로그 확인 (journalctl, tail, grep)
네트워크
- IP, 서브넷, DNS 동작 원리
- HTTP, TCP/UDP, 포트 개념
- 방화벽 (iptables, security group)
- 프록시, 로드밸런서 기본
Git
- 브랜치 전략 (Git Flow, trunk-based)
- merge / rebase 차이
- 충돌 해결
- 태그와 릴리즈
Shell Script
- 반복 작업 자동화
- 조건문, 반복문, 함수
- set -e, 에러 핸들링
- 운영 작업을 묶는 스크립트 작성
2. 컨테이너와 CI/CD
정리 보기
서버에 직접 배포하는 방식에서 컨테이너 기반 배포로 넘어가는 단계입니다.
Docker
- 이미지 빌드와 Dockerfile 작성
- 레이어 캐시, multi-stage build
- Docker Compose로 로컬 개발 환경 구성
- 레지스트리(Docker Hub, ECR 등)에 이미지 push
CI/CD (Continuous Integration / Continuous Delivery)
- GitHub Actions, GitLab CI, Jenkins 중 하나 선택
- 파이프라인 구성: 빌드 → 테스트 → 배포
- 환경 변수, secrets 관리
- 브랜치별 배포 전략 (dev, staging, production)
Python 스크립팅
- 배포 자동화 스크립트 작성
- API 호출 (requests, boto3)
- 로그 파싱, 데이터 가공
- 간단한 CLI 도구 만들기
3. 클라우드와 IaC (Infrastructure as Code)
정리 보기
직접 서버를 관리하는 것에서 클라우드 인프라를 코드로 관리하는 단계로 넘어갑니다.
클라우드 (AWS 기준)
- EC2 (가상 서버), VPC (가상 네트워크), 서브넷, 보안그룹
- S3 (객체 스토리지), IAM (권한 관리), RDS (관리형 DB)
- ELB — ALB (L7, HTTP/HTTPS) / NLB (L4, TCP · UDP · TLS), Route 53 (DNS)
- CloudWatch 기본 모니터링
Terraform
- HCL (HashiCorp Configuration Language) 문법, provider, resource
- state 관리와 remote backend
- module로 재사용 가능한 구조 만들기
- plan → apply → destroy 흐름
Ansible
- 서버 설정 자동화 (패키지 설치, 파일 배포, 서비스 관리)
- playbook, role 구조
- 여러 서버에 동시 적용
- Terraform으로 인프라 만들고, Ansible로 설정하는 조합
4. 오케스트레이션과 모니터링
정리 보기
컨테이너를 대규모로 운영하고, 시스템 상태를 관측할 수 있는 단계입니다.
Kubernetes
- Pod, Service, Deployment, ReplicaSet
- ConfigMap, Secret
- Ingress, 네트워크 정책
- 리소스 관리 (requests, limits)
- kubectl 사용법과 디버깅
Helm
- Chart 구조 이해
- values.yaml로 환경별 설정 분리
- 공개 Chart 사용과 커스터마이징
모니터링
- Prometheus: 메트릭 수집, PromQL
- Grafana: 대시보드 구성, 알림 설정
- 메트릭 설계: 무엇을 측정할 것인가
로그
- ELK Stack (Elasticsearch: 검색 엔진, Logstash: 로그 수집/변환, Kibana: 시각화) 또는 Loki
- 중앙 집중 로그 수집
- 로그 기반 알림
5. 심화 — Go, 보안, SRE, GitOps
정리 보기
기본기를 넘어 더 깊이 들어가는 단계입니다.
Go
- Docker, Kubernetes, Terraform이 Go로 만들어져 있습니다. Prometheus는 공식 FAQ 기준으로 대부분의 컴포넌트가 Go이고, 일부는 Java·Python·Ruby로 작성돼 있습니다
- CLI 도구 만들기
- K8s Operator, 커스텀 exporter 개발
- 바이너리 하나로 배포되는 장점 (Prometheus 서버도 외부 의존성 없는 단일 바이너리로 동작합니다)
보안
- Secrets 관리 (Vault, AWS Secrets Manager)
- 네트워크 정책, RBAC (Role-Based Access Control, 역할 기반 접근 제어)
- 컨테이너 이미지 취약점 스캔
- 공급망 보안 (supply chain security)
SRE (Site Reliability Engineering) 관점
- SLO (Service Level Objective, 서비스 목표 수준) / SLI (Service Level Indicator, 서비스 수준 지표) 정의와 에러 버짓
- Incident 대응 프로세스
- 포스트모템 작성
- Chaos Engineering (장애 주입 테스트)
GitOps
- ArgoCD 또는 Flux
- Git을 single source of truth로 사용
- 선언적 배포와 자동 동기화
- 롤백 전략
공부 방법
단계별로 만들어볼 수 있는 프로젝트 예시입니다.
| 단계 | 프로젝트 예시 |
|---|---|
| 1단계 | 서버 상태 점검 Shell Script 작성 |
| 2단계 | 개인 앱을 Docker화하고 GitHub Actions로 자동 배포 |
| 3단계 | Terraform으로 AWS에 VPC + EC2 + RDS 환경 구성 |
| 4단계 | K8s에 앱 배포 + Prometheus/Grafana 모니터링 |
| 5단계 | ArgoCD로 GitOps 파이프라인 구성 |