Czy istnieją powody, aby nie akceptować oprogramowania dostarczanego jako maszyna wirtualna?

40

To pytanie dotyczy logistyki, a nie pytanie techniczne.

Moja firma zleciła prace nad oprogramowaniem wbudowanym. W szczególności zapłaciliśmy kontrahentowi za opracowanie systemu wbudowanego dla nas, ponieważ nie mamy odpowiedniej wiedzy wewnętrznej, aby zrobić to sami (mamy tylko programistów aplikacji komputerowych).

Tak więc kontrahenci zakończyli oprogramowanie i zapytali, czy mogą nam je dostarczyć na maszynie wirtualnej. Maszyna wirtualna to maszyna z systemem Windows 8 zawierająca wstępnie skonfigurowane IDE CodeWarrior z kodem źródłowym jako projekt CodeWarrior. Chodzi o to, że pozwoli nam to dokonać zmian kodu w maszynie wirtualnej, która jest już skonfigurowana do dalszego rozwoju tego projektu.

Czy są wady tego działania, a nie przeprowadzanie ich przez proces konfigurowania własnych maszyn programistycznych w celu wprowadzania zmian w kodzie projektu? Jedynym problemem, jaki mogę przewidzieć, jest to, że maszyna wirtualna działa wolno i odbudowanie projektu zajmuje dużo czasu po wprowadzeniu zmian w kodzie. Ale z drugiej strony podoba mi się pomysł uzyskania wstępnie skonfigurowanego środowiska programistycznego dla systemów wbudowanych, więc nie muszę dodawać kolejnych IDE na komputerze dewelopera aplikacji komputerowych.

Naprawdę nie mogę wymyślić dobrego powodu, aby nie zaakceptować dostawy maszyny wirtualnej, ale po prostu chciałem uruchomić ją przez tę społeczność na wypadek, gdyby czegoś mi brakowało.

CFL_Jeff
źródło
24
Przychodzi mi na myśl licencjonowanie oprogramowania Windows na maszynę wirtualną.
Robert Harvey
6
@RobertHarvey Pełna wersja systemu Windows zawiera prawa licencyjne dla dwóch maszyn wirtualnych. A jeśli posiadasz licencję na Windows Datacenter, możesz uruchomić tyle maszyn wirtualnych, ile serwer może obsługiwać, sprawdź witrynę licencjonowania wirtualizacji, aby uzyskać więcej informacji.
Michael Brown
19
To jeden ze sposobów obejścia „Działa na moim komputerze”. problem.
MichaelHouse
2
Podejrzewam, że kod jest błędny, ale działa tylko na jednej maszynie. Programiści nie wiedzą, co robią i nie mogą odtworzyć konfiguracji, która sprawia, że ​​działa, więc po prostu utworzyli obraz dysku i umieścili go na maszynie wirtualnej.
MGOwen
Czy posiadana licencja obejmuje maszyny wirtualne udzielone przez podmiot zewnętrzny (być może bez prawa do wydawania maszyn wirtualnych z systemem Windows)?
Burhan Ali,

Odpowiedzi:

66

Problem, jaki widzę, polega na tym, że wiedza na temat konfigurowania i konfigurowania maszyny wirtualnej nie jest własna, a jeśli konfiguracja nie jest trywialna, będziesz polegać na drugiej firmie, gdy oprogramowanie będzie musiało zostać skonfigurowane dla różnych wersji system operacyjny / biblioteki / sprzęt / cokolwiek. Zaakceptowanie maszyny wirtualnej jest w porządku, aby szybciej rozpocząć pracę, ale nalegam, aby uzyskać instrukcje dotyczące konfiguracji własnego systemu na potrzeby przyszłej konserwacji.

FrustratedWithFormsDesigner
źródło
9
+1, przerażająca część to problem „złotego obrazu”, który możesz mieć za sześć lat.
Wyatt Barnett
8
Jeśli wykonawca może również dostarczyć przewodnik konfiguracji (który powinien zostać przetestowany), nie miałbym z tym problemu.
Jamie,
2
@Jamie: Ale jeśli przetestujesz przewodnik instalacji, VM nie będzie już potrzebna,
Mattnz
10
Termin ten oznacza procedury „zimnego startu”, co oznacza, że ​​jeśli zacząłeś od zimnej maszyny - co musisz zrobić, aby uzyskać uruchomiony obraz? Niepokoi mnie również fakt, że mogli wprowadzić pewne zmiany w konfiguracji, zainstalować oprogramowanie, które nie zostało udokumentowane, a może nawet zawierać tylne drzwi. Chciałbym wiedzieć wszystko na tym komputerze.
ipaul
Zgadzam się również z tą odpowiedzią. Demonstracja tego, co zostało zrobione, jest w porządku, ale gdybym miał zamiar zaakceptować ten produkt, poprosiłbym o skrypt dokumentu / powłoki, który opisuje / wykonuje konfigurację środowiska.
Tsvetomir Dimitrov
36

