주니어 SRE 면접 질문과 답변

Milad Bonakdar
작성자
SLO, 오류 예산, 알림, 사고 대응, Linux 문제 해결, 자동화, Kubernetes 기초를 다루는 실전형 주니어 SRE 면접 질문을 준비하세요.
주니어 SRE 면접에서 보는 것
주니어 SRE 면접은 보통 사용자 영향에서 시스템 신호로 이어지는 사고 과정을 확인합니다. SLO, 오류 예산, 알림, 사고 대응, Linux 신호, 자동화, 컨테이너, Kubernetes 기본 운영이 핵심입니다. 시니어처럼 말할 필요는 없습니다. 차분하게 조사하고, 사고 중 명확히 소통하며, 위험을 숨기지 않고 반복 운영 작업을 자동화할 수 있음을 보여주면 됩니다.
각 질문으로 짧은 답변을 연습하고, 프로젝트, 실습 환경, 인턴 경험, 온콜 참관처럼 실제 사례와 연결해 설명해 보세요.
SRE 기본 사항
1. 사이트 안정성 엔지니어링이란 무엇이며 DevOps와 어떻게 다른가요?
답변: SRE는 Google에서 대규모 프로덕션 시스템을 안정적으로 운영하기 위해 사용하는 접근 방식입니다.
핵심 원칙:
- 운영을 소프트웨어 문제로 취급
- 운영 작업(Toil)에 최대 50%의 시간만 사용
- 안정성과 속도의 균형을 위한 오류 예산
- 무책임한(Blameless) 사고 후 분석 (Postmortems)
- 점진적인 롤아웃 및 자동화된 롤백
SRE vs DevOps:
SRE는 특정 실천 방법과 지표를 통해 DevOps 원칙을 구현합니다.
빈도: 매우 흔함 난이도: 쉬움
2. SLI, SLO 및 오류 예산에 대해 설명하세요.
답변: 이것들은 안정성을 측정하고 관리하기 위한 핵심 SRE 개념입니다.
SLI (Service Level Indicator, 서비스 수준 지표):
- 서비스 수준의 정량적 측정
- 예시: 지연 시간, 가용성, 오류율
SLO (Service Level Objective, 서비스 수준 목표):
- SLI의 목표 값
- 예시: "요청의 99.9%가 성공해야 함"
오류 예산 (Error Budget):
- 허용된 실패율 (100% - SLO)
- 안정성과 기능 개발 속도의 균형을 맞추는 데 사용
빈도: 매우 흔함 난이도: 중간
3. Toil이란 무엇이며 어떻게 줄일 수 있나요?
답변: Toil은 반복적이고 수동적인 운영 작업으로 다음과 같은 특징을 가집니다.
- 수동적임 (사람의 작업 필요)
- 반복적임
- 자동화 가능함
- 지속적인 가치가 없음
- 서비스 성장과 함께 선형적으로 증가함
Toil의 예시:
- 수동으로 서비스 재시작
- 서버 간 파일 복사
- 수동으로 리소스 확장
- 반복적인 티켓 응답
Toil 감소 전략:
SRE 목표: Toil을 시간의 50% 미만으로 유지하고 나머지는 자동화합니다.
빈도: 매우 흔함 난이도: 쉬움-중간
모니터링 및 관측 가능성
4. 모니터링과 관측 가능성의 차이점은 무엇인가요?
답변: 모니터링: 미리 정의된 메트릭 및 알림 수집
- Known-unknowns: 감시해야 할 대상을 알고 있음
- 대시보드, 알림, 메트릭
- 예시: CPU, 메모리, 요청률
관측 가능성: 출력으로부터 시스템 상태 이해
- Unknown-unknowns: 예상치 못한 문제 디버깅
- 로그, 메트릭, 추적 결합
- 임의의 질문에 답변 가능
관측 가능성의 세 가지 기둥:
- 메트릭: 집계된 숫자 (CPU, 지연 시간)
- 로그: 개별 이벤트
- 추적: 시스템을 통한 요청 흐름
예시: Prometheus + Grafana + Loki
빈도: 흔함 난이도: 중간
5. 효과적인 알림을 설정하는 방법은 무엇인가요?
답변: 좋은 알림은 실행 가능하고 의미 있으며 피로감을 유발하지 않습니다.
알림 모범 사례:
1. 원인이 아닌 증상에 대한 알림:
2. 런북 링크 포함:
3. 적절한 심각도 수준 사용:
4. 알림 피로 방지:
for:지속 시간을 사용하여 깜박거림 방지- 관련 알림 그룹화
- 적절한 임계값 설정
- 정기적으로 검토 및 조정
빈도: 매우 흔함 난이도: 중간
사고 대응
6. 사고 대응 프로세스를 설명하세요.
답변: 구조화된 사고 대응은 영향과 복구 시간을 최소화합니다.
사고 대응 단계:
1. 감지:
- 알림 발생 또는 사용자 문제 보고
- 알림 확인
- 사고 채널 생성
2. 분류:
3. 완화:
4. 해결:
- 근본 원인 수정
- 메트릭이 정상으로 돌아왔는지 확인
- 재발 여부 모니터링
5. 사고 후 분석 (무책임):
빈도: 매우 흔함 난이도: 중간
7. 지연 시간이 높은 서비스를 어떻게 문제 해결하나요?
답변: 체계적인 디버깅 접근 방식:
일반적인 원인:
- 데이터베이스 느린 쿼리
- 외부 API 시간 초과
- 메모리 부족 (GC 일시 중지)
- 네트워크 문제
- 리소스 소진
- 비효율적인 코드 경로
빈도: 매우 흔함 난이도: 중간
자동화 및 스크립팅
8. 서비스가 정상인지 확인하고 필요한 경우 다시 시작하는 스크립트를 작성하세요.
답변: 상태 확인 및 자동 복구 스크립트:
빈도: 흔함 난이도: 중간
안정성 확보를 위한 실무
9. 런북이란 무엇이며 왜 중요한가요?
답변: 런북은 운영 작업 및 사고 처리를 위한 문서화된 절차입니다.
런북 구조:
2. 병목 지점 식별
- 데이터베이스 쿼리 시간 확인
- 외부 API 호출 확인
- 캐시 적중률 확인
- 최근 배포 검토
3. 종속성 확인
완화 단계
빠른 수정 (< 5분)
- 애플리케이션 인스턴스 확장
- 캐시 TTL 임시 증가
문제가 지속되는 경우
- 최근 배포 롤백
- 속도 제한 활성화
해결
- 근본 원인 수정 (느린 쿼리, 비효율적인 코드)
- 수정 사항 배포
- 30분 동안 모니터링
- 정상 용량으로 축소
에스컬레이션
30분 이내에 해결할 수 없는 경우:
- 에스컬레이션 대상: @backend-team
- Slack 채널: #incidents
- 당직: PagerDuty 에스컬레이션 정책 사용
관련 항목
2. 회로 차단기:
3. 시간 초과 및 재시도:
빈도: 흔함 난이도: 중간
컨테이너화 기본 사항
11. Docker란 무엇이며 가상 머신과 어떻게 다른가요?
답변: Docker는 애플리케이션을 종속성과 함께 패키징하는 컨테이너화 플랫폼입니다.
컨테이너 vs 가상 머신:
주요 차이점:
Docker 기본 사항:
Dockerfile 예시:
빌드 및 실행:
Docker Compose (다중 컨테이너):
Docker Compose로 실행:
모범 사례:
- 공식 기본 이미지 사용
- 레이어 수 최소화
- 루트로 실행하지 않기
- .dockerignore 사용
- 이미지 태그 적절하게 지정
- 취약점 스캔
빈도: 매우 흔함 난이도: 쉬움-중간
버전 관리 및 배포
12. Git 워크플로우와 배포 처리 방법을 설명하세요.
답변: Git은 버전 관리 및 배포 자동화에 필수적입니다.
일반적인 Git 워크플로우:
기본 Git 명령어:
분기 전략:
1. Gitflow:
main: 프로덕션 준비 코드develop: 통합 브랜치feature/*: 새로운 기능release/*: 릴리스 준비hotfix/*: 긴급 수정
2. Trunk-Based Development:
배포 워크플로우:
1. CI/CD 파이프라인 (GitHub Actions):
2. 배포 스크립트:
마무리
주니어 SRE 면접은 SLO, 알림, 사고 대응, Linux 문제 해결, 안전한 자동화를 실제 사례와 함께 설명할 수 있는지 확인합니다. 좋은 답변은 명령어만 나열하지 않습니다. 사용자 영향을 먼저 파악하고, 신뢰할 수 있는 신호를 확인하고, 낮은 위험으로 완화한 뒤, 배운 점을 문서화하는 흐름을 보여줍니다.


