자주 묻는 20가지 DevOps 인터뷰 질문 및 답변 [2022]

DevOps는 DevOps 전문가에 대한 수요 증가로 이어지는 애플리케이션을 구축 및 배포하는 인기 있는 방법이 되고 있습니다.

이 기사에서는 가장 자주 묻는 DevOps 인터뷰 질문과 그에 대한 답변을 다룹니다. 이러한 질문을 학습의 핵심으로 사용하면 고용 가능성을 높일 수 있으며, 채용 담당자인 경우 채용 과정에서 도움이 될 수 있습니다.

자주 묻는 DevOps 인터뷰 질문 및 답변

당신에게 DevOps란 무엇입니까?

DevOps는 소프트웨어 개발 수명 주기 전반에 걸쳐 작업 개선을 목표로 하는 접근 방식입니다. DevOps 프로세스는 계획, 코딩, 구축, 테스트, 릴리스, 배포, 운영 및 모니터링의 단계로 구성된 무한 루프로 묘사됩니다.

DevOps는 계획, 개발, 제공 및 운영 단계 전반에 걸쳐 애플리케이션 수명 주기에 영향을 미칩니다. 각 단계는 다른 단계에 따라 달라지며 단계는 역할에만 국한되지 않습니다. 진정한 DevOps 문화에서는 각 역할이 각 단계에 어느 정도 관련되어 있습니다.

DevOps가 왜 중요한가요?

DevOps 접근 방식을 취하는 팀은 프로젝트를 더 빨리 완료하는 경향이 있습니다. 이러한 방식으로 통신 오류를 방지하고 개선 사항 및 기타 필요한 변경 사항을 신속하게 구현할 수 있습니다. DevOps 접근 방식은 개발 팀과 운영 팀 모두의 목표가 더 일치하는 개발 팀과 운영 팀 간의 더 큰 협업을 장려합니다. 다음과 같이 몇 가지 이점을 요약할 수 있습니다.

  • 향상된 커뮤니케이션
  • 팀워크와 응집력
  • 향상된 협업
  • 더 빠른 품질의 제품 배송
  • 복잡성 감소 및 빠른 문제 해결
  • 새로운 코드를 추가할 수 있는 더 큰 확장성과 유연성
  • 보다 안정적인 운영 환경
  • 더 큰 자동화
  • 비용 절감 및 자원 활용
  • 통합 및 자동화 도구를 통한 보안

DevOps의 일일 작업은 무엇입니까?

언급할 수 있는 일일 작업은 다음과 같습니다.

  • 지속적인 통합 및 배포 보장
  • 수행할 작업 할당 및 전달
  • 테스트 프로토콜 설계 및 주문
  • 인프라 및 애플리케이션 메트릭 모니터링 및 수집
  • 개발의 각 단계에서 얻은 결과 분석
  • 오류 발생 시 오류율 및 복구 시간 감소
  • 배송 시간 단축
  Instagram에서 연락처를 찾는 방법

DevOps는 개발자에게 어떤 도움이 됩니까?

DevOps 방법론이 구현되면 개발자는 더 이상 코드 내의 버그를 수정하기 위해 운영 팀의 피드백을 기다릴 필요가 없습니다. 그러나 이제는 코드에 대한 지속적인 피드백을 받기 때문에 이러한 문제를 더 빨리 해결할 수 있습니다.

버전 관리란 무엇입니까?

버전 제어는 특정 버전을 나중에 검색할 수 있도록 시간이 지남에 따라 파일 또는 파일 세트에 대한 변경 사항을 추적할 수 있는 방법입니다. 버전 제어 도구를 사용하면 개발 작업의 진행 상황을 쉽게 추적하고 필요할 때 이전 버전으로 돌아갈 수 있도록 다양한 버전의 소스 코드를 저장할 수 있습니다. 소프트웨어 개발의 이 단계에서 가장 많이 사용되는 도구 중 하나는 Git입니다.

CI/CD란 무엇이며 어떤 이점이 있습니까?

지속적 통합(CI)

CI는 고품질의 신속한 소프트웨어를 쉽게 제공할 수 있도록 하는 도구와 사례를 결합합니다. 이렇게 하면 병목 현상이 제거되고 출시 단계에서 기술적인 문제가 방지됩니다.