Nie widzę w tym ogromnej wady, ale powiedziałbym, że zaakceptowanie maszyny wirtualnej z kodem źródłowym powinno pociągać za sobą taką samą paranoję, jak przyjęcie maszyny z zainstalowanym oprogramowaniem i środowiskiem programistycznym, więc proszę upewnij się, że nie ma nic złego zainstalowanego na maszynie wirtualnej, zanim uruchomisz ją w środowisku, które ma dostęp do twojej sieci wewnętrznej.

Jeśli / kiedy masz maszynę wirtualną uruchomioną, powinieneś mieć możliwość złożenia kodu źródłowego do swoich normalnych repozytoriów kodów, tak jak (prawdopodobnie) zrobiłbyś to z dostarczeniem tylko archiwum kodów źródłowych.

Vatine
źródło
11
Nie jedyna +1, jaką dałem na odpowiedzi na to pytanie, ale jedyna odpowiedź, która wspomina o wprowadzeniu kodu do wewnętrznej kontroli wersji. Mam nadzieję, że VM również zawiera repozytorium, ale nie postawiłbym na to i może mieć tylko wydaną wersję kodu.
Mike Sherrill „Cat Recall”
18

Martwiłbym się, że w komputerze jest coś skonfigurowanego, co jest nieudokumentowane, trudne do odtworzenia lub niedopuszczalne w standardowej konfiguracji.

Ymmv, ale tak naprawdę nie uważam, że rozwój został zakończony, dopóki projekt nie będzie mógł wykazać się zbudowaniem standardowych maszyn deweloperskich i wdrożeniem go na serwerach / klientach towarowych.

Rachunek
źródło
1
+1 po upewnieniu się, że maszyna wirtualna to tylko funkcja wygody. W przeciwnym razie możesz skończyć z czymś, co opiera się tylko na tej maszynie wirtualnej, ponieważ opiera się na jakiejś nieudokumentowanej, poprawionej wersji kompilatora lub linkera lub czymś równie okropnym.
ptyx
10

W kilku moich projektach musiałem ciężko walczyć o dostarczenie oprogramowania w ten sposób. To doskonały format.

Upewnij się, że:

  1. Pobierz kod źródłowy każdej wersji otrzymanej od kontrahenta i połącz go z własnym systemem kontroli źródła
  2. Uzyskaj dokumentację dotyczącą konfiguracji środowiska maszyny wirtualnej i możesz ją odtworzyć we własnym zakresie. Dodaj dokumentację również do kontroli źródła

Dodatkowe korzyści:

  1. Jeśli zarchiwizujesz wydania w formacie VM (zapisz .vhd lub coś w tym stylu), o wiele łatwiej jest je uruchomić kilka lat później, nawet jeśli oryginalny zespół jest rozdrobniony lub nie ma go.
  2. O wiele łatwiej jest uruchamiać różne wersje obok siebie.
  3. W przypadku niektórych integracji VMWare (może to być również możliwe w przypadku HyperV), można je automatycznie zintegrować z kompilacją CI.
  4. Oszczędza czas programisty (na początku), ponieważ konfiguracja środowiska jest niewielka.

Powiedziałbym: idź po to.

Zachary Yates
źródło
Hmm Słuszne uwagi.
MGOwen
1
Czas konfiguracji środowiska jest tani w porównaniu do niskiej wydajności w czasie. Posiadamy maszynę wirtualną taką jak ta, na której produkujemy wersje kompilacji, ale w codziennym użytkowaniu metoda maszyny wirtualnej jest po prostu zbyt powolna i można użyć tylko jednego ekranu (w większości przypadków). Bardziej przypomina śmierć o 1000 cięć niż dobre, czyste ścięcie.
Boatcoder
@ Mark0978 Myślę, że # 4 jest sytuacją YMMV, zajęło nam trzy tygodnie, aby odtworzyć konfigurację środowiska z dokumentacji, ponieważ nie mieliśmy już dostępu do oryginalnej konfiguracji serwera (IIS 6+, kilka bibliotek zewnętrznych / procedur obsługi http) . Chodzi mi o to, że posiadanie działającego przykładu jest przydatne. Większość krytyki, którą usłyszałem, jest zwykle spowodowana tym, że host VM nie jest wystarczająco dobry. Hah - „czyste, czyste ścięcie”.
Zachary Yates
1
Właściwie myślałem o tym jako o karach środowiska programistycznego (które może nie być tym, o co proszono), spowalnianie programisty przez cały czas po prostu nie jest tego warte. Wszystkie nasze serwery produkcyjne działają na maszynach wirtualnych w hostingu, ale wszystkie są serwerami nie graficznymi.
Boatcoder
1
@ Mark0978 Podoba mi się sposób, w jaki pisze ten facet. Wydaje mi się, że nie wyraziłem się jasno, że # 4 jest jasny. Nie zalecam pracy z wolną maszyną wirtualną. Kiedy masz do zrobienia dzień lub dwa, a konfiguracja środowiska zajmuje trzy tygodnie, po prostu użyj vm. Musisz być świadomy całej sytuacji.
Zachary Yates,
6

