Wenn Sie Snapshots Ihrer Entwicklungsumgebung erstellen (und sie sichern), kann es sehr einfach sein, die Produktivität wiederherzustellen, wenn Ihr Computer ausfällt. Wenn Ihr Computer kurz vor der Veröffentlichung ausfällt - und Sie können sofort mit allen Ihren installierten und konfigurierten Tools fortfahren, kann dies ein Lebensretter sein.
Was sind die wichtigsten Anwendungsfälle für die Verwendung von Virtualisierung - dh die Ausführung eines oder mehrerer "virtueller PCs" mit Software wie VMWare und Microsoft Virtual PC - für die Softwareentwicklung?
Auch - gibt es andere Instanzen / Anwendungen der Virtualisierung, die nicht von meiner obigen Definition abgedeckt sind (Verwendung eines Tools wie MS Virtual PC oder VMWare), und die für Entwickler nützlich sind?
Mein Anstoß zum Fragen ist dieser StackOverflow-Kommentar von Metro Smurf behauptet "Du wirst dich wundern, wie du jemals ohne es entwickelt hast!", in Bezug auf die Verwendung von Virtualisierung.
(Bitte fügen Sie nur einen Anwendungsfall pro Antwort hinzu. Danke!)
Der einfachste Fall, der für meine aktuelle Situation zutrifft, ist, dass wir eine komplexe Client-Server-Umgebung haben und jeder Entwickler mit Hilfe der Virtualisierung sehr schnell einen Basissatz von Betriebssystemen erhalten kann, um ihre lokalen Builds zu implementieren und die End-to-End-Funktionalität zu verifizieren.
Vor Ort haben Sie Ihre Dev-Box und N-Client-Boxen, die jedes Mal neu initialisiert werden, wenn Sie einen Build versuchen wollen. Im Wesentlichen entspricht dies der Testumgebung, die einer "Bereinigung" entspricht, bei der sogar die Client-Arbeitsstation durch ein neues Betriebssystem ersetzt wird.
Wenn Ihr Build-Server in einer VM ausgeführt wird, können Sie Snapshots für jede Softwareversion erstellen, um 100% sicher zu sein, dass Sie die Build-Umgebung neu erstellen können (falls Sie Patches für alte Versionen erstellen möchten) zum Beispiel).
Die schnelle Verteilung von Umgebungen zwischen Teammitgliedern ist ein sehr nützlicher Anwendungsfall für die Virtualisierung, insbesondere wenn Sie viele verschiedene Komponenten, Tools usw. haben. Dies kann Ihnen bei neuen Mitarbeitern, Auftragnehmern oder anderen Personen eine Menge Zeit sparen die schnell eine Umgebung brauchen.
Das Testen von Anwendungen in mehreren Umgebungen ist ein offensichtlicher Nutzen der mir bekannten Virtualisierung. Testen Sie Ihre Anwendung auf anderen Betriebssystemen (ohne dafür zusätzliche physische Computer zu benötigen) und testen Sie Software, mit der Sie in der Regel nur eine einzige Version auf einem bestimmten Computer installieren können (z. B. Internet Explorer, IE6) und IE7 auf der gleichen Maschine ist keine offiziell unterstützte Konfiguration), sind gute Kandidaten für die Verwendung virtueller Maschinen.
Viele Präsentatoren verwenden eine VM für Präsentationen - sie können sofort zurückkehren, um die Präsentation für den nächsten Tag zurückzusetzen, alle Präsentationsmaterialien schnell zwischen den Computern übertragen und Ihren Teilnehmern nicht den unordentlichen Ordner Eigene Dokumente zeigen.
>Die Verwendung von Virtualisierung für Verkaufsaktivitäten ist ebenfalls ein großartiger Anwendungsfall. Sie können zu einem bestimmten Zeitpunkt einen Snapshot erstellen, den Sie als Demo-Baseline speichern können. Wenn Sie dann die Demonstration durchlaufen und die Daten usw. geändert haben, können Sie die vorherige Baseline für zukünftige Demonstrationen wiederherstellen. Sie können auch mehrere Grundlinien erfassen und auswählen, welche Grundlinie für die bevorstehende Demo am besten geeignet ist.
Gründe, warum ich virtuelle Maschinen für die Entwicklung verwende.
Momentan verwende ich VirtualBox für meine VM-Einrichtung. Früher habe ich VirtualPC benutzt, aber ich hasste es wirklich, keine "Snapshot" -Funktion zu haben (wie VMware und VirtualBox).
Testumgebungen Wenn Sie mehr als ein Setup haben, auf das ein System ausgerichtet sein muss (z. B. Windows und Linux, XP und Vista), dann ist eine Maschine mit viel RAM und VMWare (oder einer der anderen) eine gute Möglichkeit, das System zu verwalten Umgebungen.
Eine andere entwickelt sich auf einem System und zielt auf ein anderes ab. Zum Beispiel habe ich irgendwann auf einer Workstation mit Linux, auf der der Client IE war, J2EE-Arbeiten ausgeführt. 5.5. Eine VM mit Windows 2000 und IE 5.5 würde mir erlauben, die Anwendung zu testen.
Die Möglichkeit, Ihren Bereitstellungsprozess zu testen / erneut zu testen, ist eine enorme Ersparnis.
Wir entwickeln Software für die Verwendung in unserer SaaS-Anwendung, unsere Produktionsumgebung hat eine große Anzahl von Servern und ihre Softwareumgebung muss absolut vorhersehbar sein; wir können ALLES nicht extra installiert haben, oder von unseren Entwicklungsmaschinen abwesend.
Außerdem benötigt unsere Anwendung eine Reihe verschiedener Servertypen, um richtig zu funktionieren (mindestens 7 Mal, als ich gezählt habe); meist können sie nicht auf derselben (virtuellen) Maschine installiert werden - zumindest nicht ohne die Anforderung "gleiche Software als Produktion" zu verletzen.
Um eine konsistente Umgebung zu erhalten, müssen VMs verwendet werden. Ich weiß nicht, wie jemand ohne sie auskommt.
Snapshots und Rollbacks sind auch nett, aber ich benutze sie nur gelegentlich (wirklich nützlich während der Installation / Upgrade-Tests).
Angenommen, Sie entwickeln eine neue Version Ihrer Software und überprüfen, ob das Upgrade von der vorherigen Version korrekt funktioniert ... Wie lange dauert es, einen Testzyklus durchzuführen, ohne die Box zurücksetzen zu können? Müssen Sie das Betriebssystem neu installieren, dann die alte Version? Können Sie garantieren, dass die Deinstallation wirklich alles deinstalliert?
Meine Hauptarbeitsmaschine hat Office 2007. Wenn ich mit Add-Ins für Office 2003 arbeite, verwende ich eine virtuelle Maschine mit Visual Studio und Office 2003.
Einige Serveranwendungen können auch VMs verwenden. Wenn eine VM nicht häufig verwendet wird, kann der Server die Ressourcen für andere VMs finden.
Ich bin überrascht, dass niemand den Vorteil erhöhter Sicherheit erwähnt hat, indem beispielsweise der Datenbankserver und der Webserver in verschiedenen VMs isoliert wurden.
Ich bin überrascht, dass niemand die VMware Record / Replay Funktion erwähnt hat ( tolle Video-Demo ), die sich hervorragend zum Debuggen eignet.
Ich habe einen headless Server, auf dem ESXi ausgeführt wird, auf dem verschiedene Maschinen zum Erstellen von Installationsprogrammen ausgeführt werden (so muss ich nicht auf meinen Desktop verzichten), automatisiertes Testen (Server ist schneller als jeder Desktop) und verschiedene Testumgebungen (ungefähr 20 verschiedene Konfigurationen), so dass das Support-Team leicht auf eine Konfiguration springen kann, die einem Kundensystem sehr nahe kommt.
Wenn Sie einen wirklich bulligen Server haben, auf dem VMs ausgeführt werden, die von Support-, Test- und Entwicklerteams gemeinsam genutzt werden können, führen Sie enorme Kosteneinsparungen ein. Alles in allem laufen ~ 25 VMs auf ESXi (Dual-Quad Core Xeon 2.5G + 8Gb RAM), die von 5-10 Leuten geteilt werden, einige der Entwickler benutzen Virtual PC und dann benutze ich VMware Workstation auf meinem Desktop. Alle Mac-Benutzer verwenden auch VMware Fusion
Eine Art Testumgebung: Wenn Sie Malware debuggen (entweder schreiben oder eine Pille dagegen entwickeln), ist es nicht klug, das echte Betriebssystem zu verwenden. Der einzige mögliche Nachteil besteht darin, dass die Viren erkennen können, dass sie in der Virtualisierung ausgeführt werden. :( Eine der Möglichkeiten, dies zu tun ist, weil die VM-Engines eine begrenzte Menge von Hardware emulieren können.