가상화(Virtualization)- VM과 도커 feat 쿠버네티스
가상화는 간단히 설명해본다면, 이는 가상 머신, 즉 가상의 컴퓨팅 환경을 만드는 것이다. 여러 물리적 머신의 컴퓨팅 리소스를 하나로 묶어 하나의 큰 가상화 된 컴퓨팅 리소스를 만들 수 있고, 반대로, 하나의 물리적 머신을 여러 가상화 된 컴퓨팅 리소스로 만들 수도 있다. 이런 가상화는 하드웨어 활용도를 높이고 인프라 운용 비용을 낮추는데 큰 도움을 줄 수 있다.
가상화는 크게,
호스트형, 하이퍼바이저형, 컨테이너형 이렇게 3가지로 구분할 수 있다.
1) 호스트 형은 물리적 하드웨어 위에 호스트 OS를 설치하고, 그 OS에 가상화 소프트웨어를 설치하고, 가상화 소프트웨어를 통해 게스트 OS를 VM으로 만드는 것이다. 가상의 하드웨어를 에뮬레이팅 하는 방식으로 호스트 OS에 크게 제약사항을 주지 않지만, 호스트 OS 위에 게스트 OS를 올리는 방식은 오버헤드가 커지므로 성능이 떨어지게 된다.
VMware workstation이 대표적인 툴이다.
2) 하이퍼바이저 형은 호스트 OS 대신, 즉 윈도우같은 것 대신, 하이퍼바이저를 설치한다. VMware ESXi 같은 것을 설치하는 것이다. 그리고 하이퍼 바이저 위에 게스트 OS로 VM을 만든다.
호스트 형과는 다르게, 호스트 OS가 없어 오버헤드가 적고, VM 생성 시 하드웨어를 직접 제어할 수 있기 때문에 보다 효율적인 리소스 사용이 가능하다.
3) 컨테이너형은 위 두 방법과 다르게 게스트 OS가 없다. 대신 컨테이너라는 새로운 개념이 호스트 OS 위에 컨터이너 관리 소프트웨어를 통해 사용된다. 논리적으로 컨테이너라는 개념으로 나누고, 그 안에서 소프트웨어를 독립적으로 실행시킨다. 컨테이너를 사용하는 것은 게스트 OS를 사용하는 것보다 가볍고 좋은 성능을 낼 수 있다. 그리고 여러 컨테이너를 하나의 어플리케이션으로 구축하는 등 게스트 OS에서 할 수 없었던 다른 기능들을 가지고 있다.
게스트 OS를 사용하는 것과 비교해서 단점을 찾아본다면, == VM을 사용것과 비교해서 단점을 찾아본다면,
이것은 호스트 OS 하는 하나의 OS 위에서 소프트웨어가 작동하는 것이다. 게스트 OS를 사용하게 되면, 여러 OS를 사용할 수 있다. 만약, 특정 소프트웨어가 윈도우에서만 돌아가고, 다른 소프트웨어는 리눅스에서만 돌아간다면, 호스트 형 가상화나 하이퍼바이저 형 가상화에서는 게스트 OS를 각각 윈도우, 리눅스로 하여 한 물리적 컴퓨팅 리소스에서 작동이 가능하지만, 컨테이너를 사용하게 되면, 그럴 수가 없다. 윈도우 아니면 리눅스 둘 중 하나의 OS만 호스트 OS로 사용될 수 있기 때문이다.
컨테이너형의 대표적인 툴은 도커이다.
도커를 활용하면 컨테이너로 논리적으로 소프트웨어 간 확실한 격리를 시킬 수 있다. 도커는 컨테이너를 사용할 수 있게하는 툴이다.
도커와 쿠버네틱스를 비슷한 툴로 비교를 많이 했었던 것 같은데,
쿠버네틱스는 컨테이너 오케스트레이션 툴 중 하나이다. 컨테이너 오케스트레이션 툴이란, 컨테이너의 배포, 관리, 확장, 네트워킹 등을 자동화 해주는 툴이다. 그리고 쿠버네티스는 운영 자동화와 여러 컨테이너들을 하나의 단위로 묶어 관리할 수 있도록 하는데 상당히 좋은 툴이다.
도커를 보면 한 고래가 여러 컨테이너를 이고 있다.
한 서버에 여러 컨테이너를 구성하고 사용하는 것이다. 이 도커 자체는 이 컨테이너들이 다른 컨테이너와 통신하지 않고 독립적으로 작동하거나, 혹은 서로 통신하는 컨테이너수가 적을 때 사용하는 것이 적합하다.
도커 스웜을 보면, 여러고래가 여러 컨테이너를 이고 있다.
하나의 서비스를 마이크로서비스로 구성하고, 이를 여러 서버의 여러 컨테이너로 구성한다면, 이 컨테이너 클러스터를 관리할 툴이 필요한데, 이것을 해주는 것이 도커 스웜이다. 다시 한번 말하면, 컨테이너 오케스트레이션 툴로 배포, 관리, 확장, 네트워킹 등을 자동화하여 편리하고 쉽게 관리 할 수 있도록 해준다.
쿠베네티스는 배의 키 처럼 생겼다. (바다에 있는 컨테이너를 리드하는 능력있는 선장의 모습을 표현한듯...? )
도커 스웜과 동일하게 컨테이너 오케스트레이션 툴로, 도커스웜보다 설정이 복잡하다. 그렇지만, 그만큼 더 많은 기능을 구현할 수 있어서, 이젠 도커 스웜의 사용은 줄어드는 추세이고, 사실상 쿠버네티스가 컨테이너 오케스트레이션의 기준이 되었다.
하지만, 여전히 도커 스웜이 간단하기 때문에, 규모가 그리 크지 않은 마이크로서비스에서 다양한 기능을 요구하지 않는다면 도커 스웜이 서비스가 되는 한 사용하는 것이 간편하고, 빠르고, 적은 비용, 작은 인프라 환경으로 충분한 기능을 내기때문에 상황에 따라 사용하는 것이 좋을 것이다.