Urmează Cloud 2.0
Tocmai când credeam că industria IT lâncezește și doar piața de consum mai animă atmosfera, o tehnologie uluitoare amenință să răstoarne paradigme consacrate și să reinventeze întreaga industrie de software. Cloud computing pe computerul de pe birou pare o glumă, dar s-ar putea să fie una foarte serioasă.
În naivitatea tinereții, am căzut victimă unei înșelătorii: am fost ademenit de o facultate care promitea să mă învețe informatică, dar s-a dovedit că scopul ascuns mișelește era să mă ucidă cu matematici superioare. Până și cursurile care sugerau tematici informatice începeau cu sigma-algebre, treceau prin leme și teoreme și se terminau cu inevitabilul QED. Marea mea realizare este că am supraviețuit. Nu cred că îmi va folosi vreodată ceva din ce-am învățat pe-atunci, dar astăzi mi-am propus să mai acord o șansă educației mele academice, pornind de la teorema care spune că dacă ceva se poate calcula, se poate calcula folosind doar trei operații elementare: incrementarea unui număr întreg, decrementarea (până la zero) și comparația cu zero (pentru un matematician, presupunerea că memoria este infinită este absolut rezonabilă). Să vedem acum până unde putem ajunge pornind de aici.
Dată fiind simplitatea operațiilor, n-ar fi greu de construit un procesor care să le implementeze. Sigur că ar fi ineficient, dar mă folosesc de acest formalism ca să evit diversitatea procesoarelor și să ajung repede la nivelul la care am un procesor și un limbaj de programare de nivel jos (low level). Cum nimeni nu e atât de nebun încât să programeze într-un astfel limbaj, au fost concepute limbaje de nivel mai înalt, mai apropiate de limbajul uman. Dar cum procesorul nostru nu știe decât trei operații, programele trebuie traduse în ceva ce poate fi executat de procesor, iar de treaba asta se ocupă alte programe, zise compilatoare.
E chiar atât de simplu? Nu chiar, pentru că un computer trebuie să facă o mulțime lucruri aparent mărunte (de exemplu să citească și să scrie niște date de pe un disc hard, să administreze memoria și procesele etc.), așa că pe fiecare computer rulează un program numit sistem de operare, care furnizează servicii de nivel jos programelor. Dar aici lucrurile se complică, pentru că există diverse sisteme de operare, fiecare cu altă organizare a serviciilor, așa că programele dezvoltate pentru un sistem de operare nu rulează pe altul, chiar dacă în final tot la cele trei operații simple se ajunge.
Există diverse soluții pentru a rezolva această problemă, dar cea mai radicală este virtualizarea: un întreg sistem de operare poate fi rulat de un alt sistem de operare (numit gazdă). De fapt, programul de virtualizare “păcălește” sistemul oaspete, făcându-l să creadă că are la dispoziție toate resursele hardware. Gazda interceptează toate apelurile de nivel jos ale oaspetelui și le execută cu propriile mecanisme. Astfel se pot rula mai multe sisteme de operare pe același computer. Această tehnologie a fost perfecționată astfel încât un întreg computer poate fi virtualizat: de fapt, totul se execută pe un server, iar computerul nu face decât să trimită și să primească date, dar se comportă ca și cum totul se petrece local. Cloud computing-ul a dus lucrule și mai departe: un întreg centru de date poate fi virtualizat, comunicarea făcându-se prin internet.
Pe baza unui algoritm extrem de eficient de compresie, OnLive a dezvoltat o tehnologie prin care jocuri (sau mai nou, programe Windows) sunt rulate în cloud, computerului client rămânâdu-i doar rolul de a decompresa și afișa imagini și de a trimite intrările. Însă abia cu vreo două săptămâni în urmă, un startup numit Numecent a prezentat o tehnologie care are șanse să revoluționeze și să bulverseze totul.
Se numește “cloud paging”, se bazează tot pe virtualizare și ca idee pare simplă. Un software oarecare (chiar un sistem de operare) este “pre-virtualizat” (sau “cloudificat”) de un program numit Application Jukebox Studio, imaginea rezultată fiind descompusă în pagini. Pe computerele locale rulează un player, care creează un mediu virtual (sandbox) pe discul local, unde paginile vor fi executate. Când un player solicită o aplicație (de exemplu Photoshop), serverul îi va trimite doar acele pagini care asigură pornirea programului, pe celelalte urmând să le trimită doar când sunt necesare pentru executarea unor funcționalități ale programului. Esențial este că programul nu este executat în cloud, ci local, fără instalare. Mai mult, paginile descărcate sunt păstrate, astfel încât programul poate funcționa chiar și offline. Mai adăugăm un algoritm care prevede care pagini urmează să fie solicitate, un nou sistem de licențiere și toată paradigma se răstoarnă: computerul local revine la putere.
Și teorema cu cele trei operații? M-a ajutat doar să arăt cât de simplă e informatica în teorie și cât de complicată este în practică.