Virtualizacija i put prema cloudu

Kako je jedan server naučio glumiti sto servera — i zašto je podrum tvoje firme zapravo bio ogromna grijalica novca.

poglavlje 14/2418 min čitanja2001 – 2010

Zamisli podrum. Ne onaj tvoj, s biciklom i teglama, nego korporativni — hladan, fluorescentno osvijetljen, s podnim pločama koje se dižu i ispod kojih se vuku kablovi u snopovima debelim kao ruka. U tom podrumu, negdje oko 2005., stoji red ormara. U svakom ormaru — server, dakle računalo posvećeno jednom zadatku. Jedan za mail, jedan za bazu, jedan za onu internu aplikaciju koju je napisao pripravnik prije tri godine i sad je nitko ne smije taknuti jer se ne zna kako radi. Svaki server ima svoje ime — ne šifru, ime. Zeus, Apollo, Kefalica (jer je pao dvaput u istom mjesecu). Svaki ima admina koji ga poznaje osobno, kao susjeda s kojim se pozdravlja.

I evo caka koja te tjera da zavrtiš glavom: skoro svaki od tih strojeva radi na desetak posto svoje snage. Devedeset posto tog željeza — kupljenog, uvezenog, plaćenog, uključenog u struju dvadeset i četiri sata dnevno — sjedi i ne radi ništa. Zašto ga onda nisu ugasili? Zato što firma razmišlja kao roditelj koji kupuje cipele tri broja veće: „što ako aplikacija naraste?” Bolje neiskorišteno nego premalo. Bolje da grije podrum uzalud, nego da jednog dana pukne pod opterećenjem i šef pita zašto.

Množi to sa svakom firmom na planeti koja ima IT odjel, i dobiješ sliku svijeta koji je fizički zatrpan računalima koja uglavnom besposleno brundaju. To je bio industrijski standard, ne sramotna iznimka. I upravo je tu, u toj rasipnosti, skrivena zagonetka koju sljedećih par stranica rješava: ako je Amazon 2006. lansirao EC2 i odlučio da će ti iznajmiti komad računala na sat — kako je, molim te, fizički izrezao jedan server na komade i svakom kupcu prodao dio, a da se ti kupci međusobno ne pojedu u istoj memoriji?

Odgovor postoji. I evo obrata koji zaslužuje da zastaneš: taj odgovor nije izmislio Amazon. Nije ga izmislio ni 2000-ih. Netko je to riješio kad je internet bio znanstvena fantastika, a računalo je zauzimalo pola sobe — i onda su svi zaboravili, jer se PC svijet zaljubio u ideju da svaki zadatak treba svoju vlastitu, malu, jeftinu kutiju. Trebalo je četrdesetak godina rasipnih podruma da se industrija sjeti nečega što je već stajalo zapisano u priručnicima od prije nego što je ona sama rođena.

Pa dobro, reći ćeš — ako je odgovor postojao, što je to bilo toliko teško da su ga svi zaboravili i onda ga morali ponovno izmisliti? I tko je, zaboga, prvi smislio da se jedno računalo pretvara da je sto računala, a da nijedno od tih sto to ne primijeti? Dobra pitanja. Zapravo, baš ta vrsta pitanja — naizgled naivnih, a u biti onih koja pogode u srž — vodi nas kroz cijelo ovo poglavlje.

Dobro, kaže laik, gledajući red servera u nekom podrumu na slici koju si mu upravo pokazao. Svaki od njih radi jednu stvar. Jedan drži e-mail, drugi drži bazu, treći drži nešto što se zove »interni portal« u koji je ušao valjda dvaput u životu. Pitanje je jednostavno: zašto? Zašto svaka aplikacija treba svoje željezo, kad ono željezo očito ne radi cijeli dan? Zašto svi ne stave na jedan jači server?