지속적 전달(CD)

이 방법은 코드 변경 사항의 전달을 자동화하여 프로덕션에서 코드를 신속하게 보완하고 애플리케이션이 올바르게 작동하도록 합니다.

지속적 배포(CD)

지속적 전달과 달리 이 방식의 목적은 소프트웨어를 프로덕션에 배포할 때 사람의 개입이 없다는 것입니다. 새 코드 또는 변경된 코드를 프로덕션에 게시하는 것은 자동화됩니다.

CI/CD는 애플리케이션 수명 주기 전반에 걸쳐 DevOps를 구현합니다. 이러한 관행은 소프트웨어 개발 프로세스의 여러 단계를 간소화하고 자동화하여 생산성을 높이는 데 도움이 됩니다.

지속적인 모니터링이란

지속적인 모니터링은 코드와 인프라 모두에 대한 모니터링, 경고 및 조치를 포함하는 DevOps 방식입니다. 따라서 구현 시 발생할 수 있는 문제를 신속하게 감지하고 식별하여 문제 해결 시간을 단축합니다.

지속적인 테스트가 왜 중요한가요?

지속적인 테스트는 개발 파이프라인에서 테스트를 초기에 점진적으로 적절하게 자동화하는 것입니다. 코드의 품질을 보장할 수 있기 때문에 필수적입니다. 오류를 조기에 감지하고 코드 피드백을 더 빠르게 수행합니다.

DevOps에서 사용되는 몇 가지 테스트 유형을 설명하시겠습니까?

단위 테스트

그들은 개별적으로 특정 코드를 테스트합니다. 단위 테스트는 데이터베이스에 연결하거나, 파일 시스템을 사용하거나, 외부 시스템과 통신하거나, 시스템 구성 요소와 상호 작용해서는 안 됩니다. 이를 통해 신속하게 실행할 수 있으며 변경 사항으로 인해 기존 기능이 손상되면 빠른 피드백을 얻을 수 있습니다.

구성 요소 테스트

그들은 이와 같은 문제를 식별할 수 있도록 대규모 기능 그룹을 테스트합니다. 일반적으로 더 느리고 데이터베이스, 파일 시스템 또는 기타 시스템에 연결하는 더 복잡한 구성과 더 많은 I/O가 필요합니다.

배포 테스트

이러한 테스트는 배포가 제대로 작동했는지, 즉 애플리케이션이 올바르게 설치, 구성되었는지, 필요한 모든 서비스에 액세스할 수 있고 응답하는지 확인합니다.

이 외에도 익스플로잇 및 사용성 테스트도 있습니다. 테스트에 대한 자세한 내용은 애플리케이션 테스트 유형에 대한 문서를 확인하십시오.

마이크로서비스 아키텍처란 무엇이며 기존 아키텍처와 어떻게 다릅니까?

소프트웨어를 작성하는 전통적인 방법은 모놀리식입니다. 응용 프로그램의 모든 기능이 하나의 블록에 모여 있다는 의미입니다. 오류가 발생하거나 업데이트가 필요한 경우 전체 제품을 관리하는 코드가 분석됩니다.

  Linux에서 뮤직 플레이어 데몬을 설정하는 방법

정지 또는 충돌을 생성하고 코드 보존에 큰 위험을 나타냅니다. 고객에게는 손실과 두통을 의미합니다.

마이크로서비스 아키텍처에서 애플리케이션의 기능은 독립적으로 개발되고 통합된 서비스를 나타냅니다. 구성 요소는 별개이지만 함께 작동하여 상관된 작업을 수행합니다.

이러한 방식으로 각 독립 서비스는 다른 서비스를 방해하지 않고 실행되며 이는 장애 발생 시에도 적용됩니다. 기능이 실패하면 전체 응용 프로그램의 기능을 손상시키지 않고 조정할 수 있습니다.

마이크로서비스는 DevOps를 더욱 민첩하고 효율적으로 만들고 종단 간 개발을 가속화하고 애플리케이션을 훨씬 더 확장할 수 있도록 합니다.

코드로서의 인프라란 무엇입니까?

코드로서의 인프라는 소스 코드 관리 기술을 사용하고 다른 소프트웨어 시스템처럼 취급되는 컴퓨팅 및 네트워크 인프라를 정의하는 접근 방식입니다.

