211service.com
Mniej niezdarny kod dla chmury
Przetwarzanie w chmurze umożliwia firmom przechowywanie i przetwarzanie danych wydajniej niż kiedykolwiek. Ale kod używany do kontrolowania maszyn w chmurze obliczeniowej pozostaje zaskakująco nieporęczny. Teraz niektórzy badacze badają nowe języki programowania do kontrolowania chmury i zapożyczają podejście opracowane w latach 80-tych.
Większość języków programowania nigdy nie została zaprojektowana do obsługi tak wielu komputerów lub tak dużej ilości danych rozsianych po nich. Struktury oprogramowania, takie jak MapReduce firmy Google i otwarty konkurent o nazwie Hadoop, zapewniają przydatne narzędzia do tego celu. Ale jest miejsce, aby proces był znacznie wydajniejszy.
Nie możemy programować komputerów tak, jak jesteśmy, mówi Józef Hellerstein , profesor informatyki na Uniwersytecie Kalifornijskim w Berkeley. Hellerstein jest zaangażowany w projekt o nazwie BUM , którego celem jest opracowanie nowych technik programowania chmury. Ludzie nie mają łatwego sposobu na pisanie programów wykorzystujących fakt, że mogliby wynająć 100 maszyn w Amazon.
Większość programów składa się z instrukcji, które nakazują komputerowi wykonanie serii działań w określonej kolejności. Jedną z dużych zalet przetwarzania w chmurze jest to, że umożliwia podzielenie programu tak, aby różne instrukcje mogły być przetwarzane w tym samym czasie. Ale trudno jest napisać kod potrzebny do tego w większości języków programowania, a ten problem powoduje rozdęte oprogramowanie.
Hellerstein chce umożliwić tworzenie oprogramowania działającego na znacznie większą skalę – na tysiącach maszyn w chmurze – przy użyciu znacznie mniejszej ilości kodu. Aby to zrobić, zwrócił się do badań przeprowadzonych w latach 80. na temat efektywnego programowania baz danych. Hellerstein twierdzi, że technologie baz danych, które mogą gromadzić duże zestawy danych i przetwarzać je na różne sposoby, mogą być szczególnie skuteczne w wykorzystaniu nowej mocy obliczeniowej.
Jednym z powodów jest to, że informacje z bazy danych są często przetwarzane w partiach i nie ma znaczenia, jakiej kolejności komputer używa do obsługi tych partii. Ułatwia to programistom dzielenie zadań bazodanowych między wiele procesorów. Tak łatwo, że programy tego rodzaju są czasami określane jako żenująco równoległe.
Grupa Hellersteina zmodyfikowała stary język o nazwie Datalog, aby umożliwić mu pisanie programów dla chmury. Problem, mówi Hellerstein, polega na ustaleniu, jaka część programu może się wydarzyć jednocześnie, oraz określeniu momentów, w których absolutnie musi się zatrzymać i zebrać informacje o stanie różnych zadań. Grupa pracuje obecnie nad językiem o nazwie Bloom, aby zapewnić programistom przyjazny sposób radzenia sobie z często złożoną składnią bazowego systemu opartego na Datalogu.
Hellerstein ma nadzieję, że Bloom pomoże programistom pisać oprogramowanie dla chmury bez konieczności całkowitego odchodzenia od znanych języków. Grupa Hellersteina projektuje Bloom jako bibliotekę, która może być używana z popularnymi językami, takimi jak Java i Python. Używanie Blooma w jednym z tych języków zachęciłoby programistów do projektowania oprogramowania, które najefektywniej wykorzystuje zasoby dostępne w chmurze. Dzięki temu programiści nie muszą uczyć się zupełnie nowego języka.
Georg Gottlob , profesor w Oxford University Computing Laboratory i ekspert ds. Datalog, mówi, że używanie tego języka do obsługi aplikacji w skali internetowej ma wiele sensu. Mówi, że kiedy wynaleziono Datalog, pojawił się zbyt wcześnie, aby mógł być szeroko stosowany ze względu na ograniczoną moc obliczeniową w tamtym czasie. Gottlob mówi, że wraz z rozpowszechnianiem się przetwarzania rozproszonego język ten przeżywa wielki renesans.
W tym kierunku zmierza przyszłość, mówi Elias Torres, który korzysta z narzędzi przetwarzania w chmurze w kilku start-upach. Kilka lat temu Torres był w stanie wykorzystać prekursora Blooma w projekcie uproszczenia złożonego protokołu dla systemów rozproszonych. To było pouczające, ponieważ mogłem skupić się na danych przepływających przez system – mówi.
W dzisiejszych czasach, mówi Torres, musisz zrozumieć, w jaki sposób dane muszą być przechowywane, porządkowane i udostępniane, aby robić postępy. Każda aplikacja internetowa musi radzić sobie z ciągle rosnącą ilością danych, a Torres wierzy, że programiści uznają, że narzędzia takie jak Bloom będą coraz bardziej przydatne.