クマのブログ

つまづいたところ、学びを書いていきます

「仮想サーバー」を知る

前提

・Windows10

背景

・いよいよプロジェクトに参画するので環境構築をすることに。

・開発環境はVirtualBoxVagrantで仮想サーバーを立てて開発を進める。

・ただ「仮想サーバー」についてあまり理解していないので、簡単に調べたことをメモ

調べたこと

仮想サーバーとは

一言でいうと

1台のサーバー上で複数のオペレーションシステム(OS)を動かし、複数のサーバーとして運用する仕組み

従来は1サーバーに対して、1つのOSやアプリケーションインストールするのが通例だった。

PCのメモリやCPUの性能向上のおかげで1ハード内に複数のOSを処理やアプリケーションを動かすことができるようになった。

仮想サーバーがないとどうなるのか

1OS、1アプリケーションしか開発することができないので、複数プロジェクト開発には複数のサーバー機能を持つハードウェアが必要になる

物理サーバーとの違い

仮想サーバーの対として、「物理サーバー」がある

物理サーバーとは、物理サーバーそのもののリソースを使うサーバーで、ピーク時を想定した環境構築をするため、余裕を持たせることが多い。

それゆえ、本来使えるはずのサーバーリソースを使わずに無駄が生じることが多い。

メリット

1.導入コストのとリプレースコストの削減

サーバーの追加導入に新しいハード(PCなど)は必要ない

2. 設置スペース減少によるランニングコスト減少

サーバー設置のデータセンター代、電気代、保守運用の人件費

3, サーバー管理の一元化による運用負担軽減
4, 必要な時に必要な分だけリソース追加
5. 冗長化構成

VirtualBoxとは

ホストOSにゲストOSを構築する仮想化するためのソフトウェア

ホストOS:WindowsMac

ゲストOS(=仮想マシン):CentOSUbuntu

Windows環境でLinuxを使えるようにするには必要なソフトウェア

Vagrantとは

(厳密には違うが)簡単に言うと、VirtualBoxCUIで操作するためのソフトウェア

VirtualBoxVagrantの違い

大きな違いは環境構築のハードルの高さ

VirtualBox単体の開発環境だと

  • OSのダウンロード、SSHのインストールなど細かな設定も0からやる必要がある

  • 上記設定を自動化できないため、他社との共有時には膨大な量の手順書が必要になる

一方、Vagrantを使えば、

  • コマンド一つで開発環境が整う

  • 設定情報の共有ができる

  • 環境構築の自動化ができる

などなど、共同開発が大前提のシステム開発に必須といっても過言ではない。

例えば、仮想マシンを構築する際の、OSのバージョン指定、接続IP、ホスト名などなどを全てVagrantfileに格納しておけば全て自動化できる。

※設定の仕方はRubyで書かれている

所見

「なんでvirtualboxVagrantが必要なんだろう?」

と思っていた点が少し理解できました。ただ、

「ただ、サーバを立てるならxamppでもいいのでは?」

という素人疑問もわいたので、そこは別でインプット・アウトプットします。

参考記事

仮想サーバについて

VirtualBoxとVagrantについて