To naprawdę coś, co powinno być wypracowane w pierwotnej umowie. Mogą już przekraczać granice. Nie spodziewałbym się, że otrzymam instrukcje konfiguracji bez dodatkowych opłat, ponieważ wymaga to więcej pracy z ich strony.

Byłem w podobnej sytuacji jak Twoja wcześniej. Nasze środowisko programistyczne to Windows / Cygwin i przez tydzień mieliśmy wizytę u dostawcy, aby napisać z nami kod interfejsu. Używają przede wszystkim Linuksa, więc ustawiliśmy się z wirtualnymi maszynami Linux na tydzień, w którym byli tutaj. Działało to całkiem dobrze, gdy byli tutaj, a my mieliśmy małe problemy z przeniesieniem się do Cygwin po ich odejściu.

Wydaje mi się, że nie doceniasz własnych umiejętności. Konfiguracja IDE nie jest trudna, nawet bez działającego przykładu do porównania. Byłbym bardziej zaniepokojony naruszaniem umów licencyjnych Windows i CodeWarrior. Jeśli masz odpowiednią licencję, powinieneś być w stanie uzyskać wsparcie od Freescale na wszelkie problemy z konfiguracją.

Karl Bielefeldt
źródło
4

Jak powiedział FrustratedWithFormsDesigner , musisz wiedzieć, jak skonfigurować maszynę dla siebie. Chciałbym jednak dodać, że możesz poprosić ich o dostarczenie skryptu, który konfiguruje maszynę dla ciebie, a nie całej maszyny wirtualnej. Jeśli skrypt jest napisany wystarczająco dobrze, będziesz mieć dokładną aktualną dokumentację dotyczącą konfiguracji komputera (czytając kod źródłowy), a ponadto skrypt zrobi to za Ciebie, oszczędzając czas za każdym razem, gdy potrzebujesz nowa maszyna.

Narzędziem, z którym eksperymentuję, aby ustandaryzować / zautomatyzować konfigurację nowego komputera z systemem Windows, jest Chocolatey .

Chocolatey NuGet to Menedżer pakietów maszyn, podobny do apt-get, ale zbudowany z myślą o systemie Windows.

Możesz potencjalnie dość łatwo zbudować własne pakiety Chocolatey, a następnie utworzyć skrypt PowerShell, który zainstaluje i skonfiguruje praktycznie wszystko.

Phil
źródło
Jak rozumiem, istnieje narzędzie o nazwie Vagrant, które jest specjalnie zaprojektowane do tego zadania.
M. Dudley,
3

Wolno działające środowisko nie powinno stanowić problemu, wystarczy wrzucić do niego pamięć i procesor. Narzut związany z nowoczesną maszyną wirtualną do pracy na komputerach stacjonarnych, jak większość oprogramowania SW, jest bardzo niewielki, jest wielokrotnie oszczędzany, ponieważ nie trzeba wykonywać żadnej konfiguracji podczas zmiany sprzętu.

hyde
źródło
3

Sądziłbym, że umowa deweloperska określi rezultaty i zobowiązania wykonawcy wobec ciebie.

Przynajmniej poprosiłbym o przegląd i dokumentację o tym, jak działa konfiguracja i co jest istotne do tego stopnia, że ​​możesz odtworzyć projekt, zbudować go i wdrożyć samodzielnie.

Jeśli chodzi o gotowość do pracy, myślę, że VM jest całkowicie do przyjęcia.

Zdecydowanie jednak naciskałbym na dokumentację. Wahałbym się bez niego, ponieważ jeśli nie masz wysokiego poziomu zrozumienia, jak to działa, możesz w przyszłości przekroczyć beczkę, szczególnie jeśli będziesz musiał sam wesprzeć aplikację.

