Ich werde als Entwicklungsleiter für ein Startup arbeiten und ich habe vorgeschlagen, dass wir VMs für die Entwicklung verwenden. Ich spreche nicht von jedem Entwickler, der einen Desktop mit VMs zum Testen / Entwickeln hat, sondern von einem Server-Rack, in dem alle VMs verwaltet werden und die Entwickler von einem MicroPC (ChromeOS?) Vor Ort oder sogar von zu Hause aus arbeiten Computer.
Die Vorteile liegen für mich in der Tatsache, dass es extrem skalierbar, langfristig günstiger, einfacher zu verwalten ist und dass wir das maximale Potenzial der Hardware ausschöpfen. Was die Nachteile angeht, kann ich mir keine besonderen Showstopper vorstellen, außer dass wir jemanden brauchen, der das Setup einrichtet / wartet.
Ich hatte gehofft, dass einige von Ihnen möglicherweise eine ähnliche Einstellung an Ihrem Arbeitsplatz haben und sich mit Ihren Meinungen abfinden könnten. Vielen Dank.
Antworten:
Was möchten Sie als Bruchteil des Entwicklungsbudgets einsparen? Mir scheint, Sie machen sich Sorgen um ein Epsilon. Die Maschinenkosten für Entwickler betragen weniger als 5% der Gesamtkosten für die Mitarbeiterbindung eines Entwicklers. Daher ist die einzig wichtige Frage: "Spart es Entwicklern Zeit?" Dies könnte der Fall sein, wenn sie keine Zeit damit verbringen müssen, Entwicklungssoftware zu installieren und zu aktualisieren. Oder es kann Zeit kosten, wenn das Netzwerk ausfällt oder der Server ausfällt oder höchstwahrscheinlich, wenn die Reaktionsfähigkeit über das Netz am wenigsten fehlt. Die moderne Entwicklung hängt von der Interaktion per Tastendruck mit einer IDE oder zumindest einem sehr intelligenten Editor ab. Die Verzögerung dieser Interaktion um einige zehn Millisekunden zerstört die Entwicklerproduktivität. Entwickler müssen sich auch mit dieser neuen Arbeitsweise auseinandersetzen.
Dies sind keine Einwände gegen VMs, sondern potenzielle Einwände gegen die Remote-Entwicklung.
quelle
Ich denke, Sie sind Penny-weise und Pfund-dumm.
Erstens sind die Maschinenkosten im Vergleich zu den Kosten eines Entwicklers trivial . Sie sollten die Produktivität maximieren und nicht die Maschinenkosten minimieren.
Zweitens ist die Latenz (nicht die Bandbreite) der Schlüssel für viele Programmieraufgaben - insbesondere für die Textbearbeitung. Für jeden Dollar / Pfund / Euro, den Sie für Ihre Entwickler auf Computern einsparen, geben Sie mindestens zehn Euro für Netzwerk-Upgrades aus, um selbst einen Anschein von Produktivität zu erhalten sie mit Pentium III's haben Sie irgendwo in einem Müllcontainer gefunden.
Ich denke auch, dass es von großem Vorteil ist, wenn Ihre Entwickler eine Umgebung verwenden, die der vom Endbenutzer erwarteten Umgebung zumindest einigermaßen nahe kommt. Unabhängig von den offiziellen Leistungszielen in einer Spezifikation und dergleichen basieren die meisten Programmierer ziemlich stark darauf, wie sich der Code "anfühlt", wenn sie ihn testen. Wenn sie eine völlig andere Umgebung als die Endbenutzer verwenden, verschwenden sie wahrscheinlich Zeit mit Kleinigkeiten und übersehen gleichzeitig wichtige Probleme.
So attraktiv eine homogene Umgebung aus Sicht des Supports klingt und so sollten Sie im Allgemeinen so viel Abwechslung in den Maschinen der Entwickler wie möglich fördern. Entwickler benötigen ohnehin selten viel Unterstützung. Wenn Sie sofort wissen, wann Code mit einem anderen Grafikchip, einer anderen CPU, einem anderen Netzwerkadapter usw. versagen wird, zahlt sich dies mehr als nur für eine minimale Investition aus.
Fazit: Wenn Sie das Schreiben von Code, der (zumindest in erster Linie) bestimmt ist werden verwendet in einer virtualisierten Serverumgebung, die Sie gerade über Notwendigkeit, dass für Ihre Entwickler. Wenn Sie es trotzdem zum Testen machen, kann es (aber nicht unbedingt) auch für die Entwicklung Sinn machen. Ebenso ist ein stark über speced wenn Sie brauchen (oder zumindest haben) Server und Netzwerk wie auch immer, es könnte sinnvoll nutzen , dass zu nehmen , indem Sie , was Sie bereits zur Verfügung haben.
Unter den meisten typischen Umständen scheint es mir jedoch wahrscheinlich, dass dies mehr Probleme mit sich bringt, als es löst.
quelle
Das war eine meiner Ideen in der Vergangenheit: einen Hochleistungsserver mit der erforderlichen Software und eine Reihe von leistungsschwachen Desktop-PCs, die nur zum Herstellen einer Verbindung zum Server über Remote Desktop verwendet werden.
Die Vorteile wären:
Nun, da gibt es einige ernsthafte Probleme, die mich denken lassen, dass ich das Ding in den nächsten Jahren nie mehr so benutzen werde.
Spezifität von Remote-Lösungen. Wie wäre es, wenn Sie fern arbeiten und mehrere Computerbildschirme gleichzeitig verwenden? Ich meine, ist es einfach? Ist es offensichtlich? Sind Verknüpfungen, die ich täglich verwende, aktiviert, wenn ich auf Distanz arbeite? Ich bin mir nicht sicher. Was passiert, wenn ich Strg + Umschalt + Esc drücke, um die Liste der aktuell ausgeführten Programme anzuzeigen? Oh ja, es funktioniert nicht, also muss ich mich jetzt daran erinnern, es anders gemacht zu haben.
Performance-Hit. Ich bin mir nicht sicher, ob es überhaupt keine Leistungseinbußen geben wird. Und denken Sie daran, ein Programmierer, der einen langsamen Computer verwendet, ist ein unglücklicher Programmierer. Und das Unternehmen, das seine Programmierer mit beschissenen Bedingungen unzufrieden macht, wird niemals qualitativ hochwertige Software produzieren.
Höhere Auswirkung einer Katastrophe. Hosten Sie die Lösung auf einem redundanten Server? Haben Sie ein redundantes Netzwerk in Ihrem Unternehmen? Angenommen, der Router fällt aus und ist nicht redundant. Dies bedeutet, dass alle Entwickler jetzt nicht mehr arbeiten können. Überhaupt. Weil dort keine Software lokal installiert ist. Weil sie nicht einmal Quellcode haben: Er befindet sich auf dem Server. Also hört jeder auf und du bezahlst all diese Leute pro Stunde, nur um darauf zu warten, dass der Router ersetzt wird.
Hardwarekosten. Wenn es sich um einen Einzelserver handelt, wie viel kostet er? Wenn Sie beispielsweise 20 Entwickler haben, reichen dann 64 GB RAM auf dem Server aus? Nicht so sicher. Wäre eine Quad-Core-Lösung mit zwei CPUs ausreichend? Wieder habe ich einige Zweifel. Ansonsten, woran denkst du? Eine Art Wolke? Oder haben Sie eine skalierbare Lösung, die auf mehreren Servern funktioniert? Sind Sie bereit, die Kosten für Windows Server (wenn Sie Windows verwenden) pro Computer zu bezahlen?
Stromkosten. Wenn Sie vollständig remote arbeiten, bedeutet dies, dass Sie fast die gleiche Menge an serverseitigem Strom verbrauchen, als würden Sie lokal arbeiten, zuzüglich der Menge an Strom, die vom lokalen Computer und dem Netzwerk verschwendet wird.
Lizenzen. Ich bin mir nicht sicher, ob ich es als Vorteil oder Problem bezeichnen muss, aber ich bin der Meinung, dass die Kosten für die Softwarelizenzierung in diesem Fall viel höher sein werden.
Denken Sie auch hier an alle Kosten für Verwaltung, Support, Bereitstellung und Wartung. Bei einer benutzerdefinierten Lösung wie dieser kann es leicht zu großen Problemen kommen, ohne dass jedes Mal, wenn ein Fehler auftritt, jeder Entwickler NOP-Fragen beantwortet und darauf wartet, seine Arbeit fortsetzen zu können.
quelle
Wir verwenden Amazon EC2-Instanzen nach Bedarf als Entwicklermaschinen. Das hat nichts mit Kosten zu tun. Wir haben einen "Pool von Entwicklern", die an mehreren Projekten arbeiten, und wir müssen in der Lage sein, schnell zwischen Projekten zu wechseln.
Im Allgemeinen spart die VM Einrichtungszeit. Längerfristig verschwendet es jedoch Zeit aufgrund von Produktivitätsverlusten. Die Kosten sind keine Achse, da die Entwicklerkosten viel mehr sind als die Maschinenkosten.
Zu den Produktivitätskosten gehören - Zeitaufwand für das Starten eines VM-Images (mehrere Minuten), schlechte Reaktionszeiten und Ressourcen- / Speicherbeschränkungen. Das ist anfangs nicht viel, wird aber mit der Zeit nervig.
In einem unserer Projekte haben wir den Code überarbeitet, um die Ersteinrichtung zu vereinfachen und "Code herunterladen und maven ausführen". Mit dieser Änderung war es für einen neuen Entwickler einfach, an dem Projekt zu arbeiten - und jetzt verwendet niemand mehr das Amazon VM-Image. Wir versuchen dies auch für andere Projekte zu emulieren, aber es wird einige Zeit dauern. Bis dahin haben wir unsere ec2-Bilder.
quelle
Sei hier SEHR vorsichtig. Ich wurde kürzlich bei einem Kunden eingesetzt, bei dem alle Mitarbeiter der IT-Abteilung im Wesentlichen aus dem gleichen Grund über eine virtuelle Maschine verfügten - damit sie PCs mit geringerem Funktionsumfang auf dem Schreibtisch haben und dann eine Remote-Verbindung zur virtuellen Maschine herstellen und ihre normale Arbeit ausführen können.
Die Erfahrung dort war nicht schön. Mindestens einmal pro Woche liefen wir aus verschiedenen Gründen extrem langsam. Im Allgemeinen konnten wir feststellen, wann jemand im Team eine Reihe prozessorintensiver SSIS-Pakete ausführte. Sie haben schließlich einige von uns auf andere Server verlegt, was einigen geholfen hat, aber die Leistung war nie richtig.
Ich denke, wenn Sie es tun werden - tun Sie Ihre gebührende Sorgfalt in Bezug auf die Serverleistung, Ihre Verarbeitungsanforderungen, die Anzahl der Maschinen, die Sie bedienen werden usw. Es könnte Ihnen etwas Geld sparen, aber wenn es nicht richtig implementiert wird, kann es LOTS verursachen von Kopfschmerzen.
Bitte beachten Sie: Dies ist KEINE Flamme der VM-Architektur - nur eine Warnung für Leute, die sich damit befassen - stellen Sie sicher, dass Sie Ihre Enten in einer Reihe haben, bevor Sie sie implementieren.
quelle
Die Entwicklung auf virtuellen Maschinen kann recht gut funktionieren, aber nur, wenn dies richtig gemacht wird:
Ich habe all diese Probleme gesehen und mag es nicht besonders, mit ihnen zu arbeiten. Ich habe jedoch auch ein VM-Setup zu Hause, das ich nach Wahl verwende. Das läuft schneller als eine lokale Installation und ermöglicht beispielsweise separate Umgebungen für verschiedene Projekte und schnelle Neuerstellungen, wenn eine Umgebung instabil wird.
quelle
Ich arbeite mit VMs, empfehle es jedoch nicht für Ihr Hauptprojekt.
Der Grund, warum ich VMs für die Entwicklung verwende, ist, dass ich ältere Projekte (z. B. VB6, .NET 1.1 usw.) unterstützen muss und meinen Hauptcomputer nicht durch die Installation von VS2003 / 2005 / vb6 / usw. verschmutzen möchte ... Es klappt, aber hier und da gibt es zeitweise Probleme.
Außerdem ist die Interaktion langsamer, es dauert eine Weile, bis die VMs gestartet / heruntergefahren werden, sie haben keine nativen UI-Effekte (wie Aero in Win7) usw.
Was auch immer Sie in Bezug auf Geld sparen werden, das Sie verschwenden und mehr durch den Aufwand, den Sie Ihrem Team auferlegen werden. Außerdem, wie hier erwähnt, keine Unterstützung für mehrere Bildschirme. Ich brauche mindestens 3 Bildschirme, um so produktiv wie möglich zu sein.
quelle
Die wichtigste Regel für die Entwicklung ist, Ihre Entwickler bei Laune zu halten. Sie werden feststellen, dass dies mit Remote-VMs so gut wie unmöglich ist. Die Unterstützung mehrerer Monitore ist unzuverlässig, Netzwerkverzögerungen und Ausblendungen sind problematisch und die Kosteneinsparungen sind im Allgemeinen minimal.
Arbeiten Sie sicher an VMs, aber berücksichtigen Sie auch lokale VMs, und machen Sie den physischen Computer auch zu einem lächerlich schnellen Monster.
Ich telecommute 100% und zwischen meinem persönlichen ISP und dem VPN - trotz hoher Zuverlässigkeit - haben sie genug Blips, die mich verrückt machen würden, wenn ich nicht im Offline-Modus arbeiten könnte.
Im Allgemeinen drehe ich einfach eine Vielzahl von VirtualBox-Images hoch und arbeite daraus. Das Kopieren einiger hundert MB über das Kabel ist nicht zu zeitintensiv, wenn Sie auch lokal eine neue benötigen.
quelle
Mein Team hat erfolgreich eine Konfiguration "langsamer PC / schneller VM-Server" implementiert. Für ein Team von 20 Entwicklern hatten wir einen 256 GB RAM-Server mit 8 Prozessoren, der über Glasfaser mit einem sehr schnellen SAN verbunden war. Es war teuer, aber billiger, als jedem Entwickler eine Workstation mit ähnlicher Leistung zur Verfügung zu stellen. Für ein kleines Team (4 Entwickler) bin ich mir nicht sicher, ob die Skaleneffekte greifen und Ihnen tatsächlich etwas ersparen würden.
quelle
VMs für die Entwicklung sind einen Blick wert, aber die finanziellen Kosten sind der falsche Grund.
Dies wurde kurz in Marc Holmes ' Expert .NET Delivery unter Verwendung von NAnt & CruiseControl.net behandelt. Kurz gesagt, das Argument für die Entwicklung auf einer VM ist, dass es jeden Aspekt der Arbeit davon abhält, von der jeweiligen Konfiguration des Entwicklers abhängig zu werden. Sie schalten Ihre VM zu Beginn jedes Projekts in einen Nuklear-Modus um, und wenn Sie nicht tatsächlich ein bestimmtes Tool benötigen, läuft es nicht weiter. Dadurch wird die Wahrscheinlichkeit minimiert, dass Änderungen, die Sie vornehmen, auf einem anderen Computer als Ihrem durchgeführt werden. Entwickler können weinen, wenn ihr Spielzeug weggenommen wird - aber letztendlich ist das Vertrauen in Werkzeuge eine Schwäche und alles, was Sie in einer sauberen Umgebung nicht intuitiv tun können, ist ein Geruch.
Beachten Sie, dass ich den oben vorgebrachten Argumenten nicht unbedingt glaube . Ich verstehe und stimme bis zu einem gewissen Grad mit ihnen überein, aber ich mache sie aus Gründen der Argumentation, um eine Diskussion zu erzeugen.
quelle
Mögliche Nachteile
IME, es ist eine gute Lösung und es funktioniert, aber Sie benötigen eine anständige Hardware auf dem Host und wenn schlimme Dinge passieren, passieren sie allen.
quelle
Damit ist eines der wichtigsten Kriterien des Joel-Tests nicht erfüllt.
Ich stelle sicher, dass alle meine Entwickler mindestens einen i3 oder besseren Laptop oder Desktop mit so viel RAM haben, wie er möglicherweise aufnehmen kann.
8GB ist das, wonach ich strebe.
Dadurch sind sie produktiver und können Virtual Box für Entwicklungs- und Testzwecke auf ihren lokalen Computern ausführen, anstatt dass die Wartung der Server teuer ist. Sie können einen Schnappschuss ihrer Virtual Box erstellen, verrücktes Zeug installieren und verschiedene Browser und Installer und alles testen und in Sekundenschnelle zu einer bekannt guten Konfiguration zurückkehren, ohne die "IT" -Dienste kontaktieren zu müssen.
Entwickler benötigen die schnellsten Computer im Unternehmen mit den meisten RAM- und Root-Berechtigungen auf ihren lokalen Computern. Ende der Geschichte.
quelle
Ich habe bereits an VMs für die Entwicklung gearbeitet, sowohl an lokalen VMs (die auf dem lokalen PC ausgeführt werden) als auch an Remote-VMs. Es war viel angenehmer, mit den Einheimischen zu arbeiten als mit den Fernen.
Bei Remote-VMs, zu denen wir über RDP eine Verbindung hergestellt haben, trat zwischen jedem Tastendruck und jeder Aktion eine geringe Verzögerung auf. Es ist möglich, sich unter solchen Bedingungen für kurze Zeit zu entwickeln, aber Tag für Tag wurde es sehr frustrierend.
Ich habe mich gerne unter einer lokalen VM auf VMWare entwickelt, weil ich Flash Builder auf einem Linux-Computer ausführen musste, und war ziemlich zufrieden damit, solange es über genügend Arbeitsspeicher verfügte - es war ziemlich brauchbar.
quelle
git add
git status
Wir machen das für unsere entfernten Maschinen und es funktioniert ziemlich gut. Die meisten arbeiten nur selten von zu Hause aus (normalerweise nur für Notfälle hier und da), daher verwenden wir nur recht preiswerte Netbooks, die im Büro auf unseren schnellen Desktop-Computern installiert sind. Sie sind definitiv noch langsamer (wahrscheinlich mehr als alles andere durch das Netzwerk begrenzt), arbeiten aber ab und zu für kurze Aufgaben. Dies wäre für ein Vollzeitpferd jedoch nicht akzeptabel, da VM häufig eine Verzögerung verursachen kann, die selbst mit der besten Hardware, IMHO, ein wenig ablenkt.
quelle
Bei meinem letzten Job haben wir genau das gemacht:
Wir verwendeten einen Windows Terminal Server, auf dem jeder Entwickler ein Konto hatte. Die Entwickler hatten immer noch normale PCs (weil sie bereits dort waren), aber auf den PCs wurde nur der RDP-Client ausgeführt.
Wir haben Java-Entwicklung durchgeführt, daher wurde die Software verwendet, die Java-Compiler + IDE (hauptsächlich Eclipse) plus Webbrowser, DB-Abfragetools, Versionskontroll-Client und gelegentlich Office-SW (in unserem Fall OpenOffice.org) enthält.
Wir hatten keine wirklichen Probleme, und die Leistung war recht anständig.
Das einzige wirkliche Problem war, dass Sie wirklich darauf achten müssen, andere in bestimmten Situationen nicht zu stören, da Sie ein System gemeinsam nutzen. Wenn IT-Abläufe große Dateikopien oder Sicherungen auf dem Server ausführen mussten, ging die Leistung für alle zurück. Als wir dies identifizierten und lösten (durch Kopieren mit niedriger Priorität oder über Nacht), lief alles gut.
Die Einschränkung lautet also: Bewerten Sie die Leistung so bald wie möglich und planen Sie Ihre Hardware und deren Verwendung entsprechend.
quelle
TL; DR: Ich habe es bei mehreren Jobs gemacht und jetzt bevorzuge ich es.
Kosten sind der falsche Grund, sich darauf zu konzentrieren. Hier sind einige bessere.
Gründe dafür
Herausforderungen
Die größte Herausforderung ist die Remote-Entwicklung, insbesondere wenn Sie ein Gateway oder einen Jump-Server verwenden müssen. Dies macht es schwierig, insbesondere wenn die Entwickler nicht gut gerundet sind (sie haben einige Kenntnisse in Systemtechnik, Netzwerkkenntnisse usw.).
Es gibt viele Varianten der Remote-Entwicklung, die sich jedoch in der Regel auf zwei Hauptunterschiede beschränken.
Werkzeuge
Es gibt Tools, die bei der Remote-Entwicklung helfen, und es gibt IDEs, die dies ermöglichen. Sie müssen untersuchen, inwieweit eine Remote-Entwicklung möglich ist. Viele müssen auf demselben Server ausgeführt werden, auf dem der Code entwickelt wird. Es gibt jedoch andere Tools.
quelle
Etwas anders: Haben Sie Ihren Managern / Buchhaltern eine Tabelle mit den Kosten für die Verwendung dieser langsamen Maschinen vorgelegt? Weisen Sie sie darauf hin, dass eine VM-Lösung (sofern sie nicht richtig ausgeführt wird und dies nicht einfach ist) die Entwickler und damit das Unternehmen möglicherweise in ein und dasselbe Boot setzen kann.
quelle
Dies hängt davon ab, wie viel Verwaltungsleistung Sie während der VMware-Installation haben. Wenn Sie in einen Subpool mit niedriger Priorität versetzt werden, haben Sie langsame Computer, abhängig von der Aktivität anderer Subpools.
quelle
Hardware ist billig, Programmierer sind teuer.
Warum sollten Ihre Programmierer frustriert sein, wenn Sie ihnen langsame Entwicklungsmaschinen zur Verfügung stellen? Die Kosten für das Upgrade der Hardware verblassen im Vergleich zu den damit verbundenen Leistungsvorteilen.
Fragen Sie nach besseren Maschinen. Zumindest fragen Sie nach 4 GB RAM. Das Hinzufügen eines weiteren 2-GB-Tablets macht sich in weniger als einer Woche bezahlt.
quelle
Der Mangel an Dual-Screen-Unterstützung war schon immer der Deal Killer. Ich kann mir nicht vorstellen, signifikante Entwicklungsarbeit auf einem einzigen Bildschirm zu leisten.
Jetzt rocken sie zum Testen / Deployment / Fiddeln, also denke ich auch nicht, dass sie vom Stapel fallen sollten.
quelle
Wenn Sie einen Mainframe mit 50 SSD-Festplatten in RAID 10 haben und nur 3-4 Computer auf diesem Mainframe verwenden, funktioniert dies möglicherweise.
Ansonsten sind sie verzögert, wirklich verzögert (obwohl in einigen seltenen Fällen Schnappschüsse dies ausgleichen können).
quelle
Ich habe einen anständigen Desktop-Computer im Büro, mit dem ich über VPN eine Verbindung von meinem Laptop aus über die Bildschirmfreigabe herstellen kann.
Es funktioniert bei Support-Vorfällen außerhalb der Geschäftszeiten und gelegentlich bei erzwungener Remote-Arbeit. Dies ist sicherlich besser, als eine vollständig konfigurierte Umgebung auf einem zweiten Computer zu verwalten oder Dinge zu entwickeln, die eine geringe Latenzzeit zum Rechenzentrum über ein WAN erfordern.
Es ist jedoch frustrierend, so lange zu arbeiten. Ich bin gelegentlich für die zweite Hälfte des Tages zur Arbeit gefahren, nachdem alles, was mich zu Hause gehalten hat, aus dem Weg geräumt wurde.
Latenz und Screen Real Estate sind die beiden Killer für mich.
quelle
Ich glaube nicht, dass Sie mit einer Remote-VM-Lösung arbeiten möchten. Die Netzwerkverbindung ist der Engpass, und selbst bei einer schnellen Verbindung kann dies zu Frustrationen führen. Wir wenden uns von dieser Technik ab, um lokale Entwicklungsumgebungen zu verwenden.
Wir entwickeln auf iMacs, was wirklich nett ist, aber unsere Webanwendungen laufen in der Produktion auf einer Linux-Umgebung. Das Problem dabei ist, dass wir möglicherweise auf ein Problem stoßen, das nur unter Linux auftritt und möglicherweise schwer zu beheben ist. Hier kommt die Leistung virtueller Maschinen ins Spiel. Ich mag jedoch nicht einmal die Idee, eine VM 100% der Zeit zu verwenden.
Ich habe kürzlich Vagrant (http://vagrantup.com/docs/getting-started/why.html) und Chef kennengelernt, um die Arbeit mit VirtualBox zu vereinfachen. Vagrant bietet Ihnen die Möglichkeit, eine VM einfach zu starten, wenn Sie sie benötigen, und eine VM herunterzufahren, wenn Sie dies nicht tun. So konnte ich meine gesamte Entwicklung mit meinem Mac durchführen. Wenn ich dann bereit bin, meinen Code zu testen, kann ich eine VM zum Testen starten und sie nur so lange aufbewahren, wie ich sie benötige. Vagrant bietet Ihnen auch die Möglichkeit, auf einfache Weise VMs mit Ihren Mitarbeitern zu teilen, sodass Sie alle sicher sein können, dass Sie in derselben Umgebung arbeiten.
Ich würde empfehlen, Vagrant auszuprobieren, damit Sie zumindest über die verfügbaren Optionen für die Entwicklung von und die Arbeit mit VMs Bescheid wissen.
quelle
Ich habe an einem Legacy-Projekt mit 5 Maschinen gearbeitet, von denen jede eine Rolle in einer Berechnungs-Pipeline spielt (Maschine 1 sendet eine Anfrage an Maschine 2, die wiederum eine Anfrage an Maschine 3 usw. sendet). Die Bereitstellung der Einstellungen auf der virtuellen Maschine hat uns jedoch RIESIGE Zeit gespart: 1. Das System war nicht fehlerfrei, da Entwickler faul waren / keine Zeit hatten, Tests in das Design einzubeziehen. 2. Es wurden zu viele Setups bereitgestellt, und ich musste Zeit aufwenden, um sie in Gruppen anzuordnen.
Jetzt benutze ich es, weil ich zu viele Projekte gleichzeitig bearbeite. Das Hauptproblem, das ich jetzt habe, ist: 1. VMs verbrauchen viel zu viel Zeit für die Wartung. 2. VMs verbrauchen enorm viel Arbeitsspeicher
Dadurch werden VMs schwierig zu verwenden, wenn Sie versuchen, sie zu verwenden, um Ordnung zu haben. Behalten Sie eine Hauptmaschine mit Ihrer E-Mail und Ihrem Text, und entwickeln Sie sie auf dedizierten VMs. Hält Ihr Leben sauber und ordentlich.
quelle
Wie von anderen angegeben, hängt es wirklich davon ab, welches Problem Sie mit den VM-Desktops lösen möchten und welche Vorteile die Lösung dieses Problems mit den Nachteilen für die VM-Umgebung hat.
Wir bewegen uns in Richtung einer hybriden Umgebung, in der alle unsere Onshore-Entwickler über herkömmliche physische Maschinen verfügen, während Offshore-Entwickler (die derzeit mit einem kleinen Outsourcing-Unternehmen zusammenarbeiten) virtuelle Desktops verwenden. Die Probleme, die wir mit den Remote-Desktops lösen möchten, hängen mit der Sicherheit und der Leistung zusammen. Die virtuelle Umgebung wird uns offensichtlich mehr Kontrolle aus der Sicherheitsperspektive bieten, und um die Leistung zu verbessern, werden wir nur "geänderte Pixel" anstatt des vollständigen Quellcodes übertragen und Proxyserver und dergleichen implementieren müssen.
Ich bin mir immer noch nicht sicher, ob dies der richtige Weg ist, aber es ist, wohin wir gehen.
quelle