가상화(Virtualization)는 실제 운영체제 위에 가상화 소프트웨어를 설치한 후에 소프트웨어를 통해 하드웨어(CPU, Memory, Disk, NIC 등)를 에뮬레이션한 후에 이 위에 운영체제(Guest OS)를 설치하는 것을 의미합니다. 가상화를 해 주는 소프트웨어를 하이퍼바이저(Hypervisor) 라고 하며 종류로는 이 책에서 사용하는 VirtualBox, 그리고 VMWare, Xen 등이 있습니다.

하이퍼바이저를 설치하는 실제 운영체제(윈도, OS X, 리눅스 등)를 호스트(Host) OS 라 하고 하이퍼바이저 위에 만든 가상 머신에 설치된 운영체제를 게스트 OS 라고 부릅니다.

 

 

가상화는 다양한 운영체제와 애플리케이션을 논리적으로 분리할 수 있으므로 여러 운영제체와 애플리케이션을 구동하는 개발 환경등 복잡한 환경을 추상화할 수 있는 좋은 방법이지만 가상 머신을 통해 개발환경을 구성하려면 부딪히는 중요한 문제가 있습니다.

가상 머신에 운영체제를 설치하고 웹 서버, DBMS, PHP 를 설치하는 것은 개발 환경 구성 대상이 PC 에서 가상 머신으로 옮겨졌을 뿐이지 기존 작업과 난이도 측면에서 차이가 없으며 오히려 가상 머신을 설치하고 관리해야 하는 부담이 더 늘었습니다.

다음 그림에서 보이는 가상화 부분에 해당하는 하이퍼바이저 설치, 운영체제(Guest OS) 설치, 애플리케이션 설치 및 설정은 모든 개발자가 다 똑같이 해줘야 하는 작업입니다.

 

Vagrant 는 이런 문제를 해결하기 위한 솔루션으로 설정 스크립트를 기반으로 특정 환경의 가상 머신을 만들어서 신속하게 개발 환경을 구축하고 공유할 수 있게 만들어진 솔루션입니다.

 

Vagrant 는 VirtualBox, VMWare 등을 지원하고 있으나 VMWare 에서 사용하려면 별도의 드라이버를 구매해야 하므로 이 책에서는 VirtualBox 를 기반으로 라라벨 개발 환경을 구성하겠습니다.

이 책에서는 VirtualBox 5.0.4, Vagrant 1.7.4, git 1.9.5 를 사용하였습니다.

 

홈스테드(Homestead)는 vagrant 의 설정 스크립트를 사용하여 라라벨 애플리케이션을 작성하는데 필요한 모든 구성 요소를 자동으로 설치하는 프로젝트로 홈스테드를 사용하면 가상 머신에 다음과 같이 우분투 운영체제, 웹서버, DBMS, PHP 스택이 자동으로 설치 및 설정이 완료됩니다.

  • Ubuntu 14.04
  • PHP 7.0
  • Git 1.9
  • HHVM (HipHop Virtual Machine) 3.11
  • Nginx 1.9
  • MySQL 5.7
  • Postgres
  • Node (With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Envoy
  • Blackfire Profiler

 

윈도 사용자는 VirtualBox 를 사용하려면 하드웨어 가상화(인텔의 경우 VT-x, AMD 는 AMD-V) 를 활성화 시켜야 합니다. 하드웨어 가상화 활성화는 바이오스에서 설정할 수 있습니다.