가상화 기술

업무 애플리케이션 개발 현장에서는 대부분 Windows 클라이언트 PC를 사용하는 경우가 많다. 또한 Java로 개발한 웹 애플리케이션은 Eclipse, InteliJIDEA, NetBeans 등 IDE를 사용하여 프로그래밍한다. 이러한 IDE를 각자 PC에 설치하여 개발 환경을 구축하고 여러 가지 라이브러리와 프레임워크 등을 사용하여 프로그래밍과 테스트를 반복한다.

하지만 이렇게 개발한 업무 애플리케이션을 Linux로 된 운영 환경에서 실행한다면 어떻게 될까? 애플리케이션 실행 환경이 바뀌면 OS와 미들웨어 동작도 달라지기 때문에 운영 환경과 동일한 조건에서 시스템을 개발하는 것이 정석이다.

운영 환경과 동일한 개발 환경과 데이터센터를 준비할 수 있다면 그곳에서 테스트를 진행하는 것이 가장 바람직하다. 하지만 데이터센터 건설에는 많은 비용과 시간이 필요하므로 현실적으로 불가능하다.

현실적인 방법으로는 개발팀에서 Linux 물리 서버를 준비하여 운영 환경과 같은 개발 환경을 구축하는 것이다. 운영 환경에서 웹 애플리케이션이 동작하기 위해서는 Front 단의 웹 서버 이외에도 웹 애플리케이션 서버와 데이터베이스 서버 등이 필요하기 때문에 여러 대의 하드웨어가 필요하다([그림 1]). 부하가 큰 대규모 시스템의 경우에는 캐시 서버와 여러 대의 서버를 관리하는 서버도 필요하다. 또한 물리 서버를 설치하기 위해서는 설치 장소 및 전원 확보도 중요하며 개발 팀의 공유를 위한 네트워크 포설도 필요하다.

하지만 개발 환경 구축을 위하여 하드웨어를 구입하기에는 비용의 부담이 크다. 물리 서버와 네트워크 장비를 구축하기 위해 하드웨어를 구입하면 큰 비용이 드는 것은 물론, 모두 기계이기 때문에 언젠가는 고장 날 수밖에 없다. 그래서 하드웨어 유지 보수가 필요하다.

또한 물리 서버가 준비되면 누군가 개발 환경을 별도로 관리해야 하므로 본래의 업무인 애플리케이션의 설계, 배포, 테스트에 전념할 수 없게 된다([그림 2]). 대형 프로젝트의 경우 인프라 엔지니어가 개발 환경 구축 및 운영을 전담할 수 있지만 작은 프로젝트나 단기간 개발 환경이 필요한 경우에는 신입사원이나 아마추어 개발자가 유지 보수를 떠안기 쉽다.

만약 개발용으로 사용 중인 Windows 기반의 하드웨어에 가상 서버를 올릴 수 있다면 서버 장비를 새로 구입하지 않아도 개발 환경을 구축할 수 있다. 별도의 물리적인 하드웨어 대신 가상 OS 위에 애플리케이션을 구동시키는 것으로 이를‘ 가상 환경’이라 하며([그림 3]), 물리적인 서버가 아니므로 유지 보수에 대한 부담을 덜 수 있다.

가상 환경을 만들기 위해서는 기본이 되는 하드웨어에 OS(호스트OS)를 설치하고 그 위에 가상화 소프트웨어를 올린 뒤, 게스트OS를 구동시킨다([그림 4]). 가상화 소프트웨어를 사용하면 한 대의 하드웨어에 여러 OS를 가상으로 구동시키거나 파기할 수 있다.

이러한 가상화 구조를‘ 호스트 가상화’라고 한다. 최근 가장 많이 사용되고 있는 대표적인 가상화 기술은 다음의 세 가지다.

● 호스트 가상화

● 하이퍼바이저 가상화

● 컨테이너 가상화

완벽한 IT 인프라 구축을 위한 Docker

작가 | Asa Shiho

출판 | 정보문화사







Follow
4.7 Star App Store Review!
Cpl.dev***uke
The Communities are great you rarely see anyone get in to an argument :)
king***ing
Love Love LOVE
Download

Select Collections