E, upravo to pitanje su si postavljali i ljudi koji su računala plaćali iz svog budžeta, ne iz tuđeg, i baš je to pitanje pokrenulo cijelu priču koju ćemo ispričati u ovom poglavlju. Odgovor postoji i zove se virtualizacija, a da bi ga skužio, ne treba ti diploma — treba ti jedna zgrada i jedan stanodavac koji je, blago rečeno, spreman lagati.

Zamisli stanodavca koji ima jednu jedinu zgradu, ali je iznajmljuje kao da ima sto zgrada. Svakom stanaru kaže: ovo je tvoja zgrada, cijela je tvoja, radi s njom što hoćeš. Stanar useli namještaj, zaključa vrata, osjeća se kao gazda. Ne zna, i ne treba mu znati, da tri sobe dalje živi netko drugi kome je stanodavac rekao potpuno istu rečenicu. Svatko misli da ima cijelu zgradu. Nitko nema cijelu zgradu. Ima je samo stanodavac, i on je taj koji sve to drži u glavi — tko gdje spava, tko koliko struje vuče i, najvažnije, kako paziti da se stanari nikad ne sretnu u hodniku i skuže prevaru.

Taj stanodavac se u informatici zove hipervizor. To je program (ili sklop programa, nije bitno) koji sjedi između fizičkog servera i svih tih virtualnih računala koja se na njemu vrte, i čija je jedina, cijela životna misija — lagati. Svakoj virtualki uporno tvrdi: »ti imaš svoj procesor, svoju memoriju, svoj disk, sve je tvoje, budi slobodna«. U stvarnosti sve to dijeli s desetak, pedeset, dvjesto drugih stanara na istom komadu željeza, i njegov posao je da tu podjelu odradi tako fino da nijedna virtualka ne primijeti da je varaju.

Dobro, kaže laik, i to je onda to? Program koji laže računalima? Zvuči… lako?

Bonus-sloj, ne moraš ovo pamtiti, ali evo ga: kasnije su Intel i AMD, vidjevši da cijela industrija hoće ovo raditi, ugurali u same procesore posebne instrukcije baš za virtualizaciju (zovu se VT-x i AMD-V, ako te ikad ispituju na kvizu), pa je stanodavac dobio pomoć od same zgrade — zidovi su sad sami znali gdje čije sobe počinju i završavaju. Ali do tada, dobrih desetak godina, cijeli se trik izvodio na goloj muci i pametnom softveru.

I tu je poanta koju laik sad već sam nazire: ako jedan server može glumiti sto servera, onda odjednom onih deset aplikacija iz podruma ne treba deset komada željeza. Trebaju jedan jači komad željeza i jednog vrlo uvjerljivog lažljivca koji sjedi na njemu. Zvuči kao trik za uštedu struje. I jest. Ali, kao što ćemo vidjeti, to je trik koji je, korak po korak, doveo do toga da danas iznajmljuješ „komad računala” s druge strane svijeta, a ni ne znaš da je onaj komad zapravo samo jedna od stotinu laži na istom serveru negdje u Virginiji.

"A zašto je to uopće trebalo?"
§ 02

"A zašto je to uopće trebalo?"

Dobro, kaže laik, hipervizor je pametan, kužim trik sa stanarima. Ali čemu to uopće? Zašto ne ostaviš svaki server da radi svoje, u svom kutu, kako je i radio dosad? E, tu se vraćamo na onu brojku od desetak posto: prosječan server u tipičnom podrumu 2000-ih bio je iskorišten oko deset posto svog kapaciteta. Deset. Ne pedeset, ne trideset — deset.

Znači, kupiš čudovište od željeza, platiš struju, platiš klimu koja ga hladi, platiš admina koji ga tetoši — a onda ga puštaš da devedeset posto vremena samo spava. Zašto? Zato što je svaka firma kupovala server za jednu aplikaciju, i uvijek za ono što bi aplikacija MOGLA postati, ne za ono što je stvarno bila. Netko u nabavi je jednom rekao „što ako naraste” i ta rečenica je opravdala tone metala u podrumima cijelog svijeta.

