211service.com
Mindre klumpig kod för molnet
Cloud computing tillåter företag att lagra och bearbeta data mer effektivt än någonsin. Men koden som används för att styra maskinerna i ett datormoln är fortfarande förvånansvärt klumpig. Nu utforskar vissa forskare nya programmeringsspråk för att styra molnet, och de lånar ett tillvägagångssätt som utvecklades på 80-talet.
De flesta programmeringsspråk har aldrig utformats för att hantera så många datorer eller så mycket data spridda över dem. Programvaruramverk som Googles MapReduce och en öppen konkurrent som heter Hadoop tillhandahåller praktiska verktyg för att göra detta. Men det finns utrymme för att göra processen mycket mer effektiv.
Vi kan inte fortsätta programmera datorer som vi är, säger Joseph Hellerstein , professor i datavetenskap vid University of California i Berkeley. Hellerstein är involverad i ett projekt som heter BOM , som syftar till att utveckla nya tekniker för programmering av molnet. Människor har inte ett enkelt sätt att skriva program som utnyttjar det faktum att de kan hyra 100 maskiner på Amazon.
De flesta program är uppbyggda av instruktioner som talar om för en dator att utföra en rad åtgärder i en viss ordning. En av de stora fördelarna med cloud computing är att det gör det möjligt att dela upp ett program så att olika instruktioner kan bearbetas samtidigt. Men det är svårt att skriva koden som behövs för att göra det med de flesta programmeringsspråk, och detta problem resulterar i uppsvälld programvara.
Hellerstein vill göra det möjligt att bygga mjukvara som körs i mycket större skala – över tusentals molnbaserade maskiner – med mycket mindre kod. För att göra detta vände han sig till forskning som gjordes på 80-talet om att programmera databaser effektivt. Hellerstein säger att databastekniker, som kan samla in stora uppsättningar data och bearbeta dem på en mängd olika sätt, skulle kunna vara särskilt framgångsrika när det gäller att dra fördel av den nya datorkraften.
En anledning är att databasinformation ofta bearbetas i batcher, och det spelar ingen roll vilken ordning en dator använder för att hantera dessa batcher. Detta gör det enkelt för programmerare att dela upp databasuppgifter mellan många processorer. Faktiskt så lätt att program av denna karaktär ibland kallas pinsamt parallella.
Hellersteins grupp modifierade ett gammalt språk som heter Datalog för att göra det möjligt att skriva program för molnet. Problemet, säger Hellerstein, är att ta reda på hur mycket av ett program som kan hända samtidigt, och att identifiera tidpunkter då det absolut måste stanna och samla information om status för olika uppgifter. Gruppen utvecklar för närvarande ett språk som heter Bloom för att tillhandahålla ett vänligt sätt för programmerare att hantera den ofta komplexa syntaxen i det underliggande systemet baserat på Datalog.
Hellerstein hoppas att Bloom ska hjälpa programmerare att skriva mjukvara för molnet utan att behöva gå helt bort från välbekanta språk. Hellersteins grupp designar Bloom som ett bibliotek som kan användas med populära språk som Java och Python. Att använda Bloom inom ett av dessa språk skulle uppmuntra programmerare att designa programvara som använder resurser som är tillgängliga i molnet på ett mest effektivt sätt. Detta sparar också programmerare från att behöva lära sig ett helt nytt språk.
Georg Gottlob , en professor vid Oxford University Computing Laboratory och expert på Datalog, säger att det är mycket meningsfullt att använda språket för att hantera applikationer i webbskala. När Datalog uppfanns, säger han, kom den för tidigt för att användas brett på grund av den begränsade processorkraften vid den tiden. Med spridningen av distribuerad datoranvändning, säger Gottlob, har språket fått en stor renässans.
Det är hit framtiden går, säger Elias Torres, som använder cloud computing-verktyg på flera startup-företag. För flera år sedan kunde Torres använda en föregångare till Bloom i ett projekt för att förenkla ett komplext protokoll för distribuerade system. Det var upplysande, eftersom jag kunde fokusera på den data som flödade genom systemet, säger han.
Nuförtiden, säger Torres, måste du förstå hur data måste lagras och organiseras och nås för att göra framsteg. Alla webbapplikationer måste hantera en ständigt växande mängd data, och Torres tror att programmerare kommer att tycka att verktyg som Bloom blir användbara.