안녕하세요! 기형쌤입니다.
날씨가 너무 들쭉날쭉하죠?
어제는 너무 추웠는데 오늘을 또 조금은 따듯한 느낌입니다.
이런 날일수록 감기걸리기 딱 좋으니 다들 항상 따듯하게 입고 다니시길 바라요!
오늘 제가 들고온 IT 이야기는 가상머신입니다.
클라우드 컴퓨팅의 기본적인 전제는 가상의 컴퓨터를 만드는 것입니다.
그렇다면 가상머신과 클라우드 컴퓨팅은 확실한 상관관계가 있다고 봐도 무방하겠죠?
그렇다면 가상머신은 무엇일까요?
가상머신은 가상의 머신(Machine) 즉 가상의 컴퓨터를 만드는 기술을 말합니다.
어? 그렇다면 클라우드 컴퓨팅이랑 동의어 아닌가요? 라고 물을 수 있지만
가상 머신은 조금 포괄적인 개념입니다.
무언가를 애뮬레이팅 할 수 있다면 어떠한 소프트웨어라도 가상머신이라고 이야기 할 수 있습니다.
가상머신은 크게 시스템 가상머신과 프로세스 가상머신 이렇게 두 가지로 나눌 수 있습니다.
다만 프로세스 가상머신은 하나의 프로세스만을 위해 생성되며
그 프로세스가 종료되면 같이 사라져버립니다.
일반적으로 실제로 존재하지 않는 기계를 에뮬레이트하고,
프로그래밍 언어의 하드웨어 추상화를 위해 사용되는 경우가 대부분입니다.
그리고 시스템 가상머신이 가장 대중적이고 많이 사용되는 개념인데
앞으로 설명해드릴 대부분의 이야기가 시스템 가상머신의 이야기입니다.
시스템 가상머신이 여러분들이 기본적으로 생각하시는 클라우드 컴퓨팅의 모체가 되는 개념이기 때문입니다.
가상머신의 원리?
가상머신은 CPU, RAM, 하드디스크 등 컴퓨터의 주요 부품들을 가상으로 만들어서 구동하는 식으로 동작합니다.
가상으로 만들기 위해서는 각 부품들의 기능을 소프트웨어적으로 구현할 필요가 있겠죠?
모든 부품의 기능을 소프트웨어적으로 구현하는 방식을 에뮬레이션이라 부릅니다.
이 방식은 범용성은 뛰어나나 속도가 떨어진다는 단점이 있습니다.
사용 예를 들자면 에뮬레이터인 Bochs를 사용하여 ARM 계열의 스마트폰 위에서
x86 가상 머신을 만들어 윈도우 등의 x86 운영체제를 설치할 수 있으며,
QEMU를 사용하면 x86 플랫폼에서 ARM 계열 가상 머신을 만들어서 안드로이드를 설치할 수도 있습니다.
반면, CPU 등 주요 부품의 구현에서 하드웨어의 기능 지원을 받으면 가상화라고 부릅니다.
가상화는 속도가 빠르다는 장점이 있으나, 해당 하드웨어 기능에 크게 종속되기 때문에 범용성이 상대적으로 떨어진다.
예를 들면, CPU를 가상화 형식으로 구현하면 실제 컴퓨터의 CPU가 처리할 수 있는
기계어 세트에서 크게 벗어나는 가상 CPU를 지원할 수 없게 되는 형식입니다.
마지막으로, 완전한 에뮬레이션/가상화를 포기하고,
가상 머신 내에 설치될 OS에 수정을 가하거나 전용 드라이버를 사용하여
하드웨어에 직접 접근하는 방안을 별도로 마련하는 방법이 있으며, 이를 반가상화라 부릅니다.
이 방안은 속도가 가장 빠르나, 하드웨어 기능 뿐만이 아니라
운영체제 및 드라이버에도 종속성이 생기기 때문에 범용성은 가장 떨어지게 됩니다.
그래서 CPU를 예시로 들면,
가상 머신 내부에서 가상 CPU 모델을 구축하여 가상 머신에서 명령어가 수행될 때마다
가상 CPU가 처리할 내용을 모델에 따라 업데이트하는 방식은 에뮬레이션에 해당하고,
가상 머신의 명령어를 대부분 실제 CPU에서 직접 실행하나,
일부 특수 케이스에 해당하는 명령어들만 별도 처리를 하는 방식은 가상화에 해당합니다.
그리고 문제가 있는 기계어 부분을 미리 다른 명령어로 대체하고,
관련 기능을 사용할 땐 하이퍼바이저와 별도 통신 채널을 활용하는 등의 기법이 반가상화에 해당하는 기법입니다.
가상머신은 왜 만드는걸까?
컴퓨터 안에 다른 컴퓨터를 만든다는 특성 때문에 가상 머신의 용도는 무궁무진합니다.
일단 하나의 컴퓨터로 2개의 OS를 실행할 수 있게됩니다.
대표적인 예가 MAC OS 환경에서 Windows OS를 설치하거나 하여
서로의 OS에서 호환되지 않는 프로그램을 한 컴퓨터에서 실행 가능하게 만들어주는 것입니다.
또 다른 예로는 개발자들이 Windows 환경에서 Linux를 이용하여 프로그래밍을 진행할 때 사용하기도 합니다.
국내에서의 예를 들자면 하위버전 Windows, 특히 Windows XP를 깔아
인터넷뱅킹 및 각종 공문서 수발이나 닷넷 프레임워크 관련 프로그램을 운용하는데에 유용합니다.
본컴에서 증명서발급 등이 잘 되지 않는 경우 가상 XP에서는 웬만하면 잘 되는 경우가 많습니다.
하지만 일부는 가상 머신에서 실행하는 걸 막아서 본컴에 모듈을 설치하는걸 강요받을 수 있습니다.
해당 Windows가 하드웨어 지원이 안 되는 경우, 이를 우회할 수도 있습니다.
가령 Windows XP는 스카이레이크에, Windows 7은 커피레이크에 설치가 되지 않으나,
상위 버전 Windows의 가상 머신에 올려놓고 정상적으로 사용할 수 있습니다.
멀티코어 프로세서를 사용한 시스템에서 정상적인 사용이 되지 않는 Windows 9x 역시
가상 머신 위에서는 작동이 잘 되는 현상을 보입니다.
또 다른 목적으로는 하나의 컴퓨터의 자원을 여러 명에게 나누어 주고 싶은데,
각 사용자 간의 상호 간섭을 없애고 싶을 때 가상머신을 사용합니다.
21세기 들어서 널리 사용되는 클라우드 등에서 사용하는 가상 머신이 이러한 경우에 해당하게 됩니다.
마지막으로 컴퓨터의 다른 부분에는 영향을 주지 않는
독립 환경을 만들고 싶을 때 가상머신을 이용하기도 합니다.
인터넷 뱅킹, 결제 등의 목적으로 각종 보안 프로그램, 인증 프로그램을 덕지덕지 깔아야 하는 경우,
메인 데스크탑에서 이렇게 하면 시스템에 악영향을 미치므로 가상 머신을 활용할 수 있고
개발자들이나 정보보안 전문가들이 악성코드 분석 등을 할 때
실수로 컴퓨터 전체가 감염되지 않도록 가상 머신을 사용하는 방법 등도 있습니다.
에뮬레이션의 범용성이 반드시 필요한 경우를 제외하면 성능을 위하여
가상화 기법 또는 반가상화 기법을 사용하는 경우가 많습니다.
실제로 가상화 기법을 적용한 x64 가상 머신의 동작 속도는 실제 컴퓨터의 동일 스펙 컴퓨터에 비하여
5~10%의 성능 저하도 보이지 않는 경우가 많습니다.
클라우드 컴퓨팅을 배우는 방법?
가상화 머신을 이용하게 된다는 것이 이제는
클라우드 컴퓨팅 기술을 이용하게 되었다는 말과 동의어로 사용되기 시작한 것은
어제 오늘 일이 아닙니다.
이제는 가상화 컴퓨터 안에서 또 가상화 컴퓨터를 만들어 새로운 것을 시도하기도 하고
가상화 컴퓨터를 이용하더라도 성능에서의 차이가 많이 느껴지지 않을정도로
발달하기도 했습니다.
이 클라우드 기술에 대해 관리하고, 운영하는 클라우드 아키텍트가 되실 수도 있고,
클라우드 컴퓨팅 서비스 안에서 다른 프로그램을 만드는 프로그래머가 되실 수도 있겠죠.
하지만 그 모든것들을 하시려면 제대로 배우시는것 또한 중요하다고 생각합니다.
그러니 잘 배우셔야겠죠?
어디서 배우실 수 있을까요?
현재 국비지원으로 전문가 과정을 지원해드리고 있습니다.
IT계열은 학력보다 실력! 이라는 슬로건은 시간이 지남에도 떨어지지 않고
오히려 더더욱 공고해지고 있습니다.
그러한 실력을 배양해드리고 있으니 관심있으시다면
하단의 네임카드를 눌러주세요. 상담은 무료로 진행되니 전혀 부담 가지실 필요 없습니다.
'IT 정보나눔!' 카테고리의 다른 글
프론트엔드와 백엔드 개발자의 차이는? (0) | 2020.12.17 |
---|---|
해커! 어디까지 알고있니? (0) | 2020.12.16 |
R은 어떠한 언어일까? (0) | 2020.12.14 |
빅 데이터 프로세싱(Big data processing)이란 무엇인가? (0) | 2020.12.12 |
C++ 이 C와 무엇이 다른걸까? (0) | 2020.12.11 |