Sad zamisli koliko je to željeza, koliko struje, koliko klima-uređaja koji hlade računala koja uglavnom — ne rade ništa. Da je neki vanzemaljac sletio i pitao čemu služi ta zgrada puna vrućih kutija koje uglavnom stoje, odgovor bi bio otprilike: pa, možda će nekad zatrebati. To je bio poslovni model podzemlja informatike.

I tu virtualizacija ulazi kao ona osoba na zabavi koja gleda pet ljudi, svaki sa svojim stolom za sebe u praznoj dvorani, i kaže: „Ljudi, možete valjda sjediti za istim stolom?” Umjesto deset servera od kojih svaki nešto malo radi, staviš tih deset „virtualki” — virtualnih računala, softverskih kopija servera koje se ponašaju kao pravi strojevi — na jedan fizički stroj koji sad, umjesto da spava, stvarno radi. Iskorištenost skoči s onih sramotnih deset posto na šezdeset, sedamdeset. Isti posao, upola manje željeza, upola manje struje, upola manje admina koji moraju znati imena svih tih kutija.

To se onda zvalo konsolidacija podruma, i firme su danima slavile kad su ugasile pola serverske sobe i pretvorile je — u sobu za sastanke, u ostavu, u prazan prostor koji više ne treba klimu na petnaest stupnjeva. Netko je vjerojatno tu sobu pretvorio u kutak za kavu. Ironično, jedini stroj koji je tamo ostao radio bio je vjerojatno taj za kavu.

Ali čekaj, kaže laik, ako je server sad softver koji glumi računalo, što se onda događa kad ga želiš premjestiti? I ovo je trenutak kad stvar konačno sjedne. Prije, ako si htio premjestiti server, zvao si dostavu, ljudi su nosili kutiju metala niz hodnik, pazili da ne padne, spajali kablove i molili se da sve radi kad ga uključe. Sad snimiš cijelo to virtualno računalo, sa svime što ima, u jednu datoteku — disk, memoriju, procese, sve. I onu datoteku kopiraš. Kao dokument.

Server postaje nešto što možeš zalijepiti na USB stick — teoretski, iako to nitko normalan ne radi. Možeš ga premjestiti na drugi fizički stroj u dvije minute, možeš ga umnožiti, možeš ga vratiti u stanje od jučer kao da vrtiš snimku unatrag. Ono što je nekad bilo kutija koju nosiš dizalom, sad je snapshot koji šalješ mailom — pa, ne baš mailom, ali suštinski, da.

I upravo je ta jedna sitnica — server kao datoteka umjesto server kao kutija — ono na čemu će se, samo par godina kasnije, izgraditi cijela ideja da nekome iznajmiš ‚komad računala‘ preko interneta, ono što danas zovemo cloud. Ali do toga stižemo za trenutak. Prvo, netko će morati podsjetiti svijet da je sve ovo, u nekom obliku, već jednom bilo izmišljeno.

"Nisu li to mainframe radili davno?"
§ 03

"Nisu li to mainframe radili davno?"

— Čekaj malo — kaže laik, i vidiš mu na licu onaj izraz kad nekome sjedne kockica. — Ovo sve zvuči kao... pa, kao da je netko davno imao jedan veliki kompjuter i onda ga djelio na više ljudi. Nisu li to mainframe radili davno?

Jesu. I ne davno kao ‚nekad davno u pustinji‘, nego davno kao pedesetak godina prije nego je VMware uopće postojao — a VMware je firma koja je krajem devedesetih i početkom dvijetisućitih prva komercijalno ponudila virtualizaciju na običnim PC i server procesorima, ono što je zapravo samo ponovno otkrivanje starog mainframe trika. IBM je sedamdesetih godina imao operativni sustav koji se — bez ikakve mašte, ali zato posve iskreno — zvao VM. Virtual Machine. Ne „inspiriran virtualnim mašinama”, ne „koncept sličan” — literalno se tako zvao, na naslovnici priručnika, 1972. godine. Taj sustav je jedan fizički mainframe (koji je sam zauzimao sobu, ne server-rack) dijelio na više potpuno odvojenih „virtualnih” računala, od kojih je svako mislilo da je samo na cijelom stroju. Zvuči poznato? Trebalo bi. To je opis hipervizora iz prošle sekcije, samo napisan desetljećima prije nego je VMware uopće osnovan.