이 코드는 테스트 관행과 지속적인 배포의 전체 원칙에 따라 가청성과 재현 가능한 구성을 허용하기 위해 소스 제어에 보관될 수 있습니다.

코드로서의 인프라는 몇 가지 사례를 기반으로 합니다.

  • 정의 파일 사용
  • 자체 문서화된 시스템 및 프로세스
  • 모든 요소의 버전 관리
  • 지속적으로 시스템 및 프로세스 테스트
  • 일괄 처리 대신 작은 변경
  • 서비스를 지속적으로 사용 가능하게 유지

빌드 자동화 도구는 소프트웨어 빌드 방법(수행해야 할 단계 및 순서)과 필요한 종속성(빌드가 성공하기 위해 필요한 다른 소프트웨어)을 지정합니다.

일부 도구는 Maven 및 Apache의 Ant와 같은 특정 프로그래밍 언어의 프로젝트에 더 적합합니다. 다른 언어와 함께 기술을 사용할 수 있지만 대부분 Java 프로젝트에서 사용됩니다. Hudson이나 Jenkins와 같은 다른 것들은 다양한 프로젝트에서 더 광범위하게 사용될 수 있습니다.

DevOps 파이프라인이란 무엇입니까?

DevOps 파이프라인은 새 소프트웨어를 출시하기 전에 여러 단계를 포함하는 프로세스입니다. 통합 및 테스트에서 전달 및 배포에 이르기까지 프로젝트의 모든 단계에 적용할 수 있습니다. 일반적으로 다음 단계와 팀을 거칩니다.

  • 제품 비전: 제품의 기능을 정의합니다.
  • 개발 팀: 반복적이고 점진적으로 개발합니다.
  • 운영 영역: 안정적인 환경을 구현하고 유지합니다.
  • 모니터링 및 피드백: 고객이 가치를 창출하고 사용합니다.

CI/CD 파이프라인의 여러 단계는 무엇입니까?

CI/CD 파이프라인을 구성하는 단계는 파이프라인 단계라고 하는 몇 가지 그룹화된 작업입니다. 간단히 말해서 다음과 같습니다.

  • 컴파일: 애플리케이션이 컴파일되는 단계.
  • 테스트: 코드가 테스트되는 단계입니다. 여기에서 자동화는 시간과 노력을 절약합니다.
  • 시작: 애플리케이션이 저장소로 전송될 때
  • 배포: 코드가 프로덕션 환경에 배포됩니다.
  • 검증 및 규정 준수: Clair와 같은 이미지 보안 검증 도구를 사용하여 이미지를 알려진 취약점(CVE)과 비교하여 이미지 품질을 확인할 수 있습니다.

DevOps 파이프라인의 가장 일반적인 단계입니다. 그러나 각 회사에는 특정 요구 사항과 파이프라인이 있습니다.

플랫폼 가상화는 무엇을 의미하며 그 이점은 무엇입니까?

플랫폼 가상화는 전체 컴퓨터 시스템을 시뮬레이션하여 단일 물리적 시스템에서 여러 운영 체제 인스턴스를 동시에 실행하는 것을 의미합니다.

  Snapchat에서 Bitmoji 포즈를 변경하는 방법

이 구성에서 VMM(가상 머신 모니터) 또는 하이퍼바이저는 물리적 머신의 하드웨어 리소스를 완전히 제어합니다. 게스트 운영 체제는 VMM이 관리하는 가상 컴퓨터에서 실행됩니다. 환경 가상화에는 하나 이상의 가상 머신과 이들 간의 네트워크 연결 시뮬레이션이 포함됩니다.

가상화는 여러 가지 방법으로 배포에 소요되는 시간과 이와 관련된 위험을 줄이는 데 도움이 될 수 있습니다. 배포 시 가상 머신을 사용하면 시스템 전체에서 수직 및 수평으로 효과적인 구성 관리를 달성하는 데 큰 도움이 됩니다.

특히 가상화를 사용하면 다음과 같은 이점이 있습니다.

  • 변화하는 요구 사항에 대한 빠른 응답
  • 강화
  • 표준화
  • 기준선의 유지 관리 용이성

