Računalni oblaci za skeptike

Računalni oblaci, computing clouds, među novijim su poštapalicama IT industrije. Mnogi o njima govore. U nas se najviše čuje Ratka Mutavdžića iz Microsofta Hrvatska. No, mnogi drugi i dalje ne razumiju o čemu se, zapravo, tu radi. Budući da mi je oblačno računarstvo, cloud computing, tema doktorata, osjećam se pozvanim reći riječ-dvije.
Pokazat ću na pravom primjeru zašto je oblačno računarstvo dobro i što trebate učiniti da biste vašeg direktora ili direktoricu uvjerili u to ili ga/ju nagnali da barem razmišlja o oblacima. No, prije svega moramo malo pažnje obratiti na stavku zvanu…
Etimologija
Da, slažem se da su pojmovi računalni oblak i oblačno računarstvo - blesavi! Na kraju krajeva, i u anglosaskom jezičnom krugu bilo je oštrih protivljenja tim cloud i computing verbalnim egzibicijama. Spomenuti pojmovi potječu iz običaja da se središnja infrastruktura informacijskih i komunikacijskih (ICT) usluga, od telefonije, preko serverskih farmi do Interneta, crta kao oblačić. Za oblačno računarstvo, također jedan vid infrastrukture ICT usluga, zadržalo se takvo predočavanje temeljem kojega se razvilo “oblačno” nazivlje.
Temeljni prigovor tom nazivlju, uz onaj da nema apsolutno nikakve veze s funkcionalnošću sustava kojeg označava, jest u njegovoj proizvoljnosti. Kritičari kažu: Da se spomenuta ICT infrastruktura crtala kao kvadrati, elipse, oceani ili crne kutije, danas bismo imali ‘kvadratno’, ’elipsasto’, ‘oceansko’ odnosno ‘crnokutijasto’ računarstvo.
To je sve točno! S druge strane, mnogi su predlagali nazivlje poput distribuiranog ili mrežnog (grid) računarstva, no svi ti nazivi su već zauzeti, rezervirani za tehnologije koje, doduše, imaju veze s oblačnim računarstvom, pogotovo grid computing, ali nisu oblačno računarstvo.
Jedan anglosaski pokušaj suvislijega naziva za tehnologiju računalnih oblaka bješe highly virtualized infrastructure, visoko virtualizirana infrastruktura, no on se nije ukorijenio, vjerojatno zbog toga što je predugačak i nespretan. Zato sam i ja sklon usvajanju naziva oblačno računarstvo kao najboljega. Ili barem najmanje lošega.
Što je računalni oblak?
Mnogi ljudi su izrekli definiciju računalnih oblaka na razne načine, no sve te definicije, gledane sa stajališta krajnjeg korisnika, svode se na to da je oblačno računarstvo model korištenja računalnih resursa, servera, diskova, operacijskog sustava i aplikacija, na način da se ti resursi unajmljuju, a ne kupuju. Posljedica takvog pristupa jest da krajnji korisnik plaća samo onoliko računalnih resursa koliko doista i koristi, pay as you go, te da više ne mora voditi brigu oko nabavke hardvera te instalacije i održavanja softvera, OS-a i aplikacija, na tom hardveru.
Ukratko, oblačno računarstvo oslobađa nas od kapitalnih ulaganja u IT infrastrukturu te sindroma viška hardvera i softvera, overprovisioning, koji se događa kada vlastitom IT infrastrukturom moramo pokriti vršna opterećenja, peak demands. U oblaku, kada nam treba više računalnih resursa zbog pojave vršnog opterećenja, unajmimo ih, a otpustimo kada potrebe za njima nestane te nas ne brine hoće li naša skupo plaćena oprema skuplja prašinu ili biti idle i trošiti struju.
Osim toga, možda je najbitnija te uglavnom neizrečena prednost oblačnog računarstva to što se njime, uz suhoparne računalne resurse, kante s nekakvim softverom, zapravo unajmljuje i iskonfigurirana serverska farma u koju su ti resursi uklopljeni! Drugim riječima, kada na, primjerice, Windows Azureu, Microsoftovom oblaku, unajmite nekoliko računala te relacijsku ili neku drugu podatkovnu pohranu, zapravo ste unajmili serversku farmu složenu od najmljenih računala i pohrambenih servisa. Serversku farmu za koju niste utrošili niti sekunde vremena da biste ju uspostavili ili kupili te instalirali njene komponente!
Zašto koristiti računalne oblake?
Zamislite neku aplikaciju, gdje je poželjan masivni paralelizam u obavljanju posla kako bi ga se obavilo brzo i djelotvorno, u realnom vremenu. Takva je aplikacija potencijalni kandidat za pokretanje u oblaku. Ako poslovi koje takva aplikacija podržava imaju i povremena vršna opterećenja koja daleko nadilaze standardna, onda možemo biti gotovo sigurni da se radi o odličnom kandidatu za oblak. Primjeri takvih poslova su:
- Brzo podatkovno rudarenje, data mining, u trgovačkoj djelatnosti s ciljevima poput stavljanja određene robe u prodaju ili sniženje ili pak sugestijama što ponuditi kupcu temeljem njegovih prethodnih kupnji, kao na Amazonu.
- Financijsko odlučivanje poput brzog proračuna kreditnog boniteta ili osiguravateljskog rizika, posebice u proljeće kada počinju građevinski radovi te dodjela građevinskih i stambenih kredita.
- Obrada e-narudžbi u elektroničkoj trgovini, naročito tijekom predbožične kupovne groznice.
- Obrada poreznih prijava nakon kraja poreznog razdoblja.
- Periodičko generiranje elektroničkih geografskih karata sukladno novim mjerenjima, snimkama i informacijama.
- Identifikacija osoba temeljem njihove slike, otiska prsta, šarenice ili drugih biometrijskih podataka, posebice u jeku turističke sezone.
U daljnjem ilustriranju odgovora na pitanje iz naslova ovoga poglavlja koristit ćemo šesti primjer, identifikaciju osoba temeljem njihove slike tj. prepoznavanje lica: facial recognition. Zamislite, dakle, aplikaciju koja pretražuje fotografije sumnjivih osoba i uspoređuje ih sa slikama poslanima s mnogo mogućih mjesta: s raznih aerodroma, od mnogih policijskih ophodnji, s mnogih zaštitarskih kamera, itd. Takva aplikacija ima i vršna opterećenja i potrebu za masivnim paralelizmom stoga što se vrijeme pretrage i usporedbe fotografija skraćuje proporcionalno s brojem paralelnih dretvi koje obavljaju te poslove. Primjer takve aplikacije je ovdje: http://koris.cloudapp.net/FaceRecognition/FaceRecognizer.aspx. Autor sam ja. Upute za uporabu su zdesna.
Dodatak, 26. listopada 2010.: Aplikacija je, nažalost, nedostupna od prve polovice listopada 2010. jer je Microsoft onemogućio sve CTP račune građanima zemalja u kojima još ne postoji komercijalni Azure, a u njih spada i Hrvatska.
Kada sam prvi puta pokrenuo prepoznavanje slika, samo jedno virtualno računalo, s jednim jednojezgrenim procesorom, je bilo angažirano za pokretanje procesa, takozvane radne role, worker role, zaduženog za prepoznavanje slika. Svako prepoznavanje je trajalo između 12 i 14 sekundi.
Želeći iskoristiti mogućnost masivnog paralelizma pri obradi podataka te znatno skratiti vrijeme potrebno za prepoznavanje lica, prijavio sam se na Azure Developer Portal, otišao na prikaz postavki moje aplikacije i samo promijenio količinu virtualnih računala, stavku zaokruženu crvenim, s 1 na 4.