Sam
źródło
Niestety nie było mnie w tej firmie, kiedy została zawarta umowa. Nie mam do niego dostępu, ponieważ nie jestem członkiem kierownictwa, więc nie jestem pewien, co on przewiduje.
CFL_Jeff
2

Nawet w przypadku wewnętrznych systemów wbudowanych ważne jest, aby mieć dokument opisujący sposób konfiguracji środowiska kompilacji. Musisz także zarchiwizować wszystkie pliki binarne / pliki instalacyjne narzędzi oraz biblioteki potrzebne do skonfigurowania środowiska kompilacji.

Keith Nicholas
źródło
1

Nie zaakceptowałbym VM jako kodu dostarczanego, ponieważ utrudnia to aktualizację. Musisz mieć tę maszynę wirtualną jako złoty obraz, aby wykonać prace programistyczne. To sprawia, że ​​trudniej jest tworzyć mody. Deweloper musi sformatować lub uzyskać nową maszynę, musi zainstalować maszynę wirtualną i pociągnąć maszynę wirtualną.

Podczas wprowadzania zmian musisz zatwierdzić nową „złotą kopię” maszyny wirtualnej. Dlaczego chcesz zarządzać takim dużym plikiem binarnym w ramach kontroli źródła? Nie można różnicować, a z mojego doświadczenia próbowanie kontroli źródła złota kopia pliku binarnego nie kończy się dobrze. Jeśli nie będziesz w stanie zachować ścisłej kontroli nad tym, kto edytuje złotą kopię, znajdziesz w niej rzeczy, które nie są udokumentowane i o których nikt nie wie.

Jeśli programista chciałby dostarczyć mi oprogramowanie w tej formie, znalazłbym innego programistę. To mówi mi, że nie są wystarczająco profesjonalni, aby wykreślić swoje zależności lub przynajmniej je udokumentować.

Chciałbym je też:

  1. Utwórz plik tekstowy, który zostanie sprawdzony pod kontrolą źródła za pomocą kodu. Zawiera listę wszystkich zależności potrzebnych do uruchomienia projektu, które nie są częścią repozytorium kontroli źródła (np. CodeWarrior, jakiekolwiek narzędzia wiersza poleceń lub inne zewnętrzne aplikacje, na których polegasz).

  2. Skrypt do instalacji zależności. Ponieważ jesteś w systemie Windows, nie powinno być zbyt trudne stworzenie skryptu Chocolatey, aby zautomatyzować konfigurację środowiska programistycznego. Wszelkie zależności, które nie są jeszcze czekoladowymi opakowaniami, możesz zrobić. Na przykład możesz zainstalować ciężkie narzędzia komercyjne, takie jak Visual Studio i SQL Server, za pośrednictwem Chocolatey. Pakiety te instalują wersje testowe, które są w pełni funkcjonalne i można je odblokować, wprowadzając klucz licencyjny. Jest więc możliwe, że to samo można zrobić z CodeWarrior i innymi zależnościami dla środowiska programistycznego.

Być może twój programista jest na tyle dobry, że nadal chcesz z nim współpracować, ale nie jest dobry w automatyzacji. To też w porządku, gdyby tak było, albo sam bym wykonał część automatyzacji, pracując z nim / nią w celu zidentyfikowania zależności i uruchomienia skryptu, albo pozyskam innego programistę, który jest dobry w automatyzacji, aby to zrobił . Należy to zrobić na początku projektu. Czysta, pozbawiona kości kopia maszyny wirtualnej Win8 nadal byłaby przydatna, ponieważ można jej użyć do przetestowania czekoladowego skryptu.

Giscard Biamby
źródło
0

Nie sądzę, żeby był z tym problem, widziałem systemy zarządzania treścią, które instalują się jako maszyny wirtualne, i z tego, co mówisz, wykonawcy dali ci możliwość samodzielnego utrzymania i rozszerzenia aplikacji.

Jednak, jak zauważyli inni plakaty, chciałbym zrobić dwie rzeczy. Najpierw upewnij się, że instalując maszynę wirtualną, umieść ją na maszynie innej niż Twoja sieć. Nie pobierzesz nieznanego pliku EXE z Internetu i nie zainstalujesz go na swoim komputerze.

Po drugie, jeśli to możliwe, zachowaj tę izolowaną kopię jako odniesienie do ustawienia wersji wewnętrznej. Mówię, jeśli to możliwe, ponieważ nie znam presji biznesowej, na którą jesteś. Ostatecznie to dział / programiści IT firmy będą odpowiedzialni za tę aplikację. Im więcej o tym wiesz, tym lepiej.

Daniel Hollinrake
źródło