Startup ideja - P2P grid computing
September 17, 2008 – 9:50 pm
I P2P i grid/cloud computing su trenutačno totalno in. Naravno, P2P nam je poznat već dulje vrijeme, od Napstera preko BitTorrenta, pa do stvari poput Skypea ili Joosta (koji, čini mi se, nije baš zaživio). Cloud computing je na prvi pogled noviji izum, dok se ne sjetite stare Sunove “mreža je računalo”.
Dobra stvar kod (trenutne inkarnacije) cloud computinga je činjenica da svoju aplikaciju možete jednostavno hostati, ne brinući o hardveru ili hardverskim problemima, backupima, a ukoliko zatreba, lako stvar skalirate na 1000x više servera uz linearni trošak.
Dakle, stvar je sa perspektive korisnika odlična. Sa perspektive providera resursa za cloud computing, stvar je mnogo kompliciranija - trebate brinuti o svemu od prije navedenog, trebate imati ogromne data-centere, brinuti o njihovom smještaju, napajanju, hlađenju, osiguranju, na toliko veliki broj računala konstatno se događaju hardverski kvarovi, itd, itd. Zato niti ne čudi da su veliki provideri poput Amazona ili Googla primarno i korisnici svojih servisa, koje su tek naknadno odlučili otvoriti javnosti (kad je već cijeli sustav posložen, šteta malo ne zaraditi od njega).
Što nas dovodi do peer-to-peer sustava, koji rade na principu “ruka ruku mije”. Odnosno, svi korisnici u P2P sustavu žrtvuju dio svojih resursa koje ne koriste, kako bi u trenutku kad im treba mogli koristiti resurse drugih u sustavu. Primjeri popularnih P2P sustava su većinom za file-sharing (BitTorrent) i VoIP (Skype).
Ima li preklapanja između grida i p2pa? Novi startup Wuala je primjer peer-to-peer grid storagea (a jel im baš trebao pridjev “social” u taglineu? grr). Nekoliko blogova nedavno je sugeriralo primjenu p2p mehanizma u stvaranju konkurenta Googleu. Jedan je blog (u kontekstu rasprave o novim JavaScript engineima i profiliranju JS-a kao mainstream jezika) sugerirao da se računala korisnika iskoriste i za grid computing. [nažalost nemam link, ne mogu ga izguglati više]
Ovo posljednje mi zvuči kao zanimljiva ideja. Iako članak priča o korištenju JS-a u browserima za computing, problemima latencije zbog HTTP-a i sigurnosnih problema, sama srž ideje uopće nije loša. Na sličnoj ideji temelje se različiti @HOME projekti (SETI, DNA sequencing, razbijanje kriptografskih ključeva, itd), no oni su specijalizirani slučajevi, odnonsno radi se o posebno izgrađenim aplikacijama i sustavima za samo jednu primjenu.
Ako poopćimo stvar i dozvolimo izvođenje bilo kakvog koda (uz obraćanje pažnje na sigurnost sustava i onemogućavanje virusa ili zlonamjernih programa), mogao bi se razviti sustav u kojem korisnici mogu tražiti od drugih ili nuditi svoje CPU (možda i mrežne, ili diskovne kao što to radi Wuala) resurse drugim korisnicima.
Očito, trebalo bi dobro promisliti koju platformu ponuditi programerima za ovakav “grid”, a da stvar bude uspješna. Platforma mora biti već postojeća i popularna i podržavati mogućnost sandboxinga i limitiranja aplikacije koja se izvodi. Vjerujem da je najbolji izbor za tako nešto C#, odnosno .NET framework. Osim što je po defaultu prisutan na najproširenijem OS-u današnjice i ima poprilično dobru podršku i mindshare kod developera, postoje kvalitetne open source implementacije i za Linux i OSX sustave. Tehnološki sličnu stvar već rade u Second Lifeu, dakle očito platforma to može.
U ovakom sustavu, distribuirani program bio bi pisan tako da ga je moguće podijeliti u što veći broj što nezavisnijih zadataka, pojedini moduli distribuirali bi se peerovima, koji bi po završetku zadatka vratili rezultate. Prvi problem s ovim koji mi pada na pamet je mjerenje učinkovitosti neovisno o pojedinom računalu (u istom vremenu različita računala će obaviti različitu količinu posla) ili zadatku (neki zadaci traju dulje, a neki kraće). Jedno moguće rješenje je da platforma na svakom računalu radi benchmark CPU-a i računa faktor na osnovu kojeg se vremena izvođenja zadataka na različitim računalima mogu svesti na zajednički nazivnik.
Ekonomija cijele priče zasnivala bi se na činjenici da neki ljudi imaju slobodnih CPU resursa (npr. većina ljudi dok su na pauzi za ručak) dok drugima treba svaki MIPS kojeg mogu izvući (npr. neki ludi znanstvenici). Korisnici bi za svoje potrebe bili voljni platiti određeni iznos, koji bi se distribuirao peerovima na osnovu obavljenog posla (uz malu proviziju onome čiji je cijeli sustav, iliti startupu iz naslova). Na sličan način (ali za ljude umjesto procesora) radi Amazonov Mechanical Turk te bi se u projektu mogle iskoristiti i neke njihove ideje i rješenja.
Idealno, cijela stvar bi bila open source, za obavljeni posao dobijali bi se i plaćali krediti, tako da bi svi mogli istovremeno sudjelovati i kao naručitelji i kao izvođači poslova, arbiteri bi imali neku malu proviziju, dakle stvorio bi se cijeli jedan mali p2p ekosustav.
Zašto iznosim ovu ideju umjesto da već ove sekunde marljivo kuckam kod (ili bar pripremam term sheet :)? Zato što me zanima što vi, dragi čitatelji, mislite o ideji, što je očito dobro ili krivo, biste li bili voljni raditi na tome, koristiti ili investirati u ovakav sustav? Ima li sve to uopće smisla ili je to samo halucinacija?
I, da, naravno, ako ovakva stvar već postoji, slobodno spomenite. Nije da se sve može naći na Googlu :)


