Virtualisierte Entwicklungsumgebungen in Unternehmensnetzwerken

11

Wir versuchen, eine Entwicklungsumgebung mithilfe von Virtualisierung für ein kleines Team von 4 Entwicklern innerhalb einer Unternehmensorganisation zu implementieren. Dies würde es uns ermöglichen, separate Entwicklungs-, Test- und Staging-Umgebungen einzurichten und den Zugriff auf neue Betriebssysteme zu ermöglichen, die Anforderungen an Systeme oder Tools sind, die wir evaluieren. Wir haben einen vorhandenen Computer der Workstation-Klasse neu konzipiert, 24 GB RAM und RAID-10 eingebaut und es ging uns gut, bis wir versuchten, den Computer zur Domäne hinzuzufügen.

Jetzt beginnen wir den Krieg, den alle Unternehmensentwickler seit jeher führen mussten - den Kampf um die lokale Kontrolle einer Entwicklungs- und Testumgebung. Die Netzwerk- und IT-Administratoren haben Bedenken geäußert, die von "ESX Server ist der Unternehmensstandard" über "Server sind in Client-VLANs nicht zulässig" bis zu "[Fill-in-the-Blank] sind keine Fähigkeiten, die derzeit auf lokaler Ebene vorhanden sind oder Unternehmens-IT-Organisation ".

Wir könnten Hardware der Produktionsklasse und formellen IT-Support rechtfertigen, wenn wir müssten, aber es würde Zeit brauchen und eine Menge Kopfschmerzen mit sich bringen. Selbst dann könnte es Monate dauern, bis IT-Ressourcen offiziell zugewiesen werden, indem dies als Produktionssystem behandelt wird - und selbst wenn wir dies tun würden, würden wir wahrscheinlich die lokale Kontrolle verlieren, die wir benötigen.

Ich stelle mir vor, dass viele von Ihnen ähnliche Probleme mit der Entwicklersteuerung von Nichtproduktionsumgebungen hatten - und insbesondere mit der Virtualisierung -, daher lauten meine Fragen wie folgt:

  1. Welche Strategien und Argumente haben Ihnen dabei geholfen, die Mitarbeiter der Infrastruktur (IT & Netzwerk) für sich zu gewinnen, damit diese Arten von Silos in Unternehmen existieren können, die über Standard-Netzwerk- und Sicherheitsrichtlinien verfügen, die diese Art von Nicht- (und verständlicherweise) generell ausschließen würden zentral) verwaltete Infrastruktur?
  2. Haben Sie festgestellt, dass dies eine Frage der technischen Rechtfertigung ist - oder eher ein politischer Kampf um Kontrolle und Eigenverantwortung?
  3. Wenn Sie eine IT-verwaltete Entwicklungsumgebung hatten, wie groß war die Blockade für die tägliche Entwicklung und das Testen?
  4. Hat jemand seine Entwicklungsumgebung in ein nicht verbundenes VLAN oder ein völlig separates Netzwerk verschoben, um diese Netzwerkzugriffsprobleme zu vermeiden?