Nakon spremanja te promjene, trebalo je par minuta da Windows Azure obavi posao uključivanja dodatnih računala u moju serversku farmu. Tada je vrijeme prepoznavanja skraćeno te traje između 2,5 i 4 sekunde.
I tada sam osjetio što sam napravio: s par klikova pokrenuo serversku farmu koja se za par minuta zavrtila i smanjila vrijeme obavljanja posla oko 4 puta, proporcionalno količini novoangažiranih virtualnih računala. Sam, bez ičije pomoći, bez nabavke dodatna 4 servera, bez možebitnih dobavnih muka, bez gubljenja vremena za instalaciju tih servera i njihovo poslagivanje u farmu… fantastično!
Mogu samo zaključiti da računalni oblaci sasvim sigurno neće istisnuti dosadašnje oblike korištenja računarstva, pa tako niti nabavku vlastitih servera, ali će jamačno postati moćno sredstvo korištenja informacijskih tehnologija. No, to je već druga priča, za neki drugi blog-zapis.
O prepoznavanju lica
Za prepoznavanje lica u ovoj mojoj aplikaciji korištena je Emgu CV biblioteka, .NET omotač oko Open CV biblioteke. Ako se malo detaljnije poigrate s raznim slikama, vjerojatno ćete primijetiti da baš i ne prepoznaje Bog zna kak’ dobro neke složenije portrete, no to i nije toliko bitno: bitna je demonstracija moći oblaka kroz paralelnu obradu podataka.
Natrag