O virtualizaciji se često raspravlja u velikim firmama, malim i srednjim poduzećima pa i među privatnim korisnicima nije strano koristiti virtualne okoline. Mnoga rješenja koja danas postoje su ipak namijenjena profesionalnoj, odnosno komercijalnoj upotrebi, iako postoji i solidan postotak nekomercijalnog dijela koji može biti od velike koristi svima ostalima. Ovdje ćemo pokušati približiti pojam virtualizacije i vezanih tehnologija te kako one svakodnevno aktivno sudjeluju u poslovnim i privatnim sferama.
VirtualBox-a ili VMware-a?
Ako ste koristili virtualne strojeve već do sada, vjerojatno ste upoznati sa softverom poput VirtualBox-a ili VMware-a i moguće da ste ih koristili za neke testne svrhe i stvaranje sigurnih okolina. Kada se prihvatite nekih poslova potencijalno riskantnih za računalo, puno je jednostavnije takve stvari izvoditi u virtualnoj okolini pa ako što i pođe po zlu, nije neki problem vratiti sve na prijašnje stanje bez utjecanja na bitne podatke i stanje “hosta” odnosno sustava na kojem se pokreće virtualni stroj. Potom nakon što ste proveli testove na virtualnoj okolini i sve je prošlo kako treba isto možete doslovno ponoviti “za pravo”. Uz virtualne slike vežu se i pojmovi poput prenosivosti i kompatibilnosti gdje možete testirati kako bi određen softver reagirao na drugoj okolini.
Dobar primjer za ovo je razvijanje multiplatformskih aplikacija i to ne samo onih popularnih poput Windows – Linux – Mac OS, već možete postaviti i neke druge OS-ove kao što je Solaris, FreeBSD, a razvijate li za mobilne platforme zašto ne biste svoju Android aplikaciju isprobali prvo na računalu te kada su svi detalji na mjestu prebacite se na završni test na pravom uređaju. Virtualni strojevi mogu poslužiti i kao dobar resurs za pričuvne kopije podataka te eksperimentiranje sa raznim konfiguracijama sustava. Virtualne strojeve možete i prenositi s jednog računala na drugo, raditi import/export te isprobavati kako će stroj reagirati nakon što ugradite novu komponentu koju ste nedavno kupili i smatrate da može predstavljati probleme.
Nije sve tako jednostavno
Iako je virtualizacija veoma korisna stvar, kada se radi o nekom ozbiljnijem poslu stvari više nisu tako jednostavne. Dobar dio softvera što uključuje i cijele operacijske sustave, aplikacije i njihove dijelove mogu se ponašati neočekivano kada se pokreću na virtualnom stroju u odnosu na sami host. Tako da prije početka korištenja virtualnih strojeva, a pogotovo za vrijeme, potrebna je dodatna konfiguracija svake zasebne cjeline od hardvera do softverske podrške te kasnije održavanje istih. Danas je ovaj segment ipak dosta jednostavniji nego što je bio u prošlosti kada se sve trebalo konfigurirati ručno. Softver za virtualizaciju nudi već predefinirane postavke ovisno o tome što stavljate gore. Ostatak, dakle hardver i neke optimalne postavke će se postaviti automatski. Na ovaj način virtualni stroj je spreman za korištenje praktički već unutar pola sata. Jasno, potrebno je i poželjno proći kroz te automatske postavke i podesiti sve prema vlastitim željama i potrebama. Ako radite od kuće vjerojatno ćete htjeti ostaviti dovoljno hardverskih resursa i hostu, a opet taman toliko da zahtjevi virtualnog stroja budu zadovoljeni. Ovo je dio koji ovisi isključivo o samom korisniku i njegovim potrebama te niti jedan predložak ne može biti dovoljno precizan niti dovoljno dobro inicijalno konfiguriran.
Licence
Idući aspekt su licence. Pod licencama smatramo i one za pogon virtualnog stroja i one za softver koji se nalazi na njemu. Neki programi za virtualizaciju dolaze s ograničenim brojem licenci za vlastite nekomercijalne potrebe dok za svaku dodatnu treba platiti pa razmislite i o softveru kojega namjeravate koristiti te za koju točno svrhu. Što se tiče samog softvera koji pokrećete na virtualnom stroju, u uvjetima korištenja koje mnogi preskaču, često je definirano na koliko računala smijete instalirati određeni softver tako da valja pripaziti na ovo ograničenje. To što se radi o virtualnom stroju na nekom računalu i dalje se broji kao zasebna instalacija i ne možete se izvući s činjenicom da je softver instaliran “virtualno” pa se ne broji. Opet, ako imate dovoljno plaćenih licenci ovo može biti iskorišteno veoma efektivno.
Primjera radi, ako održavate tečajeve ili često mijenjate klijente koji rade za vašim računalima možete iskoristiti virtualizaciju za postavljanje zasebnih okolina koje će biti već predkonfigurirane i klijenti će samo sjesti za računalo, obaviti svoj dio posla te nakon toga virtualni stroj možete vratiti na početno stanje sa prvotno konfiguriranim postavkama i instaliranim programima te je računalo ponovno spremno za idućeg korisnika da započne rad iz početka. Kao što je spomenuto, ovaj princip je dobar za održavanje tečajeva pa tako recimo da držite programiranje u nekom programskom jeziku, na ovaj način možete postaviti okolinu, što podrazumijeva instalaciju svih potrebnih programa na virtualnu mašinu zajedno sa materijalima za učenje. Za vrijeme tečaja svaki polaznik će koristiti taj virtualni stroj i na njemu razvijati, a po završetku tečaja potrebno je veoma malo vremena da se sve vrati na izvorno stanje i da sljedeća tura polaznika počne koristiti sustav. Ovako osim što smanjujete mogućnost grešaka na hostu i njegovo pretrpavanje nesuvislim računima, imate odmah spremnu okolinu za korištenje kada je to potrebno.
Hardver
Što se tiče hardverskih zahtjeva pri radu s virtualnim strojevima, već pri samom pokretanju nekog primijetit ćete određene posljedice na hostu. Računalo na kojem se vrti virtualni stroj mora dijeliti svoje resurse s njime, a u kojem omjeru ovisi kako je podešeno u postavkama svakog virtualnog stroja. Vrlo brzo ćete moći zaključiti koji su to ograničavajući faktori, a u stvari sve se svodi na tvrdi disk i količinu radne memorije kao najbitnije komponente te potom slijedi procesorska snaga. Zašto baš ovim redoslijedom? Dakle, iako host podržava izvršavanje virtualnog stroja, na njemu se i dalje odvijaju mnogi procesi osim spomenutog te se konstantno nešto zapisuje i čita s tvrdog diska. Imajući na umu da virtualni stroj mora također obavljati te akcije čitanja i pisanja na svoj virtualni disk, to čini mnogo više opterećenja stvarnom disku. Kod odabira veličine tvrdog diska virtualnog stroja često je moguće odabrati statičku ili dinamičku vrijednost, pri čemu se u prvom slučaju određeni dio prostora rezervira za korištenje virtualnom stroju i taj dio je nepristupačan hostu, dok se u drugom slučaju odredi maksimalna veličina prostora kojeg će zauzeti virtualni stroj i ta količina se puni po potrebi, dinamički. Ovdje kao ograničenje ne stavljamo samu količini prostora, nego brzinu čitanja i pisanja koja je i dalje za današnje pojmove dosta spora govorimo li o standardnim tvrdim diskovima, a koristeći virtualni stroj to ograničenje dolazi još više do izražaja. Potom radna memorija je isto tako dosta bitan faktor, a virtualni strojevi imaju običaj zauzeti poprilično dobar udio.
U više slučajeva se čak i kompletno stanje virtualnog stroja može privremeno spremiti i ostaviti za kasnije korištenje, kao da zaustavite pjesmu i kasnije ju nastavite slušati. Na stvarnom računalu ova situacija nije moguća, međutim u virtualnom svijetu je. I u slučaju s memorijom može se rezervirati određeni dio koji će biti prepušten virtualnom stroju kao i opcija s dinamičkom alokacijom po potrebi. Posljednje na spisku je procesorska snaga, koja nije zanemariva komponenta kako bi se moglo shvatiti, ali je u odnosu na memoriju i tvrdi disk još u najboljem položaju. Današnji procesori su dosta brzi za sve potrebe i postoji raspodjela snage po procesorskim jezgrama. S druge strane, radna memorija isto tako nije pretjerano skupa i tvrdi diskovi imaju ogromne kapacitete, a ono što je najkritičnije su brzine pristupa ovim komponentama i čekanje u redu da se jedan proces završi kako bi drugi mogao početi.
Softver
Što se tiče softvera za virtualizaciju odmah svi znaju ili su čuli za VMware i to vjerojatno zato što je VMware bio jedno od imena koja su tu od samih početaka. Kasnije su uslijedili ostali poput Microsofta i Citrixa te Oraclea sa VirtualBox-om koji je došao od Sun-a. Ovdje nećemo govoriti o konkretnom softveru, već nastavljamo s ostalim tehnologijama koje omogućuje virtualizacija. Jednu od tih tehnologija koristili ste ukoliko ste ikada programirali u Javi i ovo je zapravo idealan primjer za približiti virtualizaciju i njezine prednosti. Bilo da ste dugogodišnji Java programer ili ste tek počeli s prvim programom zapravo nije bitno kada je riječ o Java Virtual Machine-u. Točnije, nije nužno poznavanje njegovog rada da biste napravili neki program u Javi. Možda ste se eventualno zapitali kako to da se Java može izvršavati na tako mnogo različitih platformi, no u konačnici to nije bilo bitno. Sada ćemo dobiti i odgovor na to pitanje, a taj je odgovor pogađate, virtualizacija.
Da stvar bude još zanimljivija ne mora se nužno niti raditi isključivo o Javi kada govorimo o JVM-u, već u obzir dolaze i drugi jezici. Ipak poznavanje rada JVM-a pomaže nam u izradi aplikacija i omogućava nam da bolje shvatimo što se u stvari događa u pozadini prilikom izvođenja programa. U višim programskim jezicima poput Jave postoji više razina apstrakcije, od koda kojeg pišemo i koji je razumljiv nama, do seta instrukcija koji je razumljiv stroju. Dakle da bi se određena aplikacija mogla pokrenuti potrebno je interpretirati kod određenog višeg programskog jezika. Dobar dio tog koda se kompajlira već unaprijed i to ovisno o tome na koju platformu se odnosi pa možemo reći da je specifičan za određenu platformu, što je dobro kada uzmemo brzinu izvođenja prilikom pokretanja, ali nije za međukompatibilnost između raznih platformi. Java se ne nalazi u ovoj skupini i iako se sam Java kod dosta brzo izvodi, htjelo se zadržati međukompatibilnost pa se s toga sve skupa izvodi sporije od nekih drugih jezika upravo zbog više slojeva apstrakcije. Prevođenje počinje čitanjem izvornog koda koji se obično nalazi u datotekama .java i od njih nastaje .class odnosno takozvani Java bytecode. U ovom procesu se kod više razine preveo u nešto niži sloj koji podrazumijeva set instrukcija koje stroj razumije. Prilikom pokretanja aplikacije, neovisno o platformi na kojoj se ista pokreće, Java bytecode se predaje Java Virtual Machine-u. Ovdje dolazimo do dijela gdje virtualizacija kao takva postaje korisna za rad na više platforma. Ovo je ujedno i najveća prednost JVM-a, što se te aplikacije onda mogu pokretati bilo gdje, a da postoji podrška za JVM, bilo da se radi o računalu, mobitelu ili bilo kakvom drugom uređaju.
Negativne strane ovog pristupa također postoje, a odnose se na raznolikost postojanja više implementacija JVM-a. Iako je Oracle službeno zaslužan za razvitak Jave, njegova implementacija JVM-a nije jedina koja postoji, daleko od toga. Bilo tko može napraviti svoju implementaciju koja će raditi slično, ovisno o zahtjevima i ciljevima koji se nastoje postići. Zbog toga isti kod ne mora nužno raditi odlično na jednoj implementaciji JVM-a i na svim ostalima i zna se dogoditi da negdje radi savršeno, dok drugdje postoje problemi. Često je takav slučaj i sa virtualizacijom općenito pa jedna tehnologija ne mora nužno raditi kako bi trebala na svim virtualnim strojevima u različitim okolinama, ako radi dobro na jednom. Primjer s Java Virtual Machine-om je dobar za vidjeti kako virtualizacija pomaže u razvijanju softvera pa moramo podsjetiti i na to da su aplikacije za Android OS također pisane u Javi za Android, a sada znate i ostatak priče kako teče, sve do izvršavanja te aplikacije na nekom Android uređaju. S obzirom na prirodu ove teme, nećemo se ograničiti na sam uređaj jer se Android aplikacija može lagano pokrenuti i na računalu, naravno instalacijom virtualnog Android simulatora. Čak ako i ne razvijate aplikacije za Android možete pokrenuti simulator i vidjeti kako to funkcionira, naravno puno je bolje ako radite nešto specifično pa odmah možete vidjeti što ste napravili prvo na računalu, a potom i na samom uređaju.
Dobra stara vremena
U ovoj priči nećemo zaboraviti niti na dobra stara vremena kada su bile popularne igre koje danas više ne možemo pokretati na našim sofisticiranim računalima, osim ako ne koristimo neki softver da nam u tome premosti naše probleme. Radi se o emulatorima starog softvera i hardvera koji simuliraju određenu okolinu kako bi se određene aplikacije mogle pokretati. Ovakvi emulatori zadržavaju originalna svojstva tih platformi od izgleda do funkcionalnosti i često znaju biti otvorenog koda te besplatni. Emulatori se koriste i u slučaju kada neka, najčešće igra nije dostupna na računalu, nego samo na određenoj konzoli.
Postoji više besplatnih emulatora za konzole, ali naravno problem je taj što doživljaj jednostavno ne može biti isti. Zbog toga su najpopularniji emulatori koji omogućavaju pokretanje starih aplikacija ili igara koje su nekoć vladale PC svijetom. Štoviše, niti to nije isključivo jedini razlog, već se nastoji oživjeti taj stari svijet novim nastavcima već gotovo zaboravljenih naslova. Ovakvi projekti najčešće su dijela fanova koji pomoću emulatora i virtualizacije onda razvijaju istaknute naslove. Poanta ovih primjera bila je pokazati koliko je virtualizacija danas važna tehnologija i koliku ulogu nosi i u poslovnom i privatnom okruženju, od razvijanja aplikacija do pokretanja starih igara.