Jeszcze przed założeniem własnej działalności i przeniesieniem wszelkich operacji związanych z programowaniem na własną maszynę, do własnego gniazda, nieśmiało i powoli badałem przydatność wirtualizacji dla programisty. Z badań owych wyniknął wniosek bardzo jasny - wirtualizacja to dla mnie rozwiązanie IDEALNE i bez niego nie bardzo wyobrażam sobie pracę. Szczególnie jako pseudo-freelancer jakim jestem teraz, gdy zdarza mi się pracować nad więcej niż jednym projektem jednocześnie.
Temat ten poruszałem już niejednokrotnie, napisałem nawet mini-tutorial pokazujący jak używałem Virtual PC do swoich niecnych celów. Od tamtej pory wiele błota upłynęło w Białce i co nieco zmieniło się w mych zwirtualizowanych zwyczajach. Mam zatem zamiar opisać krótką drogę swojej ewolucji, na którą złożą się uwagi o trzech popularnych środowiskach do wirtualizacji: Virtual PC, VirtualBox i VMWare Workstation. Celowo pomijam Hyper-V, ponieważ stworzone ono zostało raczej do bardziej "serwerowych" celów... i go nigdy nie używałem (i pewnie używać nie będę). Dowodem na to jest choćby niemożność jego instalacji na Windows7 - a ja CHCĘ mieć Windows7 jako główny system.
Na początku było...
Virtual PC, by Microsoft
Plusy
Darmowe. Proste w użyciu. Rach-ciach i działa, śpiewa, tańczy, recytuje. To od tego narzędzia rozpocząłem przygodę z wirtualizacją i bardzo dobrze mi się z niego korzystało. Integracja z hostem (Win XP i Win7) - bardzo fajna. Starsza wersja (2007) posiadała nawet drag'n'drop pomiędzy hostem a gościem i ten ficzer na tyle ujął me serce, że nadal używałem tej wersji po wyjściu kolejnej edycji dołączanej do Windows 7.
Dodatkowo w żadnym innym systemie żonglowanie dyskami nie jest tak proste i dowolne. Wszystko można skopiować, przenieść, przemianować (w sensie - zmienić nazwę:) ). Jeden dysk można podłączyć do kilku maszyn, jedna maszyna może korzystać z kilku dysków. Dyski mogą dziedziczyć z siebie nawzajem, a nowa "instancja" tej samej maszyny to po prostu x-copy jej dysków. Ba - utworzenie nowej maszyny wirtualnej to kwestia dosłownie pół minuty - dzięki całkowitej swobodzie w kilka chwil można raz-dwa odpalić nowy "tymczasowy" system, wykonać jakąś czynność, a następnie wyłączyć maszynę kasując zmiany i zapomnieć o całej sprawie. Do dziś korzystam z takiej możliwości jeśli "gdzieś indziej" muszę zaktualizować jakieś biblioteki wymagające instalacji, np. komponenty Telerika. Nie chcę integracji z VS, nie chcę dokumentacji, nie chcę żadnych śmieci - tylko same dllki. Dzięki VPC jest to naprawdę proste - ściągam instalator, instaluję, kopiuję z wirtualki gołe biblioteki... i już.
Niesamowicie podoba mi się również sposób konfiguracji sieci dla poszczególnych maszyn. Każda wirtualka ma swoją własną konfigurację w żaden sposób nie wpływającą na pozostałe maszyny. Strasznie elastyczne i wygodne rozwiązanie.
Minusy
Skoro tak się nad VPC rozpływam to dlaczego dziś używam go tak sporadycznie? Powody są dwa - i niestety oba całkowicie dyskwalifikują to rozwiązanie w moich oczach.
Pierwszym głównym powodem jest brak wsparcia dla 64-bitowych systemów gości. Mam w zwyczaju programować na serwerowych edycjach Windowsa, więc naturalną koleją rzeczy kilka miesięcy temu przeniosłem się z Win2003 na Win2008R2. I w tym momencie... VPC po prostu rozkłada ręce, rozkłada nogi i mówi "slap me baby one more time". Najzwyczajniej w świecie SIĘ NIE DA, ponieważ system ów nie posiada 32bitowej wersji.
Drugi główny powód to możliwość wykorzystania maksymalnie JEDNEGO (słownie: jednego!) rdzenia procesora hosta. Coś mi świta że kiedyś wszystkie uruchomione maszyny chodziły na jednym rdzeniu, a teraz każda maszyna może dostać swój rdzeń, ale... tak naprawdę nie ma do żadnego znaczenia. Visual Studio + Resharper + Sql Server + IIS + kilka innych rzeczy uruchomione na jednym rdzeniu po prostu nie działają tak jak działać powinny. I nie ma w tym nic dziwnego.
Oprócz wymienionych wad znalazłoby się jeszcze kilka mniejszych baboli. Szczególnie irytujące było "niedziałanie" niektórych klawiszy w wirtualce w pewnych - moim zdaniem losowych - cyrkumstancjach. Na przykład nie działał klawisz TAB, albo nie działał ESC, a ALT+TAB owszem, wykonywał się - ale na hoście. Co prawda restart całego środowiska naprawia tą przykrą niedogodność, ale niesmak... pozostaje.
Z innych uwag: VPC gryzie się z Virtual Boxem - nie potrafią działać jednocześnie na jednym hoście.
Podsumowując...
Uważam Virtual PC za całkiem udany produkt. Niektóre rozwiązania są wręcz genialne i jeśli zastanawiasz się nad "zabawą" z wirtualizacją na systemach 32bitowych niewymagających specjalnie mocy obliczeniowej rozdzielonej na kilka rdzeni - to polecam. Niestety wymienione wady absolutnie wykluczają VPC jeśli chodzi o bardziej "profesjonalne" programistyczne zastosowania. Jest to - jak podkreślone wyżej - po prostu raczej zabawka. A szkoda.