46 자주 묻는 DevOps 인터뷰 질문 및 답변 [2023]
데브옵스 면접을 준비하고 계신가요? 어떤 질문이 나올지 궁금하신가요? 이 가이드가 면접 준비에 도움을 드릴 것입니다.
데브옵스(DevOps)라는 용어가 2007~2008년에 처음 등장했지만, 이제는 소프트웨어 엔지니어링 분야에서 가장 인기 있는 직업 중 하나로 자리 잡았습니다. 데브옵스는 개발과 운영 전반에 걸쳐 영향을 미치는 중요한 문화적 변화입니다.
개발팀과 운영팀은 협력하여 계획, 구축, 모니터링, 반복 등 전체 프로세스를 함께 진행합니다. 데브옵스 엔지니어 직무를 찾고 있다면 다음 질문들을 마주칠 가능성이 높습니다.
데브옵스란 무엇인가?
데브옵스(DevOps)는 개발(Development)과 운영(Operations)의 합성어입니다. 이 소프트웨어 엔지니어링 방식은 개발팀과 운영팀이 협력하여 프로젝트의 모든 단계를 자동화하는 것을 목표로 합니다. 데브옵스 팀은 리소스 관리, 소통, 팀워크를 중요하게 생각합니다.
데브옵스 방법론의 단계는 무엇인가?
- 지속적 개발: 계획 및 코딩 단계입니다.
- 지속적 통합: 개발팀이 여러 구성 요소를 통합하고 코드의 무결성을 유지하는 단계입니다.
- 지속적 테스트: 미리 계획되고 자동화된 테스트를 실행하는 단계입니다.
- 지속적 배포: 전체 애플리케이션의 성능에 영향을 주지 않으면서 원활하게 개발을 진행하는 단계입니다.
- 지속적 모니터링: 애플리케이션의 전반적인 효율성을 지속적으로 확인하는 단계입니다.
- 지속적 피드백: 최종 사용자가 보고한 문제와 성능을 분석하는 단계입니다.
- 지속적 운영: 개발자가 제품의 개선된 버전을 만들고 문제를 빠르게 감지할 수 있도록 지원하는 단계입니다.
데브옵스의 이점은 무엇인가?
- 더 빠르고 나은 품질의 제품 출시
- 향상된 확장성
- 빠른 문제 해결
- 자원 활용도 향상
주요 데브옵스 KPI는 무엇인가?
- 배포 빈도
- 변경 횟수
- 배포 소요 시간
- 실패한 배포 비율
- 문제 감지 시간
- 결함 회피율
데브옵스와 애자일의 차이점은 무엇인가?
데브옵스는 소프트웨어 개발 및 유지보수에 관련된 모든 팀원 간의 협력을 촉진하는 문화입니다.
애자일은 팀의 생산성을 높이고 변화하는 요구사항에 맞춰 릴리스를 추진하는 개발 방법론입니다.
데브옵스에서 AWS의 역할은 무엇인가?
AWS는 기업이 안정적이고 신속하게 애플리케이션을 개발할 수 있도록 다양한 유연한 서비스를 제공합니다. AWS 서비스는 코드 배포, 인프라 프로비저닝 및 간소화, 소프트웨어 릴리스 프로세스 자동화, 인프라 성능 모니터링을 간소화합니다.
SSH의 용도는 무엇인가?
SSH(Secure Shell)는 서로 다른 컴퓨터 간에 안전한 연결을 제공하는 프로토콜입니다. SSH는 강력한 인증, 강력한 암호화, 연결 무결성 유지, 보안 연결 제공 등 다양한 목적으로 사용됩니다.
지속적 통합이란 무엇인가?
지속적 통합은 소프트웨어 개발자가 코드를 중앙 저장소에 병합할 수 있게 해줍니다. 그 후, 자동화된 빌드 및 테스트를 통해 코드를 검증합니다.
구성 관리란 무엇인가?
구성 관리는 시스템 또는 제품의 수명 주기 동안 성능, 기능, 물리적 특성의 일관성을 설정하고 유지하는 시스템 엔지니어링 프로세스입니다.
지속적 테스트란 무엇인가?
지속적 테스트는 개발 과정에서 미리 계획되고 자동화된 애플리케이션 테스트를 실행하는 것을 의미합니다.
Git이란 무엇인가?
Git은 소스 코드 관리를 위한 오픈 소스 버전 관리 도구입니다. 이 도구는 크고 작은 프로젝트를 모두 처리할 수 있도록 설계되었습니다.
기본 Git 명령어는 무엇인가?
git clone <https://name-of-the-repository-link>
git branch <branch-name>
git checkout <name-of-your-branch>
git add <file>
git commit -m "commit message"
git push <remote> <branch-name>
git pull <remote>
Git merge와 Git rebase의 차이점은 무엇인가?
Git merge 명령어는 각 브랜치의 커밋 로그를 그대로 유지하면서 서로 다른 Git 브랜치를 병합하는 데 사용됩니다.
Git rebase 명령어는 한 브랜치의 변경 사항을 다른 브랜치에 통합하지만, 완료 후에는 로그가 변경됩니다.
Git fetch와 Git pull의 차이점은 무엇인가?
Git fetch는 원격 저장소에서 최신 메타데이터를 가져오지만, 파일은 다운로드하지 않습니다. 메타데이터 확인만 수행합니다.
Git pull은 원격 저장소에서 변경 사항을 확인하고 로컬 프로젝트에 다운로드합니다.
병합 충돌이란 무엇인가?
병합 충돌은 서로 다른 브랜치를 병합할 때, 두 브랜치에서 동일한 코드 줄 또는 파일이 변경된 경우 발생합니다.
버전 제어란 무엇이며 어떤 종류가 있나?
버전 제어(소스 제어)는 소프트웨어 코드의 변경 사항을 추적하고 관리하는 프로세스입니다.
버전 제어에는 여러 가지 유형이 있습니다.
- 중앙 집중식: 서버에 소스 코드의 단일 '중앙' 복사본이 있고 모든 변경 사항은 중앙 복사본에 커밋됩니다. Subversion(SVN) 및 Perforce가 그 예입니다.
- 분산 버전 제어 시스템(DVCS): 모든 프로젝트 파일을 저장하는 중앙 서버가 없습니다. Git과 Mercurial이 DVCS의 예입니다.
버전 제어를 사용하면 어떤 이점이 있나?
- 개발자의 효율성과 민첩성을 향상
- 프로젝트 및 파일 변경 사항의 전체 로그 제공
- 추적성 향상
- 병합 및 브랜치 관리 지원
- 협업 가능
분기란 무엇인가?
분기(Branching)는 메인 저장소에서 새로운 버전을 만들어내는 것을 의미합니다. 분기를 통해 메인 브랜치에 영향을 주지 않고 프로젝트의 여러 부분에서 작업할 수 있습니다.
분기 전략이란 무엇인가?
분기 전략은 소프트웨어 개발 팀이 코드를 작성, 병합, 배포할 때 사용하는 방법론입니다. 이러한 전략을 통해 버그와 실수가 메인 프로젝트에 병합되기 전에 분기 단계에서 수정됩니다.
자동화 테스트란 무엇이며 데브옵스에서 테스트를 자동화하는 방법은 무엇인가?
자동화 테스트는 코드를 자동으로 검토하고 유효성을 검사하는 기술입니다. 자동화 테스트는 기능(비즈니스 로직), 코드 스타일, 사용자 경험이 품질 표준을 충족하는지 확인하기 위해 실행됩니다.
Selenium, Katalon과 같은 도구를 사용하여 자동화 테스트를 수행할 수 있습니다.
Jenkinsfile이란 무엇인가?
Jenkinsfile은 Jenkins 파이프라인의 정의를 포함하는 텍스트 파일입니다. Jenkinsfile은 소스 제어 저장소에 저장됩니다. 파이프라인 감사 추적, 코드 검토 및 반복, 파이프라인에서 신뢰할 수 있는 단일 소스 제공 등의 용도로 사용됩니다.
Jenkins의 아키텍처를 설명하라
Jenkins는 마스터-슬레이브 아키텍처를 사용합니다. 즉, 하나의 '마스터'와 다수의 '슬레이브'가 있습니다. Jenkins 분산 빌드는 다양한 환경에서 동일한 테스트를 실행할 수 있으며, 결과는 마스터 노드에서 수집 및 결합됩니다.
주요 Jenkins 플러그인은 무엇인가?
- Blue Ocean 플러그인
- Mailer 플러그인
- Git 플러그인
- Jira 플러그인
- Docker 플러그인
- Maven Integration 플러그인
- Kubernetes 플러그인
- SonarQube 플러그인
- Amazon EC2 플러그인
Selenium IDE란 무엇인가?
Selenium IDE는 테스트 케이스에 대한 브라우저 상호 작용을 기록하는 도구입니다. Selenium 통합 개발 환경에서 오류가 발생하면 중단점을 설정하고 변수를 확인하고 일시 중지할 수 있습니다.
Selenium의 주요 구성 요소는 무엇인가?
(이 질문은 원본에 제목만 있고 내용이 없습니다. 내용을 추가하여 더 좋게 만들 수 있습니다.) Selenium 구성 요소에는 WebDriver, Selenium IDE, Selenium Grid 등이 있습니다. WebDriver는 브라우저를 제어하기 위한 인터페이스를 제공하고, Selenium IDE는 브라우저 상호 작용을 기록하고 재생하는 도구이며, Selenium Grid는 테스트를 병렬로 실행하여 테스트 속도를 높이는 데 사용됩니다.
Selenium에서 지원하는 다양한 테스트 유형은 무엇인가?
- 종단 간 테스트
- 회귀 테스트
- 시스템 테스트
- 성능 테스트
- 호환성 테스트
Selenium의 주요 예외 유형은 무엇인가?
- ElementNotSelectableException
- NoAlertPresentException
- InvalidSelectorException
- NoSuchSessionException
- StaleElementReferenceException
- NoSuchWindowException
- NoSuchFrameException
- NoSuchElementException
- TimeoutException
- ElementNotVisibleException
WebDriver에서 driver.close()와 driver.quit()의 차이점은 무엇인가?
driver.close() 명령어는 현재 포커스된 브라우저 창을 닫습니다. 만약 하나의 브라우저만 열려 있다면 전체 브라우저 세션을 닫습니다.
driver.quit() 명령어는 브라우저 팝업, 탭, 창을 포함하여 전체 브라우저 세션을 종료합니다.
Dockerfile이란 무엇인가?
Dockerfile은 사용자가 이미지를 만들기 위해 명령줄에서 사용할 수 있는 모든 명령이 포함된 텍스트 문서입니다.
Docker 이미지와 Docker 컨테이너의 차이점은 무엇인가?
Docker 이미지는 소스 코드, 도구, 라이브러리, 외부 종속성, 기타 운영 체제 또는 플랫폼에서 응용 프로그램을 성공적으로 실행하는 데 필요한 모든 파일로 구성된 읽기 전용 템플릿입니다.
Docker 컨테이너는 Docker 이미지 템플릿을 실행하는 가상화된 환경입니다.
Docker의 아키텍처를 설명하라
Docker는 클라이언트-서버 아키텍처를 따르며 Docker 클라이언트, Docker 호스트, Docker 레지스트리로 구성됩니다.
Docker 클라이언트는 REST API와 명령어를 사용하여 서버(Docker Daemon)와 통신합니다.
Docker 클라이언트는 CLI를 사용하여 이 명령을 실행합니다.
docker build
docker pull
docker run
- Docker 호스트는 애플리케이션을 실행할 수 있는 환경을 제공합니다. Docker 데몬, 스토리지, 이미지, 컨테이너, 네트워크로 구성됩니다.
- Docker Registry는 Docker 이미지를 관리하고 저장합니다.
Docker를 지원하는 클라우드 플랫폼은?
Docker를 지원하는 클라우드 플랫폼에는 AWS, Google Cloud, Azure 등이 있습니다.
Nagios란 무엇인가?
Nagios는 전체 IT 인프라를 모니터링하여 비즈니스 프로세스, 시스템, 서비스, 애플리케이션이 제대로 작동하는지 확인하는 도구입니다.
Nagios는 어떻게 작동하는가?
- 모니터링: IT 담당자는 네트워크 프로토콜, 시스템 메트릭, 애플리케이션, 네트워크 인프라, 서비스, 서버를 모니터링하도록 Nagios를 구성합니다.
- 알림: 중요한 구성 요소에 문제가 발생하면 Nagios가 알림을 보냅니다. 알림은 SMS, 사용자 정의 코드 또는 이메일을 통해 전송할 수 있습니다.
- 응답: IT 팀은 알림을 확인하고 필요한 조치를 취합니다.
- 보고서: 알림, 중단, 알림 응답, 이벤트의 기록이 포함된 보고서가 생성되어 나중에 검토할 수 있습니다.
- 유지보수: 예약된 가동 중지 시간 동안에는 알림이 전송되지 않도록 구성할 수 있습니다.
Nagios의 플러그인은 무엇인가?
- 공식 Nagios 플러그인: 공식 팀에서 개발하고 유지 관리합니다.
- 사용자 정의 플러그인: 개인이나 기업의 요구에 맞게 작성됩니다.
- 커뮤니티 플러그인: Nagios 커뮤니티 구성원이 개발합니다.
Nagios를 사용한 가상화 모니터링은?
Nagios는 다양한 가상화 플랫폼에서 여러 메트릭을 모니터링할 수 있습니다. Nagios는 Xen, Amazon EC2, VMware, Microsoft Virtual PC 등 다양한 가상화 플랫폼에서 실행할 수 있습니다.
Nagios는 모니터링에 어떻게 도움이 되는가?
Nagios는 NRPE, check_mk, SNMP와 같은 에이전트를 사용하여 서버에서 데이터를 수집하고 메트릭이 미리 정의된 임계값을 초과하면 알림을 보냅니다.
Nagios는 모니터링에 어떤 포트 번호를 사용하나?
SNMP(포트 161 및 162)를 사용합니다.
Nagios 네트워크 분석기란 무엇인가?
Nagios 네트워크 분석기는 사용자에게 네트워크 트래픽 및 IT 인프라에 대한 통찰력을 제공하여, 비정상적인 동작, 정전, 보안 위협을 사전에 해결할 수 있도록 도와주는 Sflow 데이터 분석 소프트웨어입니다.
Nagios에서 상속 및 재귀에 영향을 미치는 변수는?
- 이름: 객체 변수나 속성을 상속할 수 있는 템플릿의 '이름'입니다.
- 사용: 변수 또는 속성을 상속할 템플릿의 객체 이름을 지정합니다.
- 등록: 템플릿 객체의 이름을 Nagios에 '등록'해야 하는지 여부를 나타냅니다.
Puppet이란 무엇인가?
Puppet은 소프트웨어 구성 관리 및 배포를 위한 오픈 소스 도구입니다.
Puppet 매니페스트란 무엇인가?
Puppet 매니페스트는 리소스 구성 방법을 설명하는 Puppet 구성 언어가 포함된 파일입니다.
Puppet 코드는 무엇인가?
Puppet 코드는 선언적 코드입니다. 즉, 원하는 시스템 상태에 도달하기 위해 필요한 단계가 아니라 원하는 상태를 설명합니다.
Chef란 무엇인가?
Chef는 인프라를 코드로 변환하는 구성 관리 도구입니다. 이 도구는 수동 프로세스 대신 코드 작성에 중점을 둡니다.
Chef는 어떻게 작동하는가?
Chef 작업은 시스템 관리자 또는 개발자가 자동화할 작업을 정의하는 것으로 시작됩니다. 그 후 Test Kitchen, ChefSpec, Foodcritic과 같은 다양한 도구를 사용하여 쿡북(Cookbook)과 레시피(Recipe) (도메인 특화 언어로 작성된 작은 프로그램)를 캡처하고 테스트합니다.
쿡북과 레시피가 예상대로 작동하면 knife 및 chef 명령어 줄 도구를 사용하여 Chef 서버에 배포합니다. Chef 배포 프로세스에는 Chef 서버, 워크스테이션, 노드가 포함됩니다. 3000개가 넘는 쿡북 템플릿 중에서 선택하고 요구 사항에 맞게 사용자 지정할 수 있습니다. Chef가 나머지 작업을 처리합니다.
요약
Glassdoor에 따르면 데브옵스 엔지니어의 평균 연봉은 미국에서 연간 $104,281입니다. 데브옵스는 비교적 새로운 직업이지만, 많은 기업이 이 직무를 채용하고 전문가에게 필요한 기술을 교육하는 과정을 제공하는 추세입니다. 위에 제시된 질문들은 데브옵스 면접에서 자주 등장하는 질문들입니다.
데브옵스 관련 온라인 강의를 통해 학습을 더 심화할 수도 있습니다.