Pogledaj samo redoslijed. Mainframe u šezdesetima izmišlja time-sharing — jedan skupi stroj, više ljudi kuca terminal po terminal i svatko misli da ga stroj služi osobno, dok se u pozadini procesor žonglira između svih njih u djeliću sekunde. Pa dođe mikroprocesor, PC postane jeftin, i cijela industrija poviče: „Zašto bismo dijelili stroj kad svatko može imati svoj?!” I trideset godina kasnije — cloud. Što je cloud, u srži? Time-sharing, samo se sad ne zove terminal nego browser tab, a stroj koji dijeliš nije u susjednoj zgradi nego u Virginiji.

Ili particije. Mainframe je davno naučio rezati jedan fizički stroj na logičke komadiće koji se ponašaju kao odvojeni strojevi — to su bile ‚logičke particije‘, LPAR-ovi, dosadan naziv za nešto što je funkcionalno gotovo identično VM-ovima iz prošle sekcije. Industrija to zaboravi, ponovno izmisli isti trik na x86 hardveru — to je naziv za standardnu arhitekturu procesora na kojoj rade obični PC-jevi i jeftiniji serveri, za razliku od skupih mainframe strojeva — nazove ga virtualnom mašinom, i slavi kao revoluciju.

Batch processing — pošalješ posao, stroj ga obradi kad dođe red, a ti ne znaš i ne mariš na kojem se dijelu stroja to fizički dogodilo. Danas se to zove serverless, hvali se kao vrhunac apstrakcije 2020-ih, a suštinski je isti ugovor koji je operator mainframea prihvaćao 1965.: daj posao, ne pitaj gdje se izvršava, plati po utrošku.

Nije to nužno loše, da budemo pošteni prema industriji — nije da su ljudi glupi, samo je PC svijet krenuo iz posve druge kulture. Mainframe je bio skup, čuvan, i dijeljenje je bilo ekonomska nužnost od prvog dana. PC je rođen s obećanjem „jedan čovjek, jedan stroj”, i trebalo je da internet i podrumi puni poluiskorištenih servera ponovno naguraju svijet prema zaključku do kojeg je IBM stigao još za vrijeme Nixonove administracije. Ideja nije čekala da se izmisli. Čekala je da postane jeftina.

Laik kima, ali još nije posve zadovoljan. — Dobro, ali ako je sve to već postojalo... zašto se onda priča o virtualizaciji kao o nečem novom, uz VMware i sve ostalo?

Zato što je razlika u publici. Mainframe virtualizacija bila je igračka za banke i vlade koje su mogle platiti sobu punu skupog željeza. VMware je istu ideju spustila na jeftin x86 hardver koji stane u rack, dostupan svakoj firmi s kreditnom karticom. Trik je stariji od tebe — ali cijena ulaznice je konačno pala na razinu na kojoj je svijet mogao ući.

"I kako od toga do clouda?"
§ 04

"I kako od toga do clouda?"

Dobro, kaže laik, sad kužim hipervizor, kužim da je server postao datoteka koju možeš kopirati kao Word dokument. Ali kako je to postalo — cloud? Kako sam ja došao do toga da za dvadeset dolara mjesečno imam svoj kutak interneta na drugom kontinentu?

