개요
DevOps는 범위가 넓어서 어디서부터 시작해야 할지 막막할 수 있습니다. 이 글은 실무에서 실제로 쓰이는 순서를 기준으로, 단계별로 무엇을 익혀야 하는지 정리합니다.
각 단계를 완벽하게 끝내고 넘어가는 것보다, 핵심을 잡고 다음 단계로 넘어가는 것이 더 효과적입니다.
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, 에러 핸들링
- 10~50줄 규모의 운영 스크립트
이 단계는 빠르게 지나가되, 장애가 발생했을 때 서버에 접속해서 상태를 확인할 수 있는 수준을 목표로 합니다.
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 도구 만들기
이 단계에서 개인 프로젝트 하나를 Docker로 감싸고, push하면 자동 배포되는 파이프라인을 직접 만들어보면 가장 효과적입니다.
3. 클라우드와 IaC (Infrastructure as Code)
정리 보기
직접 서버를 관리하는 것에서 클라우드 인프라를 코드로 관리하는 단계로 넘어갑니다.
클라우드 (AWS 기준)
- EC2 (가상 서버), VPC (가상 네트워크), 서브넷, 보안그룹
- S3 (객체 스토리지), IAM (권한 관리), RDS (관리형 DB)
- ELB — ALB (HTTP 로드밸런서) / NLB (TCP 로드밸런서), Route 53 (DNS)
- CloudWatch 기본 모니터링
Terraform
- HCL (HashiCorp Configuration Language) 문법, provider, resource
- state 관리와 remote backend
- module로 재사용 가능한 구조 만들기
- plan → apply → destroy 흐름
Ansible
- 서버 설정 자동화 (패키지 설치, 파일 배포, 서비스 관리)
- playbook, role 구조
- 여러 서버에 동시 적용
- Terraform으로 인프라 만들고, Ansible로 설정하는 조합
이 단계부터 차별화가 시작됩니다. AWS Solutions Architect Associate 같은 자격증을 여기서 함께 준비하면 이력서에도 도움이 됩니다.
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
- 중앙 집중 로그 수집
- 로그 기반 알림
이 단계에서 실제 앱을 K8s에 올리고, 모니터링과 알림까지 연결해보는 프로젝트를 만들면 포트폴리오로 쓸 수 있습니다.
5. 심화 — Go, 보안, SRE, GitOps
정리 보기
기본기를 넘어 더 깊이 들어가는 단계입니다.
Go
- Docker, Kubernetes, Terraform, Prometheus 모두 Go로 작성됨
- CLI 도구 만들기
- K8s Operator, 커스텀 exporter 개발
- 바이너리 하나로 배포되는 장점
보안
- 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로 사용
- 선언적 배포와 자동 동기화
- 롤백 전략
이 단계는 주니어를 넘어 중급 이상의 DevOps/SRE 엔지니어로 가는 영역입니다.
공부 방법
각 단계마다 프로젝트를 하나씩 만들어보는 것이 가장 효과적입니다.
| 단계 | 프로젝트 예시 |
|---|---|
| 1단계 | 서버 상태 점검 Shell Script 작성 |
| 2단계 | 개인 앱을 Docker화하고 GitHub Actions로 자동 배포 |
| 3단계 | Terraform으로 AWS에 VPC + EC2 + RDS 환경 구성 |
| 4단계 | K8s에 앱 배포 + Prometheus/Grafana 모니터링 |
| 5단계 | ArgoCD로 GitOps 파이프라인 구성 |
완벽하게 이해하고 넘어가기보다, 직접 만들어보고 부딪히면서 부족한 부분을 채워가는 방식이 현실적입니다.
정리
DevOps는 하나의 도구를 깊이 파는 것보다, 여러 도구를 연결해서 흐름을 만드는 능력이 중요합니다. Linux에서 출발해서 컨테이너, CI/CD, 클라우드, 오케스트레이션까지 하나씩 연결해 나가면 됩니다.