1. 도커란?

- 컨테이너 기반의 오픈소스 가상 플랫폼

가상 머신(Virtual Machine) VS 도커 컨테이너(Docker Container)

  • 기존의 가상화 기술은 가상머신(VM)이라하여 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었습니다. 이 때 생성되고 관리되는 운영체제는 게스트 운영체제(Guest OS)라고 하며, 각 게스트 운영체제는 독립된 공간과 시스템 자원을 할당받아 사용합니다. 대표적인 툴로는 virtualBox, VM Ware가 있습니다.
  • 하지만 가상 머신은 게스트 운영체제(Guest OS)를 사용하기 위해 커널과 라이브러리 등이 포함이 되기 때문에 무겁고 용량이 큽니다, 대신에 도커 컨테이너는 가상화 공간을 만들기 위해 리눅스의 자체 기능인 chroot, namespace, cgroup을 사용하기 때문에 성능 손실이 거의 없으며, 컨테이너에 필요한 커널은 호스트 운영체제의 커널을 공유해 사용 하기 때문에, 가볍습니다.

2.인프라 프로비저닝이란?

프로비저닝(Provisioning) 이란 의미는 영어 직역한 그대로 "제공하는것" 이다.

어떤 종류의 서비스든 사용자의 요구에 맞게 시스템 자체를 제공 하는 것을 프로비저닝이라고 하며 제공해줄 수 있는 것은 인프라 자원이나 서비스, 또는 장비가 될 수도 있다.

좀 더 실무적인 표현으로 보자면, IT 인프라 자원을 사용자 또는 비즈니스 Customer에게 Service Vendor 가 제공해주는 것을 말한다.

3. CI/CD

 CI(지속적 통합 (Continuous Integration))

-  모든 개발이 끝난 이후에 코드 품질을 관리하는 고전적 방식의 단점을 해소하기 위해 나타난 개념이다. 말 그대로 개발을 하면서 '코드에 대한 통합'을 '지속적'으로 진행함으로써 품질을 유지하자는 것이다.

 예시) CI의 자동화가 잘 이루워 졌을 때, 규칙의 단순화 확인

1. 모든 개발자는 퇴근하기 전에 자신의 코드를 중앙 코드와 통합한다.

2. 다음날 출근시 메일로 발송된 결과 리포트를 확인하고 버그가 있으면 수정한다.

CD(지속적 배포(Continuous Deploy 또는 Delivery))

- 소프트웨어가 항상 신뢰 가능한 수준에서 배포 될 수 있도록 관리하자는 개념이다.

-CI가 선행 되어야 CD가 가능하다.

-즉, CI 프로세스를 통해 개발 중에 지속적으로 빌드와 테스트를 진행하고, 이를 통과한 코드에 대하여 테스트서버와 운영서버에 곧바로 그 내용을 내포해 반영하는 것이다. 이상적인 환경이라면 테스트와 빌드가 '지속적'으로 이뤄지기 때문에, 배포 또한 자연스럽게 '지속적'으로 이뤄지게 된다.

 

CI = 빌드 및 테스트 자동화CD = 배포 자동화

 

4. git flow

2010년 Vicent Driessen이라는 분이 만든 가장 널리 알려진 Git 작업 절차입니다. Git Flow는 master와 develop이라는 항상 존재하는 주 브랜치가 있고, feature-*, hotfix-*, release-*라는 필요에 따라 생성하는 브렌치가 있습니다. 물론, 이후 improvement-*, bugfix- 등 프로젝트에 따라 다양한 브랜치 모델이 추가되기도 하였습니다.

 

이 절차는 다음과 같은 형태로 진행됩니다.

  1. master 브랜치에서 develop 브랜치를 분기합니다.
  2. 개발자들은 develop 브랜치에 자유롭게 커밋을 합니다.
  3. 기능 구현이 있는 경우 develop 브랜치에서 feature-* 브랜치를 분기합니다.
  4. 배포를 준비하기 위해 develop 브랜치에서 release-* 브랜치를 분기합니다.
  5. 테스트를 진행하면서 발생하는 버그 수정은 release-* 브랜치에 직접 반영합니다.
  6. 테스트가 완료되면 release 브랜치를 master와 develop에 merge합니다.

그리고 이 절차가 반복됩니다.

 

모니터링 도구란?


모니터링 시스템의 종류

1) 서버 모니터링

서버 여러대중 1대라도 죽는 경우 모니터링 하는것을 말한다.

  • 이를 모니터링하는 도구는 주로 쟈빅스,나기오스, 자체개발 에이젠트 등을 사용한다.

2) 서비스 모니터링

사용자 입장에서 서비스가 안되는 경우 모니터링 하는것을 말한다.

  • '서비스 전용 모니터링' 도구를 사용한다. Topaz 와 아르고스 등과 같이 사용자단부터 서버까지 모니터링을 하는 툴 이용한다.

 

':: IT > 기술면접' 카테고리의 다른 글

웹개발  (0) 2020.08.10
파이썬 개발  (0) 2020.08.10
[기술면접] 운영체제  (0) 2020.07.31
[기술면접] 네트워크  (0) 2020.07.30
[데브옵스] 데브옵스란?  (0) 2020.07.30

+ Recent posts