온프레미스와 클라우드 모두에서 통하는 실무 인프라 운영 역량
서버 운영, Web/WAS 미들웨어, 배포, 장애 대응, 보안까지 실무 인프라 엔지니어의 전체 역량을 체계적으로 다룹니다.
🎯 완료 후 할 수 있는 것
📋 커리큘럼
총 52개 모듈01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
🧪 실습 Labs
개념을 익혔다면 직접 손으로 해보는 시간. 서버에서 따라하고 verify.sh로 검증하세요.
Nginx 설치 및 기동
초급Linux 서버에 Nginx를 설치하고 systemd 서비스로 등록하여 80포트에서 응답하는 상태까지 만든다.
배포 후 502 — 원인 찾기
중급Spring Boot 앱 배포 직후 Nginx 502 에러가 발생했다. 에러 로그와 프로세스 상태를 분석해 원인을 파악하고 서비스를 복구한다.
GitHub Actions — CI 파이프라인 구축
초급팀이 Jenkins에서 GitHub Actions로 CI를 전환하는 과정에서 기본 파이프라인을 구성하는 실습. .github/workflows/ci.yml 작성(push/PR 트리거) → 빌드+테스트 단계 → 아티팩트 업로드 → 시크릿 참조까지 4단계. YAML 문법과 Actions 생태계의 핵심 개념을 파악한다.
Nginx 리버스 프록시 + SSL 설정
중급Node.js 앱 앞에 Nginx를 배치해 리버스 프록시를 구성하고, self-signed 인증서로 HTTPS를 적용한다.
Prometheus + Grafana — 인프라 모니터링 구축
중급서버 CPU/메모리/디스크 사용률을 Prometheus + Grafana로 실시간 모니터링하는 스택 구축. Node Exporter 설치 → Prometheus scrape 설정 → Grafana 데이터소스 연동 → 대시보드 임포트(ID:1860) 4단계. 설치형 모니터링 스택의 핵심 구조와 메트릭 수집 원리를 이해한다.
Jenkins 빌드 실패 — 로컬에선 됩니다
중급CI 파이프라인이 실패했다. 빌드 로그를 분석해 원인 2가지를 파악하고 Jenkinsfile을 수정해 파이프라인을 복구한다.
Tomcat WAS 응답 지연 — 스레드 풀·GC 진단
중급CPU는 한가한데 WAS가 느리다. 원인은 보통 둘 중 하나다: 스레드 풀 고갈(maxThreads 부족·느린 외부 호출로 스레드가 묶임) 또는 GC 폭주(힙 부족·풀 GC 빈발). 스레드 덤프와 GC 로그로 어느 쪽인지 가르고, Connector/힙 설정을 근거 있게 조정한다.
SSL 인증서 갱신 운영 — 만료 진단부터 자동 갱신까지
중급인증서 만료는 예고된 장애다. openssl로 현재 인증서의 만료일·체인·도메인을 진단하고, certbot으로 갱신한 뒤 웹서버에 무중단 반영하고, systemd timer(또는 cron)로 자동 갱신을 걸어 "만료"라는 사건 자체를 없앤다. 갱신 후 reload를 잊어 옛 인증서가 서빙되는 흔한 함정도 다룬다.
흩어진 로그 추적 — 다중 서버 로그 집계와 상관 분석
중급6대 서버에 흩어진 로그에서 "2시 10분 결제 실패"의 원인을 찾는다. 시간 동기화(타임존/NTP)와 요청 ID(trace id)가 왜 집계의 전제인지 체감하고, journalctl/grep으로 시간창을 좁히고, 여러 서버 로그를 하나의 타임라인으로 합쳐 근본 원인을 특정한다. 중앙 집계가 없을 때의 응급 추적과, 있어야 하는 이유를 함께 다룬다.
로드밸런서 헬스체크·페일오버 — 죽은 노드로 트래픽이 가는 이유
중급백엔드 1대가 죽었는데 LB가 계속 그쪽으로 보내 502가 절반씩 난다. 헬스체크가 왜 동작하지 않는지(경로·주기·임계치) 진단하고, 헬스체크를 바로잡아 죽은 노드를 풀에서 자동 제외하고, 노드를 살린 뒤 자동 복귀까지 확인한다. 헬스체크 경로가 실제 서비스 상태를 반영하는지(얕은 체크의 함정)도 다룬다.
나쁜 배포 즉시 롤백 — "먼저 되돌리고, 원인은 나중에"
중급배포 직후 에러율이 폭증했다. 장애 대응의 철칙은 "원인 분석보다 복구 우선"이다. 배포와 장애의 시간 상관으로 신규 릴리스를 범인으로 특정하고, 안전하게 직전 버전으로 롤백하고, 에러율 회복을 확인한다. DB 마이그레이션이 섞인 배포의 롤백 함정(되돌릴 수 없는 변경)과 롤백을 빠르게 만드는 배포 구조(블루-그린/심링크)도 다룬다.
백업 복구 리허설 — RPO·RTO를 실제로 검증하기
중급"백업은 있는데 복구는 안 해봤다"가 진짜 위험이다. 백업의 무결성·신선도를 점검하고, 격리 환경에서 실제로 복구해 데이터가 살아나는지 검증하고, 복구에 걸린 시간(RTO)과 잃은 데이터 구간(RPO)을 측정한다. PITR(특정 시점 복구) 개념과 백업이 조용히 깨지는 흔한 원인(권한·용량·암호키)도 다룬다.
서버 침해 의심 대응 — 격리·조사·증거 보존
고급새벽에 의심스러운 프로세스와 아웃바운드 트래픽이 발견됐다. 침해 대응의 원칙은 "끄지 말고 격리, 지우지 말고 보존"이다. 의심 프로세스·네트워크 연결·지속성(크론/서비스/SSH 키)을 조사하고, 네트워크를 격리하면서 휘발성 증거를 보존하고, 침투 경로 단서를 로그에서 찾는다. 성급한 재부팅·삭제가 왜 최악인지 체득한다.
배치 스케줄러 장애 — cron이 "등록은 됐는데 안 도는" 이유
중급cron에 등록된 야간 배치가 실행되지 않았다. cron 미실행의 원인은 거의 정해져 있다: 환경변수/PATH 차이, 로그 미수집으로 실패를 모름, 시간대/시각 오해, 중복·과다 실행. 실행 여부를 로그로 확인하고, 환경 차이를 재현·교정하고, 멱등성·잠금(중복 방지)과 모니터링까지 더해 "조용한 실패"를 없앤다.
환경 설정 드리프트 — "스테이징은 되는데 운영만 안 됨"
중급같은 코드가 환경마다 다르게 동작한다. 원인은 코드가 아니라 환경별 설정 차이(누락된 환경변수, 다른 시크릿, 잘못된 엔드포인트)다. 환경 간 설정을 안전하게 비교(시크릿 값은 가리고 키만)하고, 차이를 특정하고, 12-factor 원칙대로 설정을 코드에서 분리해 드리프트를 구조적으로 막는다.
systemd 서비스 부팅 실패 — 자동 기동·의존성·순서 진단
중급재부팅 후 서비스가 자동으로 안 뜬다. 수동 start는 되는데. 원인은 (1) enable 누락(자동 시작 미등록), (2) 의존성/순서 문제(DB·네트워크·마운트가 준비되기 전에 기동), (3) 환경/권한 차이다. enable·journalctl·의존성으로 진단하고, After/Requires와 재시작 정책으로 부팅 후 안정 기동을 보장한다.