본문 바로가기

기초 공부/상식

[MSA와 Docker, Kubernetes의 개념 #1] 가상화

728x90

안녕하세요 오랜만입니다.

 

오늘은 도커와 쿠버네티스, 컨테이너 기본 개념을 정리하는 포스트를 작성해보려합니다.

 

이게 왜 등장했고 왜 쓰이는지에 대한 포스팅 시리즈입니다.

 

 

 

우선 모든 것을 설명하기 전에 가상화라는 개념을 알아야합니다. 

 

 

저같은 경우 가상화가 뭐야? 라고 물었을 때 정확하게 대답하지 못했는데요 

간단하게 하나의 장치를 여러 개처럼 동작 시키거나, 여러 개의 장치를 하나의 장치처럼 사용할 수 있는 기술

이라고 이젠 설명합니다.

 

따라서 어떤 것을 가상화 한다는 말은 어떤 것을 분리해서 분산처리 능력과 자원 사용률을 높인다고 이해하면 될 거 같습니다.

 

메모리를 가상화 한다는 것은 16GB 메모리를 4GB 4개인것처럼 분리해서 각각에서 일을 처리한다.

(이 설명이 맞는지는 잘 모르겠습니다. 저는 이렇게 이해했습니다.)

 

 

 

 

 

가상화는 무엇을 가상화 하느냐에 따라 종류가 나뉩니다.

그 중 서버 가상화에 대한 설명이 주를 이루겠지만 데스크톱 가상화와 애플리케이션 가상화도 함께 살펴봅시다.

 

 

 

 

 

데스크톱 가상화를 VDI 라 부르는데 데이터 센터 서버에서 운영되는 가상의 PC환경을 의미합니다.

그림에서 보는 것처럼 멀리 데이터 센터에 있는 컴퓨터를 현재 로컬컴퓨터를 이용하는 것처럼 활용합니다.

 

 

 

 

애플리케이션 가상화는 쉽게 말해 실제 PC에는 설치되지 않지만 설치된 것처럼 실행하는 방법입니다.

구글 스태디아로 생각해보면 내가 방향키와 마우스 커서 위치같은 입력값만 전달해주면 서버에서 그 입력값에 따라 송출될 화면을 계산해서 우리에게 화면만 보여주는 것처럼 

우리에게 실제 게임은 깔려있지 않지만 입력값만 주면 연산은 다른 곳에서 이루어지고 결과값만 보여주는 거라고 생각하면됩니다.

 

 

다시 서버 가상화로 돌아와서 서버 가상화는 서버를 가상화 하는겁니다. 이 서버 가상화는 하이퍼 바이저라는 것으로 이루어지는데 하이퍼바이저는 호스트 컴퓨터에서 다수의 OS를 동시에 실행하기 위한 논리적 플랫폼입니다.

 

이 하이퍼바이저를 통한 가상화는 TYPE1과 TYPE2 그리고 다시 TYPE1에서 전가상화 반가상화로 구분됩니다.

 

 

TYPE1은 네이티브, 베어메탈 가상화라고 불리며 그림처럼 하이퍼 바이저가 하드웨어 바로 위에서 실행되는 방식입니다.

별도의 호스트 OS가 없기 때문에 오버헤드가 적지만 여러 하드웨어 드라이버를 세팅해야하기 때문에 설치가 어렵다고합니다.

 

TYPE2는 일반적인 소프트웨어 처럼 하이퍼바이저가 호스트 OS위에서 실행됩니다.

TYPE1에 비해 오버헤드가 크지만, 게스트 OS에 대한 제약이 없습니다.

우리가 아는 VMware와 버츄어 박스를 생각하시면됩니다.

 

 

그럼 다시 TYPE1에서 전가상화 반가상화가 나뉘게 되는데 

참고한 블로그를 올리겠습니다. 너무 설명을 잘 해놨습니다.

참고 : https://blog.naver.com/alice_k106/220218878967

 

3. [Cloud Computing] 전가상화와 반가상화

이전 포스팅에서 가상화가 왜 클라우드 컴퓨팅에서 중요한지를 알아보았고, 가상화의 종류에는 전가상화와 ...

blog.naver.com

참고 : http://blog.naver.com/complusblog/220990379931

 

가상화 타입 그리고 전가상화와 반가상화

서버의 가상화는 하이퍼바이저, 가상 OS, VMM(Virtual Machine Monitor)라고 불리며 크게 Type1(...

blog.naver.com

전가상화는 하드웨어를 완전히 가상화하는 방식이라고 하는데 (이게 와닿지가 않는다.)

하이퍼 바이저에 DOM0라고하는 관리용 가상머신이 하드웨어로 가는 모든 명령을 통제한다. 

모든 명령을 통제한다는 것은 네이버 블로그에 설명해 놓은 것처럼 여러 게스트 OS에서 더해라 라는 명령어를 각각 다르게 날리면 이걸 하드웨어가 이해할 수 있게 해석한다고 설명을 해놓으셨다.

그래서 전 가상화는 하드웨어로 가는 모든 명령을 관리해야하기 때문에 성능이 느리다는 단점이있다.

 

반가상화는 완전히 가상화 하지않는다. 전가상화의 단점인 느리다는 것을 해소하기 위해 DOM0를 통해 요청을 하는 것이 아니라 하이퍼 콜이라는 인터페이스로 직접 하이퍼 바이저에 요청을 날린다. 

네이버 블로그에서는 확성기로 설명을 해놓으셨는데 게스트 OS에 커널을 수정하여 각각 다른 더해라 라는 명령어를 똑같은 의미로 이해할 수 있게 번역해야한다고 하셨다. 따라서 하이퍼 바이저는 하드웨어의 자원을 게스트 OS에 분배만 하는 역할을 하면되기때문에 속도가 빠른것이라고 했다.

 

더 자료를 조사해보면 이제 전가상화 반가상화는 거의 옛말인 수준이라고 한다... (그래도 알아둬야하는 개념이라고함)

 

 

 

 

그리고 이런 전가상화 반가상화를 다 떠나서 새롭게 나오게 된 개념이 컨테이너다. 

컨테이너란 애플리케이션을 실행시키기 위해 호스트 OS의 환경을 격리시킨 것을 말한다. (이렇게 환경을 격리시킨 것을 보고 컨테이너를 연상한 거 같다.)

 

VM과 무슨 차이가 있냐면 VM은 각 가상 머신마다 운영체제가 있어서 특정 애플리케이션을 실행할 때 쓸모없는 메모리 사용량이 많아지기 때문에 호스트의 자원을 비효율적으로 사용합니다.

 

컨테이너의 경우 격리된 호스트자원을(어떻게 격리를 시키는지에 대해서는 추후 알아볼 예정) 그대로 사용하고 애플리케이션만 실행하기 때문에 이런 비효율적인 자원소모가 적다.

 

결론적으로 오버헤드가 적고 고속으로 작동함

 

 

 

 

이런 컨테이너를 관리해주기 위해 나온게 Docker입니다. 

컨테이너를 쉽게 배포하고 조작하기 위한 툴입니다.

 

 

 

 

---------------------------

다음 시간에는 간략히 소개된 도커에 대해 좀 더 알아보고 

마이크로 서비스 아키텍처와 쿠버네티스의 등장까지 알아보겠습니다.

 

 

 

반응형