Windows에서 Linux 머신을 구성하는 방법들


게임을 개발하다 보면 여러 가지 서버 환경을 준비해야 한다. 개발자가 사용할 개인용 개발 서버부터 팀원들이나 클라이언트 개발자가 꾸준히 접근할 팀 개발 서버, QA를 위한 테스트 서버, 상용화 환경을 준비하기 위한 것까지 최소한 서너가지의 서버 환경은 필수적이다. 또한 의외로 꼭 있으면 좋은 것이 기획자들의 데이터 테스트를 위한 기획자별 테스트 서버인데, 이 경우 전문 개발자가 아닌 사람들을 위한 배포용 서버 환경을 어떻게 구축 할지가 매우 중요해진다.


업무 환경에서 가장 많이 사용하는 운영체제는 대부분의 경우 Windows이다. 하지만 게임은 물론 다수의 프로젝트에서 사용하는 서버는 리눅스에서 동작하는 경우도 많다. 이 경우 전문 개발자가 아닌, 혹은 리눅스 서버 사용 경험이 거의 없는 사람과의 협업이 필요할 때 어떻게 이들을 위해 환경을 설정하고 공유하며 배포를 준비할 수 있을까. 이번에는 이에 대해서 이야기를 해보려고 한다.

 1. Hyper-V

1
(출처: https://www.microsoft.com/)


Hyper-V는 Windows에서 기본으로 지원하는 가상 컴퓨터 관리 기능이다. 다른 운영체제를 사용하기 위하여 추가로 프로그램을 설치하거나 할 필요가 없다는 것이 장점이다.


이후에 설명할 다른 가상 환경도 마찬가지 이지만, Hyper-V 역시 지정된 가상 컴퓨터 이미지를 공유할 수 있다. 이를 통하여 다른 사람들에게 쉽게 서버를 배포할 수 있다.


Hyper-V는 이와 같이 사용이 간단하고 배포가 손쉽지만, 아쉬운 부분이 있다. 대표적으로 NAT설정이 번거롭다.[1] 기본 기능을 통하여 바로 만들 수 있는 외부 스위치를 활용하는 경우, 새로운 하드웨어 주소가 가상 컴퓨터에 설정된다. 그러므로 하드웨어 주소를 통해 접근을 제한하는 네트워크 정책을 사용하는 회사의 경우, 배포가 쉽다는 장점과는 반대로 네트워크 시스템 담당자를 매우 귀찮게 만들게 된다. 즉, 전문 개발자가 아닌 사람과 협업하기 위한 서버 환경 설정 용으로 Hyper-V는 매우 편리하지만, 해당 가상 서버 환경에서 외부 네트워크 접속을 허용하기 위해서는 추가 작업이 필요하다.


하지만 서버가 외부 접속을 지원할 필요가 없다면, Hyper-V로 만든 가상 컴퓨터는 매우 쉽게 공유할 수 있는 리눅스 머신이다. 특히 기획자 개별 데이터 테스트용 서버 머신이라면, 가장 편리한 방법이 아닐까 생각한다.

 
2. Docker

2
(출처: https://www.docker.com/)


Docker는 리눅스 위에 얇은 추상화 레이어를 더해서 프로그램을 구동시킬 수 있는 컨테이너를 만들고, 그 위에서 리눅스 프로그램을 구동시킬 수 있도록 해주는 소프트웨어이다. 다시 설명하자면, Docker는 사용자가 직접 가상 운영체제를 설치하거나 유지보수하지 않더라도, 원하는 머신에 Docker만 깔면 동일한 환경에서 실행할 수 있도록 배포, 관리가 가능하게 만들어준다. 그리고 이 기능은 VM을 이용하는 것이 아니라, 각각의 운영체제에 직접 연동되어 동작한다. 현재 Docker가 지원하는 운영체제는 Mac, Windows, Linux이다.


이 글의 첫 부분에서 이야기한 다양한 서버 환경을 준비하는데 있어서, Docker는 Hyper-V보다 좀 더 나은 관리 방식을 제공한다. 실제로 Docker는 가상 컴퓨터의 관리보다는 소프트웨어 배포용 소프트웨어이기 때문이다. 출시를 위한 환경은 보통 단일한 서버보다는 여러 가지 종류의 서버가 상호 작용하는 형태를 취하게 되는데, Docker를 이용하면 각각의 기능에 따른 가상 환경을 운영체제부터 프로그램까지 전체를 관리하지 않아도 되기 때문에 상대적으로 편하게 유지보수가 가능해진다. 엔터프라이즈 환경에서 검증되었다는 것 역시 훌륭한 점이다.


물론 Docker도 진입장벽이라는 단점이 존재한다. 개발자들에게는 의아한 이야기일 수도 있지만 개발자가 아닌 사람들도 사용하기에는 GUI가 빈약하며 교육을 위한 시간과 비용이 필요하다.

 

 3. 그 외 가상화 소프트웨어

Hyper-V가 나오기 전부터 이미 여러 회사에서 VirtualBox나 VMWare 같은 가상화 관련 소프트웨어를 만들어왔다. 이들은 역사가 깊은 만큼 다양한 인프라스트럭처 관련 툴을 지원하기도 하고, 사용자의 규모에 따라 분리된 프로그램을 제공하기도 한다. 또한 Hyper-V의 약점이었던 NAT지원 등도 손쉽게 설정할 수 있다. 배포 역시 마찬가지로 이미지를 활용하면 어렵지 않다.


하지만 먼저 설치해야 할 프로그램이 존재한다는 것은 개발자가 아닌 사람들이 사용하기에 단점이며, 개발자들이 사용하는 상황에서도 특별한 경우가 아니라면 이러한 가상화를 사용하는 경우는 많지 않다.


편의성이 좀 더 뛰어난 경우가 많아 관련 기능을 사용해야 하는 경우라면 고려해 볼만 하다.

 

 4. 정리하며

서버 개발은 물론이요, 하다 보니 어느새 시스템 엔지니어링까지 해야 하는 수 많은 개발자 분들을 위해 빈약하나마 가상화 프로그램을 소개하는 내용을 정리해 보았다. 다양한 환경을 준비하고 공유하는 방법에 대한 의의도 있겠지만, 개발된 코드와 컨텐츠를 보관하는 것 만큼 이나 개발 환경과 구동 환경을 백업해두는 것도 중요한 만큼, 앞으로 오래오래 개발할 수 있는데 조금이나마 도움이 되었으면 하는 마음에 미약한 글을 여기서 정리한다.

아이펀팩토리   박근환 아이펀 엔진 테크니컬 디렉터


[1]: Hyper-V NAT 네트워크 설정, https://msdn.microsoft.com/ko-kr/virtualization/hyperv_on_windows/user_guide/setup_nat_network

2 thoughts on “Windows에서 Linux 머신을 구성하는 방법들”

댓글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중