Odgovor je uvredljivo jednostavan, u onom smislu u kojem su sve velike stvari uvredljivo jednostavne kad ih napokon netko objasni bez PowerPointa. Sjećaš se Amazona i njegove ideje da ti iznajmi komad računala? E, taj komad — to je virtualka. EC2 (kratica za Elastic Compute Cloud, Amazonov naziv za iznajmljenu virtualku) instanca koju pokreneš klikom nije čarobni oblak koji lebdi negdje iznad Seattlea. To je jedna virtualka, na jednom fizičkom serveru, u jednoj od Amazonovih hala punih rashladnih uređaja i buke. Kad kažeš »digni mi server u cloudu«, ti u prijevodu kažeš: »Molim vas, neka mi vaš hipervizor izreže jedan stan iz vaše zgrade i preda ga meni na korištenje, s prijavom preko API-ja umjesto ključa« — a API je tu samo način na koji jedan program »razgovara« s drugim preko interneta, umjesto da čovjek nešto klikom ili fizičkim ključem otključava. Cloud nije nova tehnologija koja je zamijenila virtualizaciju. Cloud je virtualizacija koju je netko obukao u naplatni sustav i prodao na veliko.

Laik škilji: dobro, ali onda zašto svi pričaju o cloudu kao da je to nešto sasvim novo, a ne samo iznajmljena virtualka? Zato što je stara priča o virtualki dobila jednu novu, presudnu osobinu — elastičnost. I tu treba biti oprezan s riječi, jer „elastičnost” zvuči kao marketinška fraza koju izmišlja netko u odijelu, a u stvarnosti je to nešto sasvim prizemno: mogućnost da dodaš ili maknеš stroj pozivom preko interneta, bez da ikad fizički dotakneš željezo, bez da čekaš isporuku, bez da potpisuješ ugovor s dobavljačem. Prije virtualizacije, ako ti je trebao novi server, zvao si nekoga, on je naručivao komponente, netko je to sastavljao, netko je to montirao u podrum — tjedni, mjeseci. S virtualkom u cloudu, to je jedan API poziv: „stvori mi još deset ovakvih stanova, molim” — i za nekoliko minuta ih imaš. Infrastruktura, ono najfizičkije što tehnologija ima — željezo, struja, hlađenje — postala je kod. Redak u skripti. To je razlika koja je zaista promijenila igru, iako mrzim tu frazu, i evo je koristim jer je ovdje, iznimno, istinita.

I sad dolazi pitanje koje bi svaki dobar laik trebao postaviti: koga je to, konkretno, spasilo? Tko je profitirao od toga da infrastruktura postane kod? Odgovor: svatko tko je htio narasti brzo ili umrijeti jeftino, što je — ispada — otprilike cijela generacija interneta koja je slijedila. Web 2.0, ono razdoblje kad su sajtovi prestali biti statične stranice i postali platforme na kojima ljudi ostavljaju komentare, uploadaju slike, grade profile — sve to je trebalo infrastrukturu koja može narasti preko noći ako sadržaj postane viralan, a smanjiti se ako ne postane, bez da firma bankrotira na najmu servera koje ne koristi. Startupi su dobili možda i veći dar: mladi tim od troje ljudi u garaži mogao je, s kreditnom karticom i par klikova, imati istu infrastrukturnu snagu kao velika korporacija — ne treba mu podrum, ne treba mu admin koji zna svaki server po imenu, treba mu samo ideja i račun na AWS-u (Amazon Web Services, ona ista Amazonova iznajmljena infrastruktura o kojoj cijelo vrijeme pričamo). To je razlog zašto je toliko startupa iz kasnih 2000-ih i 2010-ih uopće mogao postojati u obliku u kojem je postojao: brzo, jeftino, elastično, i bez kapitalnog troška koji bi ih ugušio prije nego što stignu dokazati da imaju smisla.

