質問: とあるサイトを参照したところ クライアント -> Webサーバー -> APサーバー -> DBサーバー DBサーバー -> APサーバー -> Webサーバー -> クライアント の一連の流れでアプリケーションが動いていると記載されていました また サーバーというのは専用のサーバーソフトが動いていて 特定の機能に特化したコンピューターという認識です 例として Apache HTTP Serverというサーバーソフトを動かしているコンピューターなら Webサーバーソフト Apacheというサーバーソフトを動かしているコンピューターなら アプリケーションサーバー MySQLというサーバーソフトを動かしているコンピューターなら DBサーバー そして仮想サーバーは 一つのコンピューターの領域をを分けてDBサーバーやアプリケーションサーバーなどの複数のサーバーを まとめていると解釈しました 先ずここまでの解釈に誤りがあればご指摘ください。 私は現在ローカル開発環境を構築してアプリ開発を試みていますが 先ずは、VirtualBoxをダウンロードしました。 これは、PCには1つしかOSを導入できず。サーバー系のOS(例CentOS)での動作確認が必要なため 仮想マシンにサーバー系のOSに導入するためだと某サイトに記載されていました。 次に簡易的にVirtualBoxを操作するVagrantをインストールした後にlaravelでの開発を始めたのですが ローカル開発環境で、Webサーバー,APサーバー,DBサーバーを構築した覚えがないのに アプリが動く仕組みが理解できません また、サーバーが構築してある場合、私の仮想マシン内に構築されているのでしょうか? どなたかご教示いただけないでしょうか?
回答: Oracle VirtualBoxっていうのは、パソコン上で別のOSを仮想PC上で動かすソフトですね。 これ一つで、例えばCentOSだのUbuntuだのLinuxディストロのインストールDVDイメージファイルを用意して、 インストールして立ち上げることが出来ます。 でも、CentOSならCentOSの初期設定や必須ソフトの構築など、 細かなこと全部自分で行う必要が生じて面倒だし時間もかかります。 そこで、Vagrantです。 VagrantはVirtualBoxなどの仮想OSソフトを制御して、 どういうOSを入れるのか、そのOS上にどういうソフトをインストールして動かすのか、 というサーバー構築に関わる情報をvagrantfileというものに記述し、 それに従ってOSのインストールイメージファイルのダウンロードやインストールから サーバーソフト類のインストールと初期構築を自動化するものです。 どういうコマンドを叩けばどうなるのか、っていうのが Vagrant+VirtualBoxでのデバッグ環境構築に関する記事の中で解説されているので、 自分で打ったコマンドによって開発環境(デバッグ環境)ができたかどうかがわかります。 しかし、パソコンに入っているウイルス対策ソフト(ファイアウォール)によっては 思い通りにすんなり立ち上がらないこともあるので、 コマンドを叩いたからと言って狙った通りにサーバーが稼働しているかどうかはわかりません。 動作確認を行って不測の事態の対策を取る必要があります。 ずっこけているとコンソールすら開けないとかsshログインできないとかありえます。 -- サーバーに関して。 必要な機能が動き十分速く処理できさえすれば、 すべて一台で賄うことも可能です。 webサーバー役、サーバー側言語処理役、データベースサーバー役、メディアサーバー役などなど。 しかし、システムへのアクセス量が多いとか、短時間で大量のデータ処理が必要になるなど、 一台で賄うには高性能なサーバーが必要になったりします。 一つのサーバーアクセスを受け取り、処理して、結果を返すのに2秒かかるとしたばあい、 10件で20秒、100件で200秒、1000件で、10000件で、と順調にリニアに増えることもあれば、 予測に反して余計に時間がかかることもあります。 処理の負担が、webアクセスにかかるのか、サーバー側言語処理にかかるのか、 データベースへのクエリーにかかるのかなどを見極めて、 webアクセスを分散させるためにインターネットとwebサーバーとの間にロードバランサーをおいて webサーバーを複数台にし、一つのデータベースサーバーにアクセスする構成に拡大したり、 あるいはデータベースを多重化することもあります。 一台で担う役が少なくなれば、極端に高性能なハードウェアでなくても動きやすくなります。 ローカルでの開発においては、 全て一台で賄うことが多いですが、 複数のサーバーを駆使する大規模開発になるとローカルでも複数台を置くこともあります。