Dies ist auch kein heiliger Krieg zwischen Hyper-V und ESX (wir wären auch damit einverstanden - aber Hyper-V wurde ausgewählt, da es mit MSDN für diese Zwecke "kostenlos" ist [ja, VMWare hat auch kostenlose Tools - aber das Gute Management-Tools sind im Allgemeinen nicht] und würden von den lokalen Entwicklern in einem "Microsoft Shop" einfacher zu verwalten sein. Argumente für oder gegen beide sind daher nicht Gegenstand dieser Frage.

Dies ist auch weniger eine Virtualisierung als eine physische Hardware - ich nehme an, dass die gleiche Frage ohne die Virtualisierungskomponente zur Gleichung gestellt werden könnte.

Nehmen Sie außerdem an, dass das Entwicklerteam bereits zugesichert hat, entweder Patch-Management und Antivirus zu verwalten oder in die vorhandenen Unternehmenssysteme zu integrieren, wenn diese dies unterstützen. Dieses Szenario mit verschiedenen Fragen wird auch auf SF veröffentlicht, um hoffentlich den gegnerischen Standpunkt zu ermitteln.

ScottBai
quelle
Warum versuchen Sie, die Entwicklermaschinen zu virtualisieren? Welches Problem versuchen Sie zu lösen? Ihre Entwickler, Netzwerk- und IT-Administratoren werden Sie dies trotzdem fragen, sodass Sie die Bohnen hier genauso gut verschütten können.
Robert Harvey
2
OK, um klar zu sein: Wir möchten die Möglichkeit haben, separate On-Demand-Entwicklungs-, Test- und Produktionsumgebungen zu haben. automatisierte Unit-Tests / CI; Zugriff auf Betriebssysteme und / oder Tools, die derzeit nicht in unserer Produktionsumgebung ausgeführt werden, aber Anforderungen an Systeme oder Tools sind, die wir evaluieren; Ehrlich gesagt dachte ich, dass die Vorteile von Entwicklern, die Umgebungen zum Testen und Bereitstellen bereitgestellt haben, sowie die Verwendung von Virtualisierung im Allgemeinen akzeptiert und etabliert wurden. Zugegeben, die lokale Administratorsteuerung ist nicht für alle erforderlich, aber für einige.
ScottBai
1
Sie machen einen gültigen Punkt in Bezug auf die Angabe meines Falls (Vorteile) - aber das war tatsächlich Teil der Frage. Die aktuelle Entwicklungsumgebung besteht aus den Entwicklerarbeitsstationen, die mit der Bereitstellung auf einem Produktionsserver verbunden sind, für den die Entwickler eingeschränkte Rechte haben (denken Sie an Dateikopie + DBO für einzelne SQL-Datenbanken). Offensichtlich ist dies nicht optimal (ich bin neu dort, aber jeder wusste bereits, dass dies ein großes Problem ist). Das ist ansonsten eine gute Frage, da der Virtualisierungsteil wirklich kein wesentlicher Differenzierungsfaktor ist, als wenn vorhandene physische Maschinen diese Rolle spielen würden.
ScottBai

Antworten:

7

Sie haben die Reservierung "verlassen" und versuchen, dies zu rechtfertigen.

Hier geht es nicht um Virtualisierung. Es geht um Kontrolle und Verantwortung. Die IT-Abteilung ist verantwortlich für die Sicherheit und Zuverlässigkeit der Systeme des Unternehmens. Um sicherzustellen, dass sie funktionieren, behält die IT sie unter ihrer eigenen Kontrolle. Sie haben ein System erstellt, das nicht unter der Kontrolle der IT steht, und es wird jetzt zu einem Problem.

Die üblichen Gründe, warum Programmierer meiner Erfahrung nach ihre eigenen Systeme wollen, sind:

  • Die IT reagiert nicht. Es dauert Wochen, um eine neue Umgebung zu erhalten, aber Sie brauchen jetzt eine.
  • Du brauchst Kontrolle; Sie werden es dir nicht geben. Sie müssen in der Lage sein, Berechtigungen festzulegen, Komponenten zu installieren usw. Die IT lässt Sie nicht zu.

Wenn Sie in die Produktion gehen, benötigen Sie letztendlich ein IT-verwaltetes System, das vollständig gesperrt ist. Aber während Sie sich entwickeln, brauchen Sie Flexibilität. Einige Vorschläge:

  • Freundschaft schließen. Lernen Sie einige Leute in der IT kennen. Sprich mit ihnen von Angesicht zu Angesicht. Erklären Sie Ihre Situation und fragen Sie sie, was getan werden kann. Möglicherweise können Sie Administratorrechte für einen Entwicklungsserver erhalten, indem Sie einfach danach fragen.
  • Führen Sie Local aus. Wenn Sie Teile der Anwendung auf Ihren lokalen Computern ausführen können, benötigen Sie möglicherweise keinen Server, oder Sie können mit einer gesperrten DB-Instanz davonkommen.
  • Holen Sie sich einen Sponsor. Nichts bringt die IT in Bewegung wie ein VP, der hereinkommt und sagt: "Warum blockieren Sie mein Projekt?" Verwenden Sie die Schlagkraft Ihres Projektsponsors.
  • In die Cloud! Wenn Ihr Projektbudget es abdeckt, hosten Sie einfach auf EC2 - Sie umgehen Ihre gesamte IT-Abteilung. Die Risiken werden gehackt und ausgelöst, wenn Unternehmensinformationen außerhalb der Firewall gespeichert werden.
  • Führen Sie das lange Spiel aus. Stellen Sie frühzeitig die Anforderungen für ordnungsgemäß autorisierte und verwaltete Server. Wenn Sie Beschwerden über Ihr Homebrew erhalten, sagen Sie, dass Sie immer noch auf den offiziellen Servern warten.
  • Vorbelegung. Fordern Sie Server an, die Sie möglicherweise in Zukunft benötigen. Verwenden Sie sie dann erneut, wenn Sie tatsächliche Bedürfnisse haben.
Sean McMillan
quelle
Sehr gültige Punkte. +1 für den Sponsorentipp, es funktioniert meistens wie ein Zauber!
Saul Delgado
Dies ist eine großartige Antwort - nicht die, die ich unbedingt hören wollte, aber ich denke, Sie haben den Nagel auf den Kopf getroffen. Mir ist jetzt klar, dass dies eine Frage der Entwickler ist, die ein legitimes Bedürfnis nach einer Entwicklungsumgebung haben - aber die Wahrnehmung haben, dass die IT nicht reagiert und daher nicht versucht, mit ihnen zusammenzuarbeiten, um unsere Bedürfnisse zu erfüllen. So gerne ich mit Hardware spiele, möchte ich lieber eine IT-verwaltete Umgebung mit einer Entwicklungsumgebung (volle Rechte), einer Testumgebung (nur Bereitstellungsrechte), Staging (keine Rechte) und Produktion (keine Rechte) erhalten ) und müssen nicht die gesamte Infrastruktur verwalten.
ScottBai
2

