現在、私の開発環境はUbuntu v12.04とVMWareです。完全にGUIを使用してVM内で完全に動作し、Windows 7であるホストOSからファイルにアクセスする必要がある場合にのみ、Ubuntu内でsambaファイル共有を使用します。 VMへのネットワーク接続のためのNAT経由のVM。他のソリューションを使用すると、VMWareの共有フォルダーのようにはるかに遅いことが判明しました。VMWare Image設定でこれを無効にしています。ただし、VMWareツールをインストールして、ホストマシンへの簡単なコピー/パスタを可能にします。
Matthias Zeisが指摘したように、一部のVMでは問題が発生することがあるため、ネットワーク/共有フォルダーの選択には注意してください。
私はVirtualBoxの以前のユーザーでしたが、VMWareの方が安定しており、許容範囲内であることがわかりました(少なくとも私にとっては)。ただし、お客様のニーズと要件に最適な独自のテストを実行します。VagrantはVirtualBoxを使用します。
IDE:
NetBeansをIDEとして非常に広範囲に使用していましたが、その後Sublime Text 2としてより軽量なソリューションに移行しました。主にX-Debugとリファクタリングを容易にするためにNetbeansを開くことはめったにありません。Netbeans、PHPStorm、EclipseなどはすべてJavaベースのIDEであり、非常にリソースを消費します。
ハードウェア:さらに追加するために、ハードウェアは常にパフォーマンスにおいて重要な役割を果たします(明らかに)。あなたの開発者がまだプラッタHDDを使用している場合、私は彼らのためにSSDに投資したいと思います。Magentoには非常に大量のファイル/フォルダーがあるため、開発者のパフォーマンスが大幅に向上します。開発中:すべてのキャッシュをオフにして、SVN / GITまたはIDEでフォルダーツリーを単純に走査します。VMに十分なRAMを割り当てることも同様に重要です。
私のホストマシン:Samsung SSD 512GBドライブ容量、Win7(64ビット)、8GB RAM、i7 2.4GHz(8コア)
私のVMマシン:Samsung SSD、30GBのドライブ容量、Ubuntu 12.04(32ビット)、3GBのRAM、i7(4つのコアが割り当てられています)。
質問:
最大の質問は、複数のプロジェクトで軽量で再利用可能な1つの開発者VMイメージを作成するか、プロジェクトごとにイメージを作成することです。以前は、プロジェクトごとに小さなVMを実行しようとしていましたが、開発ワークフローに合わせて常に再構成するのは面倒でした。
プロジェクトごとに複数のVMが選択されている場合、OS、IDE、LAMPスタック、更新/構成などのメンテナンスが面倒になることがあります。最終的には開発期間が長くなります(さらに悪いことに、ローカル環境のセットアップでは請求できない時間がかかります)。
また、新しいVMを開いたり、ホストハードウェアをさらにスライスしたりすることなく、他のプロジェクトファイルにすばやくアクセスできたため、これも役立ちました。欠点は理想的には、環境(たとえば、php.ini、my.cnf、httpd.confなど)で予期しない問題を防ぐために、各プロジェクトを他のプロジェクトからサイロ化することです。これまでのところ、すべてのプロジェクトに簡単にアクセスできるようにするというトレードオフは、より機知に富んでいます。
繰り返しになりますが、これは要件とニーズ次第であるため、事前に評価してください。
フィードバック:
フィードバックにつながります。開発者からできるだけ多くの情報を入手してください。最終的には、適切なソリューションをセットアップして導入する前に、要件を満たし、問題を理解する必要があります。誰もが異なるワークフローを持っているため、開発用に選択したOSで快適に作業できるとは限りません。私の経験則では、開発者がOSとIDEを最も快適に選択し、最適なパフォーマンスを発揮できるようにします。そのため、軽量のヘッドレスLinux VMでもニーズには役立つかもしれませんが、明らかに、ホストとVM間のローカルネットワークでフォルダーを共有する問題に遭遇する可能性があります。
移植性:
VMイメージをDropboxのようなものに保存して、必要なときにいつでも簡単にアクセスできるようにするというアイデアにも挑戦しました。Dropboxのようなサービスは保存されているものを少しずつ比較するので、変更したビットのみが同期されるのは論理的に思えました。しかし、これはイメージファイルの保存方法の内部に関係していると信じているため、事実ではないことが判明しました。VMが同期するのを昼夜を問わず待っています。
注:
VMに割り当てられるドライブ容量が大きくなると、イメージも大きくなります。開発者にイメージを配布する際には、このことに留意してください。プロジェクトごとにプロジェクトファイルをフロントローディングするのはやり過ぎかもしれません。これを各開発者に任せて、イメージを作成した後にセットアップするようにします。
Ashley Schroderには、FoomanとColinによるいくつかのコメントだけでなく、読むのに適したやや古い関連記事があります
うまくいけば、これがリストされている問題項目、#6の洞察に役立つことを願っています。