주니어 DevOps 엔지니어 면접 질문: 완벽 가이드

Milad Bonakdar
작성자
주니어 DevOps 엔지니어를 위한 Linux, Git, CI/CD, Docker, 클라우드 기본 사항 및 IaC를 다루는 포괄적인 면접 질문으로 필수 DevOps 기본 사항을 마스터하세요.
소개
DevOps 엔지니어링은 개발과 운영을 연결하며 자동화, 협업 및 지속적인 개선에 중점을 둡니다. 주니어 DevOps 엔지니어로서 Linux, 버전 관리, CI/CD 파이프라인, 컨테이너화 및 클라우드 플랫폼에 대한 기본적인 지식이 필요합니다.
이 가이드에서는 주니어 DevOps 엔지니어를 위한 필수 면접 질문을 주제별로 정리하여 효과적으로 준비할 수 있도록 돕습니다. 각 질문에는 자세한 답변, 실제 예제 및 실습 코드 스니펫이 포함되어 있습니다.
Linux 기본 사항
1. DevOps 엔지니어로서 매일 사용하는 일반적인 Linux 명령어를 설명하십시오.
답변: DevOps 작업에 필수적인 Linux 명령어:
희소성: 매우 흔함 난이도: 쉬움
2. Linux에서 서비스가 시작되지 않을 때 어떻게 문제를 해결합니까?
답변: 체계적인 문제 해결 접근 방식:
일반적인 문제:
- 구성 구문 오류
- 포트가 이미 사용 중
- 권한 거부
- 누락된 종속성
- 디스크 공간 부족
희소성: 매우 흔함 난이도: 중간
Git을 사용한 버전 관리
3. 기본적인 Git 워크플로우와 일반적인 명령어를 설명하십시오.
답변: DevOps 작업에 대한 Git 워크플로우:
모범 사례:
- 명확한 커밋 메시지 작성
- 자주 커밋하고 정기적으로 푸시
- 기능 브랜치 사용
- 푸시하기 전에 풀
- 커밋하기 전에 변경 사항 검토
희소성: 매우 흔함 난이도: 쉬움
4. Git에서 병합 충돌을 어떻게 해결합니까?
답변: 단계별 충돌 해결:
충돌 마커:
<<<<<<< HEAD- 현재 브랜치=======- 구분 기호>>>>>>> branch-name- 들어오는 변경 사항
희소성: 흔함 난이도: 쉬움-중간
CI/CD 기본 사항
5. CI/CD란 무엇이며 왜 중요한가요?
답변: CI/CD는 Continuous Integration(지속적 통합) 및 Continuous Deployment/Delivery(지속적 배포/전달)를 의미합니다.
Continuous Integration (CI):
- 모든 커밋에 대해 자동으로 코드 빌드 및 테스트
- 버그를 조기에 발견
- 코드가 제대로 통합되도록 보장
Continuous Deployment (CD):
- 테스트 통과 후 자동으로 프로덕션 환경에 배포
- 빠른 릴리스 주기
- 수동 오류 감소
장점:
- 빠른 피드백 루프
- 통합 문제 감소
- 자동화된 테스트
- 일관된 배포
- 빠른 시장 출시 시간
희소성: 매우 흔함 난이도: 쉬움
6. GitHub Actions를 사용하여 기본적인 CI/CD 파이프라인을 설명하십시오.
답변: GitHub Actions 워크플로우 예제:
주요 개념:
- 트리거: 파이프라인 실행 시점 (푸시, PR, 스케줄)
- 작업: 병렬로 실행될 수 있는 독립적인 작업
- 단계: 작업 내의 개별 명령어
- 아티팩트: 작업 간에 전달되는 파일
희소성: 매우 흔함 난이도: 중간
Docker & 컨테이너화
7. Docker란 무엇이며 컨테이너를 사용하는 이유는 무엇입니까?
답변: Docker는 컨테이너에서 애플리케이션을 개발, 배송 및 실행하기 위한 플랫폼입니다.
컨테이너 vs VM:
- 컨테이너는 호스트 OS 커널을 공유 (경량)
- VM은 전체 OS를 포함 (무거움)
- 컨테이너는 몇 초 안에 시작
- 더 나은 자원 활용
장점:
- 일관성: 어디에서나 동일한 환경
- 격리: 앱이 간섭하지 않음
- 이식성: 어디서든 실행 가능
- 효율성: 가볍고 빠름
희소성: 매우 흔함 난이도: 쉬움
8. 일반적인 Docker 명령어를 설명하십시오.
답변: 필수 Docker 명령어:
희소성: 매우 흔함 난이도: 쉬움
9. 웹 애플리케이션과 데이터베이스를 위한 docker-compose.yml을 작성하십시오.
답변: 다중 컨테이너 애플리케이션 예제:
주요 개념:
- services: 컨테이너 정의
- depends_on: 서비스 종속성
- volumes: 영구 데이터 저장소
- environment: 환경 변수
- ports: 포트 매핑
- restart: 재시작 정책
희소성: 흔함 난이도: 중간
클라우드 기본 사항
10. IaaS, PaaS 및 SaaS의 차이점을 설명하십시오.
답변: 클라우드 서비스 모델:
IaaS (Infrastructure as a Service):
- 제공: 가상 머신, 스토리지, 네트워크
- 관리: OS, 런타임, 애플리케이션
- 예: AWS EC2, Azure VMs, Google Compute Engine
- 사용 사례: 인프라에 대한 완전한 제어
PaaS (Platform as a Service):
- 제공: 런타임 환경, 데이터베이스, 미들웨어
- 관리: 애플리케이션 및 데이터
- 예: AWS Elastic Beanstalk, Heroku, Google App Engine
- 사용 사례: 인프라가 아닌 코드에 집중
SaaS (Software as a Service):
- 제공: 완전한 애플리케이션
- 관리: 사용자 데이터 및 설정
- 예: Gmail, Salesforce, Office 365
- 사용 사례: 즉시 사용 가능한 애플리케이션
희소성: 흔함 난이도: 쉬움
11. DevOps 엔지니어가 알아야 할 기본적인 AWS 서비스는 무엇입니까?
답변: 필수 AWS 서비스:
컴퓨팅:
- EC2: 가상 서버
- Lambda: 서버리스 함수
- ECS/EKS: 컨테이너 오케스트레이션
스토리지:
- S3: 객체 스토리지
- EBS: EC2용 블록 스토리지
- EFS: 공유 파일 스토리지
네트워킹:
- VPC: 가상 사설 클라우드
- Route 53: DNS 서비스
- CloudFront: CDN
- ELB: 로드 밸런싱
데이터베이스:
- RDS: 관리형 관계형 데이터베이스
- DynamoDB: NoSQL 데이터베이스
DevOps 도구:
- CodePipeline: CI/CD 서비스
- CodeBuild: 빌드 서비스
- CloudWatch: 모니터링 및 로깅
- IAM: 액세스 관리
예제: AWS CLI로 EC2 인스턴스 시작:
희소성: 매우 흔함 난이도: 중간
Infrastructure as Code
12. Infrastructure as Code (IaC)란 무엇이며 왜 중요한가요?
답변: IaC는 수동 프로세스 대신 코드를 통해 인프라를 관리하는 것입니다.
장점:
- 버전 관리: 인프라 변경 사항 추적
- 재현성: 동일한 환경 생성
- 자동화: 수동 오류 감소
- 문서화: 코드가 문서 역할
- 일관성: 어디에서나 동일한 구성
인기 있는 IaC 도구:
- Terraform: 멀티 클라우드 프로비저닝
- Ansible: 구성 관리
- CloudFormation: AWS 전용
- Pulumi: 코드 기반 IaC
Terraform 예제:
희소성: 매우 흔함 난이도: 중간
13. 기본적인 Terraform 워크플로우를 설명하십시오.
답변: Terraform 워크플로우 단계:
Terraform 파일 구조:
변수 예제:
희소성: 흔함 난이도: 중간
모니터링 & 로깅
14. 웹 애플리케이션에 대해 어떤 메트릭을 모니터링하시겠습니까?
답변: 주요 모니터링 메트릭:
애플리케이션 메트릭:
- 응답 시간 / 지연 시간
- 요청 속도 (초당 요청 수)
- 오류율 (4xx, 5xx 오류)
- 처리량
시스템 메트릭:
- CPU 사용량
- 메모리 사용량
- 디스크 I/O
- 네트워크 I/O
인프라 메트릭:
- 컨테이너/파드 상태
- 서비스 가용성
- 로드 밸런서 상태
Prometheus 쿼리 예제:
경고 임계값:
- 응답 시간 > 500ms
- 오류율 > 1%
- CPU 사용량 > 80%
- 메모리 사용량 > 85%
- 디스크 사용량 > 90%
희소성: 흔함 난이도: 중간
15. 여러 서버에서 로그를 어떻게 중앙 집중화합니까?
답변: 중앙 집중식 로깅 아키텍처:
일반적인 스택 (ELK):
- Elasticsearch: 로그 저장 및 인덱싱
- Logstash/Fluentd: 로그 수집 및 처리
- Kibana: 로그 시각화 및 검색
Filebeat 구성 예제:
모범 사례:
- 구조화된 로깅 사용 (JSON)
- 상관 관계 ID 포함
- 보존 정책 설정
- 전략적으로 인덱싱
- 로그 볼륨 모니터링
희소성: 흔함 난이도: 중간
Kubernetes 기본 사항
16. Kubernetes란 무엇이며 기본 구성 요소는 무엇입니까?
답변: Kubernetes는 컨테이너화된 애플리케이션의 배포, 스케일링 및 관리를 자동화하는 컨테이너 오케스트레이션 플랫폼입니다.
기본 구성 요소:
제어 평면:
- API 서버: 모든 명령의 진입점
- etcd: 클러스터 데이터용 키-값 저장소
- 스케줄러: 노드에 파드 할당
- 컨트롤러 관리자: 원하는 상태 유지
워커 노드:
- kubelet: 노드에서 파드 관리
- kube-proxy: 네트워크 라우팅
- 컨테이너 런타임: 컨테이너 실행 (Docker, containerd)
기본 Kubernetes 객체:
1. 파드:
2. 배포:
3. 서비스:
일반적인 kubectl 명령어:
희소성: 매우 흔함 난이도: 쉬움
구성 관리
17. Ansible 기본 사항을 설명하고 간단한 플레이북을 작성하십시오.
답변: Ansible은 SSH를 사용하여 서버를 구성하는 에이전트리스 구성 관리 도구입니다.
주요 개념:
- 인벤토리: 관리할 서버 목록
- 플레이북: 작업을 정의하는 YAML 파일
- 모듈: 재사용 가능한 작업 단위
- 역할: 구성된 작업 모음
인벤토리 파일:
간단한 플레이북:
템플릿 예제:
플레이북 실행:
Ansible 역할 구조:
역할 사용:
애드혹 명령어:
희소성: 흔함 난이도: 중간
스크립팅 & 자동화
18. 일반적인 DevOps 작업을 자동화하는 bash 스크립트를 작성하십시오.
답변: Bash 스크립팅은 DevOps에서 자동화에 필수적입니다.
예제 1: 백업 스크립트
예제 2: 상태 확인 스크립트