7 Responses to “Startup ideja - P2P grid computing”
Ako sam dobro shvatio, business model je da naručitelji (tj. ljudi koji trebaju nešto distribuirati) plaćaju startupu, a startup onda plaća ljudima koji to vrte na svojim računalima (uz proviziju startupu, naravno)?
Nešto donekle slično već postoji - http://boinc.berkeley.edu/ - no tu se radi više o projektima za ‘javno dobro’, dok tvrtkama (koliko sam ja shvatio) nude samo softver koji mogu vrtiti na vlastitim serverima / LAN-ovima / WAN-ovima. No, projekt je otvoren i sigurno bi se i tu dala pokupiti pokoja ideja.
Ovako ‘odokativno’ mi se ideja čini izrazito interesantnom i izazovnom (s razvojne strane). Volio bih vidjeti par real-world scenarija gdje bi se to moglo koristiti, jer moj ograničeni um u ovih 20-ak minuta koliko razmišljam o tome nije uspio ništa smisliti :). U znanosti svakako, no znanstvenici imaju BOINC, a većina njih ima i svoje poprilično jake gridove ili clustere (npr. http://www.cro-ngi.hr/).
By Nikola Plejić on Sep 18, 2008
Business model bi mogao biti takav kakav si opisao, ali bi možda zgodno bilo staviti i dodatan twist - da je stvar simetrična, odnosno da bilo tko od ljudi koji to vrte na svojim računalima također može biti naručitelj, i iskoristiti svoju “zaradu” kako bi izvršili svoju distribuiranu aplikaciju.
Banalni primjer - imaš neko računalo koje ti većinom stoji više-manje idle, ali jednom dnevno (recimo u 4. ujutro) želiš što brže izračunati nešto - npr. najkraći put između bilo koje dvije točke u social graphu, da budemo in :-) Tebi tvoj computing power ne treba cijelo vrijeme, pa ga možeš dijeliti dalje i skupljati kredite, a u 4. ujutro pokreneš svoj proces i potrošiš sve dnevno zarađene kredite na maksimalnu paralelizaciju procesa.
Ok, primjer je očito umjetan, ali nadam se da pokazuje zašto je simetričnost sustava (tj njegova p2p komponenta) bitna u cijeloj stvari. A činjenica da su konkretni novci u igri trebala bi povećati zainteresiranost korisnika za dijeljenje resursa (naravno sve počiva na činjenici da bi ti resursi još uvijek trebali biti bitno jeftiniji od recimo AWS ili AppEnginea)
Hvala za linku za BOINC, nisam čuo za njih. Sad malo gledam i njih i još par sličnih projekata (distributed.net npr), vidim da oni imaju klijente koji onda mogu također različite poslove izvršavati - još nisam načistu imaju li klijenti već ugrađen kod za izvršavanje zadataka (tako mi se čini) ili ga skidaju sa neta. U slučaju i da ga skidaju, činjenica da je stvar centralizirana preko BOINC-a ti garantira da je kod trusted (ako vjeruješ BOINCu). Dakle ta stvar ne bi skalirala na bilo koje projekte, jer bi centralni autoritet (startup?) morao audit svakog distribuiranog programa raditi.
Što se use-caseova tiče, stvar bi bila korisna za bilo koje zadatke koji su većinom CPU bound. Primjer je računanje PageRanka ili druge slične analize koje imaju vrlo komercijalnu primjenu - a kod komercijalne primjene nećeš naći na hrpu volontera koji će ti htjeti pomoći i donirati svoje vrijeme. Priznajem da je stvar zasad još rješenje u potrazi za problemom, ali intuitivno mi stvar ima smisla.
By senko on Sep 18, 2008
Pitanje je koliko to sad ima smisla. Kako su stvari krenule od Intela, za koju godinu cemo svi u prilicno drugacijem svijetu zivjeti. Pogledaj malo Larrabee ( http://en.wikipedia.org/wiki/Larrabee_(GPU) ). A i NVIDIA i ATI su krenuli u istom smjeru.
Neki od BOINC projekata tvrde da su postigli ubrzanje i do 40x koristeci ATI graficke kartice za proracune. Ako zazivi to pretvaranje GPU-a u CPU, svi cemo doma imati racunala ciji je jedini problem propusnost sabirnica, a kada doma imas toliku racunalnu moc mislim da ce potreba za p2p grid computingom kakav ti spominjes prilicno splasnuti.
By M on Sep 24, 2008
@M: Moguće da će se performanse CPU-a drastično povećati (ja se stvarno nadam :), ali vjerujem da će se paralelno povećavati i težina problema i kompleksnost algoritama koji se koristi, tako da CPU snage nikad dovoljno.
Drugo pitanje je koliko će biti jednostavno razvijati softver koji koristi sav taj novi hardver. Koliko znam, i nVidia i ATI imaju neke svoje jezike koji su možda slični C/C++-u, ali za njih nema već gotovih librarya sa tonama stvari, tako da još nisu baš previše developer-friendly. Nadam se da će se u budućnosti stvar poboljšljati (u smislu da će podrška za GPU-ove biti neki library za postojeći jezik, kao što je to slučaj sa MMX-om).
By senko on Sep 24, 2008
U tome i je stvar. Svi su i prigovarali nedostatku standardizacije, ali Larrabee ima x86 instrukcije. Znaci nema neke pretjerane zajebancije oko postavljanja ili koristenja nekih cudnih jezika. Sve bi se radilo u cistom Cu ili C++u. Sto se tice game developementa predvidja se ponovno povratak na softwarske engine i ne ocekuje se da ce DirectX ici dalje od verzije 10. Cak novi C++0x ima standardiziranu podrsku za multithreading, pa bi to trebalo biti prilicno jednostavnije i portabilnije nego dosada.
A sto se tice realizacije tvoje ideje, pogledaj malo muke na BOINCu dok su projekti jos u beta fazi. To je neopisivo naporno. Imaju problema jer im razliciti procesori vracaju razlicite rezultate (problemi sa implementacijama matematickih funkcija). Moraju svaki paket poslati na min. 3 razlicita korisnika da bi bili sigurni da neki od njih ne vraca lazne rezultate samo zato da dobije kredite, a tu cak i nema upletenih novaca. A o debuggiranju da ne govorimo. Daj zamisli da jedan dron ima nekih problema sa nekim od proracuna; kako planiras provesti debuggiranje? Tko ce to raditi? Ti kao servis ili onaj koji je narucio izracun? Kako ce ici komunikacija? Zar mislis da mozes racunati da onaj dron ima dovoljno znanja da ti moze pomoci oko toga, ili pak da uopce zna jezik kojim ti pricas, ili da mu se uopce da gnjavit s time. Ja ovdje radim software za poznati hardware (mi ga prozivodimo), a i dalje se dogadja da na jednom od tih strojeva nesto neobjasnjivo ne radi.
I kako planiras sklapati ugovore s naruciocem ako ne mozes zagarantirati odredjenu kolicinu procesorskog vremena jer nikada ne znas kada ce ti neki od dronova na godisnji?
A onda ostaje jos pitanje sigurnosti… Tko ce provjeriti kod koji narucioci salju dronovima?
Ne znam, malo mi djeluje kao jako nategnut poslovni plan sa vrlo visokom barijerom koju moras preci prije nego dodje do prve isplative upotrebe. Ali ja zato vjerojatno i radim za veliku bezlicnu korporaciju a ne kao samostalni poduzetnik. :)
By M on Sep 24, 2008
http://www.cpushare.com/
Vidim da nitko ne spominje pa cu ja…
Zapravo, ne mogu rec nista pametnog sto ne pise na stranici. Cini mi se kao dobra ideja, no potraznje nikad nije bilo nesto. Nazalost.
By anoncoward on Sep 26, 2008
@M: I meni djeluje nategnuto, zato piskaram po blogu o tome umjesto da već kontaktiram investitore :-)
@anon: Eeee, vidiš vidiš! Nisam uopće znao za to, hvala na linku! Koliko vidim na prvi pogled, radi se o praktički istoj stvari na koju sam ja mislio, samo što oni koriste virtualizaciju a ne neki sandbox na aplikacijskoj razini.
By senko on Sep 27, 2008