So sehr ich in solchen Situationen ein Amateur bin, scheint ein angemessenes und gut konstruiertes Argument erforderlich zu sein, um den Abteilungsleitern die Notwendigkeit der zusätzlichen Kosten (und der Ausdehnung) der IT-Ressourcen zu rechtfertigen. Sie möchten wahrscheinlich einen guten Redner, der in der Lage ist, die Themen zu vermitteln und den potenziellen Wert des Vorschlags mit denen in Verbindung zu bringen, die dafür bezahlen.

Das Problem ist tatsächlich eines, das eine echte Überlegung verdient: Eine Gruppe möchte die Entwicklungsumgebung, aber das setzt die andere Gruppe unter Druck, die sich verantwortlich fühlt, tatsächlich für die Sicherheit des Gesamtsystems verantwortlich ist, insbesondere die Vernetzung ist etwas, das von der IT gerechtfertigt ist wertvoll über.

Es fällt mir auf, dass die Möglichkeit, bestimmte Ressourcen für ein prospektiv lukratives Projekt oder sogar nur eine freie Umgebung für Entwickler außerhalb des Standorts zu platzieren, jetzt durch eine Marktrationalisierung für Virtualisierung als Kostensenkungs- und Ressourcenkontrollmaßnahme ersetzt wurde.

Versteh mich jetzt nicht falsch, ich bin nicht gegen Virtualisierung, weit davon entfernt. Mir fällt jedoch ein, dass es oft sehr gute und erklärbare Gründe gibt, um einer Entwicklungsgruppe den Anspruch auf einen separaten Bereich zu ermöglichen, der in einer Umgebung produktiver und potenziell sicherer wäre, als nur alles zu virtualisieren.

Sicher, ein Unternehmen kann Geld sparen, indem es die Cloud für reguläre Abteilungsaufgaben verwendet. Dort ist es sehr nützlich. (Es ist eine Form der Virtualisierung, aber anders, ich weiß)

Angenommen, ein Entwickler gibt einen nicht identifizierbaren Fehler aus, der nicht behoben werden kann, da die Frage besteht, ob die Anwendung / das Programm aufgrund einer Virtualisierungsimplementierung fehlerhaft ist (dh dass sie in einem eigenständigen Computer nicht auftreten würde) wird kontraproduktiv, um Zeit damit zu verschwenden, den Fehler aufzuspüren, der nicht in der Programmierung, sondern in der VM-Implementierung enthalten ist.

Ich hoffe ich bin klar. Ich habe keine Antwort auf Ihren speziellen Fall, aber ich denke, dies sind hoffentlich nützliche Überlegungen in Bezug auf das Problem, und ich würde dringend empfehlen, solche Fragen offen und vollständig mit beiden beteiligten Abteilungen und möglicherweise einem Vertreter der zu erörtern Unternehmensführung, die sich letztendlich für den Einkauf einsetzen müsste. Daher mein Vorschlag eines guten Redners oder Vermittlers!

Vermutlich, wenn mehr Mitarbeiter erforderlich sind, könnte dies eine positive Sache sein (es gibt viele Arbeitslose da draußen), aber es gibt möglicherweise genug IT-Smarts im Entwicklerbereich, um eine Rolle wie Serveradministrator für die eigene Gruppe selbst hinzuzufügen?

Ich weiß, dass es eigentlich ziemlich wichtig ist, deshalb möchte ich nicht leichtfertig sein, aber es gibt Zeiten, in denen ich denke, dass die Konsolidierung und Hinzufügung von Rollen zu bestehenden Arbeitnehmern ihre persönliche Zeit viel zu stark belastet, was sie häufig ärgern vor allem, wenn sie Teil eines radikal neuen und erfolgreichen Software-Engineerings sein könnten.

