쿠버네티스와 컨테이너, 마이크로 서비스

 

 

- 컨테이너

App과 App환경을 나눈 공간을 말함.

차세대 트렌드 기술임. 클라우드에 적용 중. 

리눅스에서 시작했음.

가상머신에 비해 효율, 신속, 안정, 비용절감의 장점이 있음.

 

- 마이크로 서비스(Micro Service)

App를 기능별로 나누어 변경과 조합이 가능하게 한 것임.

배포를 신속하게 할 수 있고, 각 서비스는 독립적이라 수정하여도 다른 기능에 영향X

 

- 쿠버네티스: 컨테이너도 많아지면 관리/운영이 어려워 이를 해결하기 위해 나옴.

1) 무중단 서비스 제공: 서비스가 중단되지 않음. 

업데이트는 점진적 업데이트로 중단문제를 해결하고, 갑작스러운 장애에도 자가회복하여 유지함.

2) Vendor Lock In해결: 클라우드 서비스 업체에 종속되지 않아, 클라우드 이전시 호환문제를 해결됨. 

 

//

쿠버네티스와 컨테이너를 쉽게 이해하기

 

Youngho Jo

에 포스팅함 2018.01.12 / 에 업데이트함 2018.01.31

 

안녕하세요? 클라우드의 차세대 트렌드 기술인 쿠버네티스와 컨테이너를 처음 접하는 분들을 위해 간략하고 쉬운 개념 설명을 준비했습니다. 컨테이너와 쿠버네티스를 사용하는 목적을 중점으로 소개 드리겠습니다.

 

컨테이너란 무엇인가?

사전적 의미로 컨테이너는 어떤 물체를 격리하는 공간을 뜻합니다. 클라우드에서 컨테이너는 어떤 의미를 가질까요? 컨테이너는 애플리케이션과 애플리케이션을 구동하는 환경을 격리한 공간을 뜻합니다. 컨테이너 기술은 약 10여 년 전에 리눅스에 내장된 기술로 소개되었으며, 현재는 차세대 트렌드 기술로 주목받으며 클라우드 서비스 환경에 적용되고 있습니다.

 

왜 컨테이너인가?

ㄱ. 가상머신과 컨테이너의 차이점

가상머신 서버에서는 하이퍼바이저로 하드웨어를 가상화하고, 그 위에 Guest OS가 설치된 가상 머신들을 구동시켰습니다. 반면에 컨테이너 서버는 운영체제 레벨에서 CPU, RAM, Disk, Network 등의 자원을 격리하여 컨테이너에 할당하기 때문에 게스트 OS가 따로 필요 없습니다

 

container

 

1) 효율성

기업환경에서는 안정적인 운영을 위해, 1개의 가상머신(VM, Virtual Machine)에 1개의 서비스를 구동하는 것이 권장됩니다. 이의 경우 가상머신의 모든 자원을 사용하는 것이 아니기 때문에 성능적 오버헤드가 발생합니다. 반면 컨테이너의 경우, OS 커널을 공유하기 때문에 자원을 필요한 만큼 효율적으로 사용할 수 있습니다.

 

2) 신속성

사용자의 서비스 요청량이 증가함에 따라, 기업에서는 가상머신이나 컨테이너를 추가적으로 배포합니다. 가상머신의 크기는 최소 몇 GB이지만, 컨테이너의 경우 Guest OS가 없어 MB단위의 크기를 가집니다. 결과적으로 가상머신은 배포하는데 수 분에서 수십 분의 시간이 소요되지만, 컨테이너는 배포에 소요되는 시간이 수 초에 불과합니다.

 

3) 라이센스 비용 절감

가상화 서버의 경우 가상머신의 개수만큼 Guest OS의 라이센스 비용이 발생합니다. 반면에 컨테이너 서버의 경우 Host OS 1대의 라이센스 비용만 발생합니다. 만약 서버의 수가 많아진다면 비용의 차이도 기하급수적으로 증가할 것입니다.

 

4) 안정성

가상머신의 경우 정확히 할당된 자원 내에서 가상머신이 운영되기 때문에, 컨테이너에 비해 안정적으로 운영할 수 있습니다. 반면에 컨테이너들은 OS 커널을 공유하기 때문에, 하나의 컨테이너가 무리하게 자원을 사용하게 될 수 있습니다. 자원 할당량을 사전에 지정시켜줄 수 있지만, 만약 이런 상황이 발생하면 컨테이너에 장애가 발생합니다. 이런 컨테이너의 문제는 뒤에 등장할 쿠버네티스로 해결할 수 있습니다.

 

ㄴ. 개발 환경 이전 솔루션

주로 애플리케이션을 개발할 때는 개인 환경에서 개발을 하고, 통합 환경에서 코드를 통합합니다. 그 다음 테스트 환경을 거쳐 실제 운영 환경으로 이전하게 됩니다. 이렇게 수차례 환경을 이전하다 보면 소프트웨어의 버전이나 서버 설정의 차이로 인해 다양한 장애가 발생하기도 합니다. 이때, 컨테이너에 애플리케이션과 애플리케이션을 구동하는 환경을 그대로 담아서 환경을 이전하면, 장애 걱정 없이 신속하고 안정적으로 환경을 이전할 수 있습니다.

 

 

