開発環境で重宝するのが、Vagrant。
多分、運用だとクラウドだけど、開発はVagrantが無いとやっていけないくらい、使っています。
Vagrantの優れている点
1.自分のPCにサーバが作れる
2.本番環境と同じOSの環境で開発が出来る
3.仮想マシンのディスクイメージ丸ごとより、小さなファイルサイズで配布が可能
4.開発チームで同じ環境を共有することが可能
5.環境構築をプログラムとして作成することが出来る
6.母艦と仮想間でファイルが共有(同期)出来る
7.ネットワークが母艦経由で外に繋がる
1.自分のPCにサーバが作れる
本番運用のサーバと同じOSの環境を作れるので、開発サーバーを別途iDC等に契約することなく、
自分のPC内にサーバが作れる。
オフラインな環境やネットワークが貧弱な環境でも、開発が可能。
2.本番環境と同じOSの環境で開発が出来る
Windowsであれ、Macであれ、Linux系の環境で動かすとなると一番怖いのは、1バイト文字以外の文字を
扱う国に生まれた定めである文字コードの対応なども、本番と同じOSということであれば一応担保が出来る。
あとは、DB周りとかWebサーバ周りとの相性とかも事前に確認が出来るので、本番環境にいざデプロイした時の
不具合の問題から少しは開放される(かも)。
3.仮想マシンのディスクイメージ丸ごとより、小さなファイルサイズで配布が可能
VirtualboxやVM Wareを使うので、仮想マシンのディスクイメージはある程度の大きさになるのは仕方無いが、
それでも最低必要限のファイルサイズは小さくまとまっているので、そのファイルを配布することも可能。
だいたい4GBぐらい?
4.開発チームで同じ環境を共有することが可能
小さいファイルなら、GitやGithubに登録してしまって、チームで共有してしまえ。ってな感じ。
5.環境構築をプログラムとして作成することが出来る
これは結構手間がかかるというか、時間がかかるので、個人的には半信半疑なんだけど
chefを使えば、サーバの初期設定を全てプログラミング可能。
だけど、chefを使うための環境構築で時間がかかったり、chefのレシピ(プログラミング)を
作るにも時間がかかるし、chefの実行速度も結構時間がかかる。
個人的には、シェルスクリプトを用意して仮想サーバを作った後に、仮想サーバとの共有フォルダから
仮想サーバにシェルスクリプトをコピーして、仮想サーバ内で実行するのが一番速いと思う。
今まで、何百台もサーバをセッティングしていると、直接コマンド打ってしまうのが一番速いので、
それをどこまで我慢して、プログラミング出来るかの戦いだったりするw
6.母艦と仮想間でファイルが共有(同期)出来る
Vagrantfileのオプションで、母艦のフォルダと仮想サーバのフォルダを共有(同期)することが出来るので、
PHPやRubyなどのスクリプト言語では、作業ディレクトリをこの共有フォルダに置けば、
ソースコードを修正して、Webブラウザをリロードすれば、修正が反映されるという便利!
まあ、共有フォルダが悪さをして最新のMacは動作が不安定になってしまうのが残念。。。
共有フォルダを使わなければ問題ないです。
7.ネットワークが母艦経由で外に繋がる
最近のvagrantのバージョンから、インターネットからアクセス可能にするサービスも。
使ったことは無いんですが、まあそこそこ使えるそうですw
自分が開発している環境をお客さんに見て貰いたい時とか、リモートで作業していて
開発チームのメンバーに問題点を見て貰ったり、俺のコード、機能を自慢した時とかw
結構、使い道ありそうですね。
まあ、あと5年は絶対に使うべき技術だと思うので、基本は押さえていた方が良いですよ。
クラウドサーバを使うとお金がかかりますが、Vagrantだと無料で使えますからね。