Ich beneide Sie nicht um Ihr Problem, aber ich beneide den Arbeitsplatz, der sich voll und ganz mit neuen Designs, neuer Software und neuen Ideen beschäftigt. Ich wünsche Ihnen von Herzen viel Glück und hoffe, dass meine Beiträge hilfreich sind.

Mihaly

MihalyK1a
quelle
1

Die IT-Abteilung hat tatsächlich einen Punkt.

Sie verwalten wahrscheinlich Tausende von Anwendungen auf Hunderten von Systemen. Die einzige Möglichkeit, dies effektiv zu tun, besteht darin, einige ausgewählte Standard-Software-Stacks auf noch weniger Standard-Hardwarekonfigurationen auszuführen.

Wenn Sie dieser Route folgen, treten immer mehr Probleme auf, wenn Sie sich der Produktion nähern. Im schlimmsten Fall müssen Sie die gesamte Anwendung neu faktorisieren, damit sie Tage vor dem Start in einer Standardproduktionsumgebung ausgeführt werden kann.

Arbeiten Sie besser mit der IT-Gruppe zusammen und bitten Sie sie, einige Standardtestumgebungen für Sie zu konfigurieren. Dafür werden sie bezahlt. - Ironischerweise werden sie wahrscheinlich eine virtuelle Maschine für jede Umgebung einrichten.

Programmierer sollten programmieren, die IT-Infrastruktur-Mitarbeiter die Infrastruktur bereitstellen lassen und die Netzwerk-Mitarbeiter die Netzwerke konfigurieren - so arbeiten Unternehmen!

Auch wenn Ihre Anwendung nicht dem Standard entspricht und die IT nicht in Betracht zieht, eine Testumgebung zu erstellen, haben Sie keine Chance, sie in die Produktion zu bringen. Sprechen Sie mit Ihren Unternehmensarchitekten, um herauszufinden, welche Umgebungen Standard sind, und versuchen Sie, sie zu verwenden. Wenn Sie Ihre Anwendung mit der Standardsoftware / -hardware wirklich nicht implementieren können, müssen Sie eine formelle Anfrage für die Unternehmensarchitektur stellen, um Ihre Infrastruktur als Ausnahmefall zu genehmigen.

James Anderson
quelle
0

Sie müssen sich beim Management dafür einsetzen, dass:

  1. Die virtualisierte Umgebung erfüllt eine oder mehrere der speziell festgelegten Anforderungen des Unternehmens (z. B. die Flexibilität, mehrere Plattformen zu unterstützen)

  2. Sie können es schneller und kostengünstiger als die IT implementieren

  3. Durch die Kontrolle vor Ort werden die Kosten gesenkt und die Markteinführungsverzögerungen verringert

  4. Sie können die Sicherheits- und Wartungsbedenken der IT erfüllen

  5. Die Produktivität des Programmierers wird nicht beeinträchtigt.

Der letzte ist ein großes Wenn.   Ich habe dieses Problem mit einer Reihe von Leuten besprochen, die sich auf diese Art der Virtualisierung spezialisiert haben. Sie sagen mir, dass es keine Hardware-Kosteneinsparungen geben wird, wenn Sie genug Hardware darauf werfen, um so reaktionsschnell wie ein lokaler PC zu sein.

Ihre nachgewiesenen Kosteneinsparungen müssen also in Form von Flexibilität bei der Konfiguration und der Möglichkeit erfolgen, diese Konfigurationen jederzeit zu ändern.

Robert Harvey
quelle
Vielen Dank für Ihr Interesse und Ihre Antwort - aber ich bin nicht sicher, ob Sie das Q oder unsere Absicht verstehen. Sie argumentieren gegen die Virtualisierung - aber das ist nicht die Frage. Auch eine gute Antwort, wenn das Q war, wie man den Leuten, die die Rechnungen bezahlen, rechtfertigt, warum dies eine gute Idee ist - aber meine Frage ist keine; Auf diese Weise können Sie organisationsübergreifende Abteilungen, die weder Ihre Rechnungen bezahlen noch sich speziell um das Produktivitätsniveau Ihrer Abteilung kümmern, dazu bringen, eine Ausnahme vom normalen Geschäftsverlauf zuzulassen. Oder sagen Sie, dass es nur darum geht, es zu rechtfertigen und alles in Ordnung ist?
ScottBai