Actuellement, mon environnement de développement est Ubuntu v12.04 avec VMWare. Je travaille entièrement à l'intérieur de la machine virtuelle, avec une interface graphique complète et n'utilise le partage de fichiers samba dans Ubuntu que si j'ai besoin d'accéder aux fichiers à partir de mon système d'exploitation hôte qui est Windows 7. J'accède et mappe normalement un lecteur réseau via l'IP interne du VM via NAT pour la mise en réseau avec la VM. L'utilisation d'autres solutions s'est avérée beaucoup plus lente que les dossiers partagés de VMWare. Je l'ai désactivé dans mes paramètres d'image VMWare. J'installe cependant des outils VMWare pour permettre une copie / pâtes facile sur ma machine hôte et vice versa.
Comme l'a souligné Matthias Zeis, soyez prudent dans votre sélection de dossiers de mise en réseau / partagés avec votre machine virtuelle, car certains s'avéreront problématiques.
J'étais un ancien utilisateur de VirtualBox, mais j'ai trouvé que VMWare était plus stable et fonctionnait de manière acceptable (du moins pour moi). Je voudrais cependant effectuer vos propres tests pour mieux répondre à vos besoins et exigences, c'est-à-dire. Vagrant utilise VirtualBox.
IDE:
J'utilisais Netbeans assez largement comme mon IDE de choix, mais j'ai depuis migré vers une solution plus légère comme Sublime Text 2 . J'ouvrirai rarement Netbeans principalement à des fins de X-Debug et de refactorisation plus facile. Netbeans, PHPStorm, Eclipse, etc. sont tous des IDE basés sur Java et peuvent être très gourmands en ressources.
MATÉRIEL:
Pour en ajouter plus, le matériel sera toujours un rôle clé dans les performances (évidemment). Si vos développeurs utilisent toujours le disque dur HDD, je chercherais à investir dans le SSD pour eux. Étant donné que Magento a une très grande quantité de fichiers / dossiers, cela accélérera considérablement les performances des développeurs. Pendant le développement: avec toute la mise en cache désactivée et en parcourant simplement l'arborescence des dossiers dans SVN / GIT ou votre IDE. Donner à votre machine virtuelle suffisamment de RAM est également tout aussi important.
Ma machine hôte: Samsung SSD 512 Go d'espace disque, Win7 (64 bits), 8 Go de RAM, i7 2,4 GHz (8 cœurs)
Ma machine virtuelle: Samsung SSD, 30 Go d'espace disque, Ubuntu 12.04 (32 bits), 3 Go de RAM, i7 (4 cœurs alloués).
QUESTIONS À POSER:
La plus grande question est de créer une image VM de développeur légère et réutilisable sur plusieurs projets ou de créer une image par projet. Auparavant, j'essayais de faire des machines virtuelles plus petites sur une base par projet, mais la reconfiguration constante pour aller avec mon flux de travail de développement devenait trop une corvée, et maintenant j'utilise une machine virtuelle plus grande et fais de mon mieux pour garder chaque projet aussi isolé que possible.
La maintenance du système d'exploitation, de l'IDE, de la pile de LAMP, des mises à jour / configurations, etc. peut devenir une corvée si plusieurs machines virtuelles par projet sont l'itinéraire choisi. En fin de compte, cela entraîne un temps de développement plus long (et encore moins de temps non facturable pour les configurations d'environnement local).
Cela s'est également avéré utile, car j'ai rapidement pu accéder à d'autres fichiers de projet sans avoir à ouvrir une nouvelle machine virtuelle et à découper encore plus mon matériel hôte. L'inconvénient est idéalement, je voudrais que chaque projet soit séparé des autres projets pour éviter tout problème imprévu avec l'environnement (par exemple, php.ini, my.cnf, httpd.conf, etc.). Jusqu'à présent, le compromis d'avoir tous les projets facilement accessibles s'est avéré plus ingénieux.
Encore une fois, cela dépend de vos exigences et de vos besoins, alors évaluez-les au préalable.
RÉTROACTION:
ce qui conduit à des commentaires. Obtenez autant de commentaires de vos développeurs que possible. En fin de compte, leurs besoins doivent être satisfaits et leurs problèmes compris avant qu'une solution appropriée puisse être mise en place et mise en place. Tout le monde a des flux de travail différents, et tout le monde n'est pas à l'aise avec le système d'exploitation que vous pouvez choisir pour le développement. Ma règle générale est de laisser le développeur choisir son système d'exploitation et son IDE dans lesquels il est le plus à l'aise et avec lequel il fonctionnera le mieux. Ainsi, même une machine virtuelle Linux sans tête légère peut s'avérer utile pour leurs besoins, mais peut évidemment se heurter au problème du partage des dossiers sur le réseau local entre l'hôte et la machine virtuelle.
PORTABILITÉ:
J'ai également joué avec l'idée de garder mon image VM sur quelque chose comme Dropbox afin que je puisse facilement y accéder à tout moment dont j'ai besoin. Étant donné que des services comme Dropbox comparent peu à peu ce qui est stocké, il semblait logique que seuls les bits que j'ai modifiés soient synchronisés. Cependant, cela s'est avéré ne pas être le cas car je pense que cela a à voir avec les internes de la façon dont le fichier image est enregistré, et j'attendrais toute la journée / nuit juste pour que ma machine virtuelle se synchronise.
REMARQUES:
Plus l'espace disque alloué à la machine virtuelle est grand, plus l'image deviendra grande, gardez cela à l'esprit lors de la distribution de l'image à vos développeurs. Le chargement frontal de vos fichiers de projet par projet peut être exagéré et je laisserais cela à chaque développeur à configurer après avoir créé l'image.
Ashley Schroder a un article connexe un peu ancien qui est une bonne lecture, ainsi que certains des commentaires de Fooman et Colin
J'espère que cela vous aidera à mieux comprendre votre problème répertorié, # 6.