ㄷ. 마이크로 서비스화 솔루션

기업에서는 애플리케이션을 배포할 때 오랜 시간이 소요되거나, 작은 부분을 수정했을 뿐인데 애플리케이션 전체에 문제가 발생하는 것을 경험합니다. 이는 애플리케이션이 거대한 덩어리처럼 구성되어있기 때문인데, 이런 애플리케이션을 기능별로 나누어 변경과 조합이 가능하게 한 것을 마이크로 서비스(Micro Service)라고 합니다. 마이크로 서비스를 컨테이너로 구성하면 애플리케이션을 기능 혹은 서비스 단위로 신속하게 배포할 수 있습니다. 또한, 컨테이너는 독립적인 구조이기 때문에, 하나의 변경 사항이 다른 기능들에 영향을 미치지 않습니다.

 

monolith

 

쿠버네티스란 무엇인가?

앞서, 컨테이너를 사용하면 서버의 자원을 효율적으로 사용할 수 있다고 말씀드렸습니다. 하지만 컨테이너가 너무 많아진다면 어떻게 될까요? 관리와 운영이 어려워지고, 오히려 효율성이 떨어지게됩니다. 이 문제를 해결해주는 툴이 쿠버네티스(Kubernetes)입니다. 쿠버네티스는 컨테이너 오케스트레이션 플랫폼 중 하나로, 구글이 자사 서비스를 위해 개발했던 Borg에서 얻은 운영 노하우를 오픈소스로 공개한 것 입니다.

 

왜 쿠버네티스인가?

1. 무중단(Fault tolerance-FT) 서비스 제공

때때로 서비스를 받는 사용자들은, 서비스 개선을 위해 서버점검 중이라는 안내문을 보게 됩니다. 기업에서는 서버 업데이트를 위해서 사용자들이 잠든 새벽 시간을 활용하거나, 긴급 점검의 형태로 서비스를 일시 중단해왔습니다. 하지만, 쿠버네티스는 점진적 업데이트를 제공하기 때문에 서비스를 중단하지 않고도 서버를 업데이트할 수 있습니다. 또한, 쿠버네티스는 자가 회복(Self Healing) 기능을 가지고 있어, 특정 컨테이너에 갑작스러운 장애가 발생하더라도 곧바로 복제 컨테이너를 생성해서 서비스를 유지할 수 있습니다.

 

2. Vendor Lock In 해결.

고객이 A사의 클라우드를 사용하다가 I사의 클라우드로 환경을 이전하고 싶을 때, 제품 간에 호환 문제가 발생하여 이전하기 어려운 상황을 Vendor Lock In이라고 합니다. 쿠버네티스는 도커 컨테이너 기반의 오픈소스이기 때문에, 사용자는 특정 업체에 종속되지 않고 클라우드를 이전할 수 있습니다.

 

Q&A

1. 컨테이너로 개발 환경을 세팅할 수 있다던데, 가상머신은 그런 방법이 없나요? 

Vagrant는 가상머신을 쉽게 생성하고 관리하게 하는 서비스입니다. 하이퍼바이저에 논리적인 가상 하드웨어 머신을 생성한 다음, 가상머신에 OS를 설치하고 일일이 모든 설정을 해야 하는 기존의 VM가상화 작업을, 단 몇 줄의 명령어로 처리할 수 있는 서비스입니다. 굳이 컨테이너와 vagrant의 비교를 하자면, 신속하게 여러 컨테이너를 생성하고 반복적인 테스트를 하기에는 컨테이너를 사용하는 것이 적합 합니다. Vagrant는 Guest OS를 포함한 안정적인 가상 공간을 조금 더 신속하게 만들기에 적합합니다.

 

2. 테라폼은 무엇인가요?

테라폼(terraform)은 다양한 클라우드에 가상머신을 배포하는 인프라 프로비저닝 도구입니다. Infrastructure as a Code의 개념으로 클라우드의 자원을 코드화해서, 코드로 쉽게 Cloud 자원을 생성, 변경 및 삭제를 하게 해줍니다.

 

3. 컨테이너 오케스트레이션이 무엇인가요?

쉽게 말하자면, 여러개의 컨테이너를 편리하게 관리해주는 작업을 뜻합니다. 그리고 실제로는 스케줄링, 클러스터링, 서비스 디스커버리, 로깅 및 모니터링을 수행합니다.

 

–스케줄링: 컨테이너를 비교적 가장 여유로운 노드에 자동 배치합니다. 작업 노드가 죽으면 실행 중이던 컨테이너를 다른 노드에 옮겨주는 역할도 수행합니다.

–클러스터링: 여러 개의 노드를 묶어 하나처럼 사용할 수 있습니다. 즉 모든 컨테이너가 내부통신을 할 수 있습니다.