컨테이너와 가상 머신의 차이점은 무엇입니까?

컨테이너와 VM 모두 가상화 및 환경 격리와 함께 작동하여 애플리케이션과 독립적으로 처리를 촉진합니다. 그러나 컨테이너는 메모리 및 처리와 같은 사용 가능한 리소스 수준에서 분할이 이루어지기 때문에 다른 응용 프로그램을 동시에 실행할 수 있는 격리된 환경을 만듭니다. 반면에 가상 머신을 사용하면 물리적 머신이 다른 운영 체제, 하드 디스크 및 하드웨어를 사용하여 원래 머신과 독립적인 다른 머신을 수용할 수 있습니다.

Docker와 Kubernetes의 주요 차이점은 무엇입니까?

Docker는 가장 많이 사용되는 DevOps 컨테이너 도구 중 하나입니다. 응용 프로그램의 이식성에 중점을 두고 기술 컨테이너 및 패키징 시스템에 응용 프로그램을 배치하고 다른 플랫폼 간에 이동합니다.

동시에 Kubernetes는 논리적 범주별로 컨테이너를 그룹화할 수 있는 컨테이너 오케스트레이션 도구입니다. 자동화된 배포를 통해 여러 컴퓨터에 배포할 수 있습니다.

Kubernetes Vs.에 대해 자세히 알아보십시오. 도커.

DevOps의 일부 원격 측정 지표는 무엇입니까?

  • 비즈니스 수준: 예에는 판매 거래 수, 판매 거래 수익, 사용자 가입, 이탈률 및 A/B 테스트 결과가 포함됩니다.
  • 응용 프로그램 수준: 트랜잭션 시간, 사용자 응답 시간 및 응용 프로그램 실패가 그 예입니다.
  • 인프라 수준: 예에는 웹 서버 트래픽, CPU 로드 및 디스크 사용량이 포함됩니다.
  • 클라이언트 소프트웨어 수준: 예에는 애플리케이션 오류, 충돌 및 사용자 측정 트랜잭션 시간이 포함됩니다.
  • 배포 파이프라인 수준: 예에는 빌드 파이프라인 상태(다양한 자동화된 테스트 제품군의 경우 빨간색 또는 녹색), 배포 기한 변경, 배포 빈도, 테스트 환경 승격 및 환경 상태가 포함됩니다.

DevOps를 수행하는 데 어떤 기술을 사용합니까?

이 질문은 조직 내에서 DevOps 문화를 구현하는 데 사용할 수 있는 기술을 파악하는 것을 목표로 합니다. DevOps가 사용할 수 있는 가장 일반적인 기술은 다음과 같습니다.

  • 지속적인 개발: Git, SVN, Mercurial, CVS, Jira
  • 지속적인 통합: Jenkins, Bamboo, Hudson
  • 지속적인 개발: Nexus, 아카이브, Tomcat
  • 지속적인 배포: Puppet, Chef, Docker
  • 지속적인 모니터링: Splunk, ELK Stack, Continuous Nagios
  • 테스트: Selenium, Katalon Studio

DevOps 프로젝트 관리 경험에 대해 알려주십시오.

DevOps 기술은 단순히 기술적인 노하우가 아니라 관리자, 프로그램 디렉터 및 프로젝트 관리자 사이에서 흔히 볼 수 있는 인적 및 관리적 기술이 필요합니다.

변경을 관리 및 지원하고, 새 버전의 코드를 운영 측으로 쉽게 전송하기 위한 게이트웨이를 제공하고, 성능을 측정하기 위한 다양한 플랫폼과 도구를 평가 및 모니터링하고, 향후 제공을 개선하기 위해 결과를 분석 및 공유하는 방법을 아는 것이 필수적입니다. , 등.

방법론으로 이 질문에 접근하고 복잡한 문제를 해결하는 과정을 설명하십시오. 인프라의 기능을 개선하기 위해 어떻게 하시겠습니까? 프론트, 미들, 백오피스 개발자들과 어떻게 협업할 계획입니까? 어떤 모니터링 도구를 마스터합니까? 또한 팀 내에서 갈등 해결 경험을 공유하는 것을 고려하십시오.

자세히 알아보려면 이러한 DevOps 과정 중 하나에 등록하는 것을 고려할 수 있습니다.