Laik, sad već pomalo zadovoljan sobom, pita zadnje: znači, virtualka je vrhunac priče? Je li to kraj puta? Ne — i ovdje treba biti iskren, jer priča o infrastrukturi nikad nema kraj, samo sljedeći umor. Virtualka je i dalje, u svojoj srži, cijelo lažno računalo — ima svoj operativni sustav, svoj kernel (onaj dio operativnog sustava koji razgovara s hardverom i drži sve ostalo na okupu), svoje sve — samo da bi na kraju pokrenula jednu aplikaciju od možda dvjesto megabajta. To je kao da iznajmiš cijeli kamion da prevezeš jednu kutiju cipela. Početkom 2010-ih, jedna ekipa je rekla dovoljno: postoji lakši način da se izoliraju aplikacije jedna od druge, a ne treba za to vući cijeli operativni sustav sa sobom. Ta priča — Docker, kontejneri, tema za jedno od narednih poglavlja — počinje upravo od ovog umora s virtualkama. Ali to je već sljedeći korak evolucije, ne ovaj. Za sada je dovoljno znati da je oblak, onaj isti u kojem danas živi pola interneta, u svojoj osnovi samo jedna vrlo dobro organizirana zgrada punog stanova koji se mogu iznajmiti API pozivom — i da je taj trik, koliko god zvučao futuristički, star koliko i ideja da nekome lažeš da ima cijelu zgradu za sebe.

"Zašto bih ja mario?"
§ 05

"Zašto bih ja mario?"

Dobro, kaže laik, vjerujem ti da je fora, čak i da je pametno. Ali zašto bih ja, koji nemam podrum pun servera, o ovome trošio moždane stanice? Dobro pitanje. Odgovor je jednostavan i malo neugodan: ovo poglavlje je zapravo o tebi, samo što se ti u njemu nigdje ne spominješ.

Sjeti se naslova dijela u kojem se nalazimo — Infrastruktura iz sjene. To nije slikovita fraza koju je neki urednik smislio da zvuči cool, to je opis stanja svijeta. Aplikacija koju sad koristiš na mobitelu, banka koju provjeravaš, serija koju gledaš navečer, čak i ovaj tekst koji čitaš, poslužen s nekog servera negdje — sve to trenutno živi kao virtualka na tuđem željezu. Ne kao poseban slučaj, nego kao pravilo. Nema golog metala, pravog fizičkog stroja, ispod tebe — ima hipervizor koji glumi da ga ima. Cijela moderna civilizacija tehnologije stoji na sloju glume, i ta gluma je toliko dobra da zaboravljaš da uopće postoji.

I tu dolazimo do prave poante, one koja se provlači kroz cijelu ovu enciklopediju kao potpisana crvena nit: revolucije ne dolaze iz eksplozija. Dolaze iz dosadnih stvari koje nitko ne slavi. Sjeti se konektora i naizgled trivijalnih komponenti iz druge knjige — nitko o njima ne priča na zabavama, a bez njih nema ni jednog uređaja koji držiš u ruci. Sjeti se DNS-a iz treće knjige — sustava toliko dosadnog da ga i inženjeri zaboravljaju da postoji, sve dok ne padne i pola interneta prestane raditi. Virtualizacija je treći dokaz iste tvrdnje: najdosadnija tehnologija na svijetu, ona o kojoj se ne snima film, redovito ispadne ona s najvećim posljedicama.

Zato mariš. Ne zato što ćeš sutra konfigurirati hipervizor — nećeš, i ne treba. Mariš zato što ćeš sad, kad otvoriš bilo koju aplikaciju, znati da negdje ispod nje stoji stroj koji glumi da je jedini na svijetu, dok mu je zapravo susjed u istom ormaru, u istoj zgradi, ponekad na drugom kontinentu. To znanje ti ništa ne mijenja u svakodnevici. Ali ti mijenja pogled — svijet koji ti se čini kao čarolija u telefonu, zapravo je hrpa iznajmljenih parcela na tuđem željezu, sređena toliko dobro da nikad ne primijetiš šavove.

A šavovi su, kao i uvijek u ovoj priči, tamo gdje ih nitko ne traži. U podrumu. U dosadi. Tamo gdje se svijet zapravo mijenja.