–서비스 디스커버리: 컨테이너가 자동으로 배치되기 때문에 어디에 배치되었는지 찾는 임무를 수행합니다.

–로깅 및 모니터링: 로그를 관리하고 직접 또는 다른 툴을 사용해 보여줄 수 있습니다.

 

4. 쿠버네티스가 FT(Fault Tolerance)를 제공한다고 했는데, HA(High availability)랑은 어떤 차이가 있나요?

FT는 무중단 서비스로 작은 장애에도 동작이 멈추지 않고 서비스가 지속되는 것을 말합니다. 쿠버네티스는 특정 컨테이너가 죽었을때, 즉각 복제 컨테이너를 생성해서 서비스를 유지합니다. 하지만 컨테이너가 죽은 순간의 몇 초 동안은 서비스에 장애가 발생할 수 있습니다. 이를 대비해, 쿠버네티스는 동일한 서비스를 제공하는 컨테이너를 이중, 삼중으로 만들어 HA(고가용성)을 유지할 수 있습니다.

 

5. Docker file을 사용하다보면 Linux위에 Centos나 Ubuntu를 깔기도 하던데, 그러면 Guest OS를 설치하는 게 아닌가요?

아닙니다. Host OS가 Linux고 컨테이너의 Base Image를 Centos로 구동하게 되면, Linux와 Centos의 다른 부분(diff)만 따로 패키징 하는 것입니다. 결과적으로 Guest OS가 생기는 것이 아니기 때문에 훨씬 가볍습니다.

 

참고문헌

쿠버네티스 아키텍처: https://developer.ibm.com/kr/cloud/2017/07/29/kubernetes-cloud-private/

컨테이너: http://bongbonge.tistory.com/entry/컨테이너-기술에-대한-이해

오케스트레이션: https://subicura.com/2017/02/25/container-orchestration-with-docker-swarm.html

Vagrant: http://bcho.tistory.com/806

 

태그 CONTAINER, KUBERNETES, 컨테이너, 쿠버네테스, 쿠버네티스

글 Youngho Jo

출처: https://developer.ibm.com/kr/cloud/2018/01/12/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%99%80-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EB%A5%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/

 
 

//

 

아래는 IBM 기술블로그 컨텐츠 약관 확인 내용

출처: https://developer.ibm.com/kr/terms-of-use/

 

컨텐츠 재게시

●IBM은 developer.ibm.com 커뮤니티 환경에서 제공되는 본 사이트 상의 여하한 모듈을 포함한 developer.ibm.com 커뮤니티 환경에 귀하가 제공하는 그 어떠한 자료도 재게시할 권한을 가지며, 귀하는 명시적으로 IBM에게 컨텐츠를 어떠한 형태로든 복사 및 재게시할 수 있는 권한을 부여합니다.

 
번호 제목 글쓴이 날짜 조회 수
24 PC/모바일 대학생용 Microsoft Azure 신청하고 100달러 크레딧 받기(Microsoft Cloud) masterwater 2018.06.30 0
» 쿠버네티스와 컨테이너, 마이크로 서비스 용어(developer.ibm.com 요약) masterwater 2018.06.29 0
22 게임회사 NINTENDO 제 3의 길(혼창통(魂創通)을 읽고 닌텐도를 중심으로) masterwater 2018.04.28 4
21 (컨퍼런스 발표) International Conference on Appropriate Technology, 2017 file masterwater 2017.11.20 9
20 세계자원연구소의 세계 물 부족 위험지도 masterwater 2017.10.17 19
19 Cad LISP을 위한 LISP프로그램의 준비 file masterwater 2017.09.26 26
18 (특허) 국제출원철차 및 수수료정보(16.11.12.기준) masterwater 2016.11.12 27
17 프로그램저작물 저작권 등록비용 (16년 11월 12일 기준) masterwater 2016.11.12 41
16 연구개발 8대 성과유형은? masterwater 2016.11.11 32
15 포락, 비포락의 구분 (포락지, 비 포락지 구분하기) file masterwater 2016.06.27 248
14 IBM has been awarded an average of 24 patents per day so far in 2016 novas21 2016.06.05 28
13 토지이용규제정보서비스(LURIS) file masterwater 2016.03.15 150
12 하천공사설계실무요령(2009) file masterwater 2016.03.09 624
11 오토리습 (Autolisp) 교육 : 무료 강의 (2016.3.19 토) masterwater 2016.02.29 60
10 TBM, TP, BM 측량용어 강승원 2016.02.24 421
9 건설신기술(지정제도 개요) file masterwater 2016.01.14 23
8 주요 수공구조물의 설계빈도 file masterwater 2016.01.14 53
7 유역특성인자와 유역형상 조사에 포함되는 내용 masterwater 2016.01.06 26
6 유역, 분수계, 유역면적, 유로연장, 하천연장, 하상경사, 하천밀도, 하상계수 masterwater 2016.01.06 162
5 수문, 통문, 통관 그리고 문비(문짝) masterwater 2016.01.06 124