우리는 클라우드 이야기를 하기 이전에 가상화를 먼저 이야기를 했었다. 이미 오래전부터 Virtual Machine(VM)에 대해 이야기하고 체험했다.
사실 체험한 정도로만 사용한 사람들은 느꼈을 것이다.
‘왜 이 좋은 컴퓨터를 두고 느려터진 VM을 사용해야되는거지?’
‘인터넷도 잘 안되는거 같은데’
위의 기분을 느낀 사람들은 정확하게 느꼈다. 저건 실제로도 맞는 이야기다. 가상화 환경으로 자원을 옮기게 되면 평상시 사용할 수 있는 자원보다 손실율이 발생하는 것이 사실이며, 특히 네트워크 측면에서 많이 손실이 발생한다.
물론, 이 글에서 이야기하고자 하는건 가상화가 안좋다는 이야기가 아니다. 이 글의 주제는 ‘왜(Why?)’ 가상환경을 써야하는지를 생각해보는 것이고, 내 생각을 적어보는 글이다.
그래서 Docker와 같은 Container를 포함한 가상화 기술에 대한 장점을 이야기할 때, 대표적으로 이야기하는 것이 있다.
‘모두 똑같은 개발환경으로 세팅이 가능하며 합치기 용이하다.’
이렇게 이야기를 한다. 물론 맞는 말씀이지만, 실제 개발자들에게 막 와닿는 이야기는 저 부분은 아닐 것 같다. 내가 생각하기에는 더 개발자들이 공감할 수 있는 영역이 있을 것 같다는 것이다.
내가 주장하고 싶은 이야기는 아래와 같다.
“가상환경에서 개발환경을 세팅하면 본인PC에는 어떠한 영향도 주지 않아요.”
위 말이 더 와닿지 않을까 싶다. 요즘은 컴퓨터를 잘 모르는 사람들도 인터넷 뱅킹을 극도로 싫어한다.
Active-X나 기타 등등의 깔리는 프로그램들이 괴롭히기 때문이다. 그리고 그게 얼마나 컴퓨터에 자극을 많이 주는지 알기 때문이다.
노트북을 끼고사는 개발자들은 얼마나 더 스트레스일까ㅋ
사실 저 정도로 노트북의 Performance에만 영향을 준다면 다행이지만, 요즘은 양자택일을 해야하는 상황이 오기도 한다.
A라는 프로그램이 주는 영향도가 막대하기 때문에 B라는 프로그램이 실행이 안되는 경우가 존재한다.
비슷한 예를 들자면 백신프로그램으로 인해 프로그램 설치가 제대로 안되거나 다운로드가 제대로 안되는 일이 발생하는 것과 비슷하다.
추가 예를 들자면, 윈도우에서 Docker를 쓰고싶어서 Hyper-V를 설정하게 되면 그 순간부터 나는 내 PC에서 Oracle VirtualBox를 사용할 수 없는 입장이 된다.
이런 상황들이 종종 발생하기 때문에 이런 주제로 글을 한번 적어보았다.
가상화는 물리적인 자원(CPU, RAM)의 성능을 최대한 활용하는 측면에서는 최적화된 On-Premise환경을 따라오긴 힘들다.
그래도 가상화가 계속 화두가 되고 발전한다는 것은 그만큼의 장점이 있기 때문이겠고, 나 또한 가상화를 참 좋아한다.