wtorek, 29 listopada 2011

Czy chmura oznacza koniec relacyjnych baz danych?

*)

Poszukując informacji o rozwiązaniach dedykowanych dla cloud computingu, przeglądałem ostatnio gruba książkę opisującą świat baz danych. Książka nie była stara i w zasadzie cała była poświęcona bazom relacyjnym. Nic dziwnego. Większość programistów na świecie pracuje z relacyjnymi bazami danych. Na większości uczelni jest to dominujące zagadnienie w kontekście przechowywania informacji, a SQL jest wdzięcznym tematem kartkówek. Jednak rozwiązania oparte o chmurę już dawno poszły w innym kierunku i powiedziały głośno NO-SQL! Czy zatem relacyjne bazy danych nie są w stanie sprostać nowym wymaganiom?

Relacyjne bazy danych można zastosować prawie w każdym przypadku, jednak ich złożoność może stać się ograniczeniem. W przypadkach, w których liczy się skalowalność, proste rozwiązania wygrywają. Wiele zastosowań znacznie bardziej doceni prostotę modelowania, oprogramowania i administracji, które nie zawsze są udziałem relacyjnych baz danych (Hamilton, 2009).

Chmura stawia nowe wymagania

Zastosowanie koncepcji chmury ma sens wtedy, kiedy poziom wykorzystania zasobów takich jak procesor, pamięć, czy przepustowość łączy, znacznie różni sie w czasie oraz kiedy dostępność usługi powinna być taka sama zarówno w momentach dużego obciążenia (peak) jak i bliskiego średniej. Wtedy to, możliwość szybkiego zwiększenia np. liczby serwerów obsługujących nasze rozwiązanie (skalowania) bez konieczności ich fizycznego zakupienia, staje się nieoceniona. Szczególnie jeżeli z tej mocy obliczeniowej możemy zrezygnować (i w efekcie nie płacić za nią), kiedy już nie będzie potrzebna. Takie możliwości daje chmura (o czym pisałem w poprzednim poście). Możliwości te są szczególnie istotne dla firm, które nie chcą (lub nie mogą) wyłożyć znacznej sumy pieniędzy na sprzęt i infrastrukturę, i pomimo tego, że korzystanie z chmury w ostatecznym rozrachunku może być droższe, zyskana elastyczność będzie dla nich korzystniejsza.

Wielu z dostawców infrastruktury i platform w chmurze twierdzi, że zaletą takich rozwiązań jest brak konieczności podejmowania kluczowych decyzji "z góry". Chmura umożliwia "reagowanie" na zwiększającą się liczbę klientów (użytkowników) i związany z tym wzrost konsumpcji zasobów w miarę upływu czasu. Elastyczność ta dotyczy zarówno infrastruktury (IaaS) jak i platformy (PaaS). Dlatego, przy projektowaniu rozwiązania należy zwrócić uwagę, aby całość dobrze dostosowywała się do obciążenia, również baza danych. Co więcej nie chodzi tu tylko o możliwość zwiększenia ilości zasobów, ale także o czas w jakim jest to możliwe, gdyż zwiększenie obciążenia nie zawsze jest możliwe do przewidzenia (Perry, 2011).

Przy wyborze dostawcy chmury ważna jest ekonomia (musi się to opłacać), ale również bliskość zasobów do użytkownika końcowego (tak by transfer danych był jak najkrótszy, ang. geolocation). Oznacza to, że wraz z ekspansją biznesową firmy, konieczna może stać się przeprowadzka geograficzna lub całkowita zmiana dostawcy usługi. Konieczność tą rozumieją bardzo dobrze dostawcy rozwiązań, silnie pracując nad tym aby ich oprogramowanie było niezależne od infrastruktury (ang. cloud agnostic). Klient powinien mieć możliwość łatwego przeniesienia rozwiązania (i systemu bazy danych) np. między Amazon Web Services, a lokalnym providerem. Ponieważ wśród dostawców infrastruktury również zachodzą dynamiczne zmiany, niezależność od infrastruktury jest obecnie jednym z większych wyzwań dostawców oprogramowania bazodanowego.

Przedstawiciele dostawców systemów baz danych dedykowanych dla chmury, zapytani co będzie wiodącym zastosowaniem ich produktów (killer apps) wskazali m.in.: zastosowania analityczne (ludzie gromadzą duże ilości danych i chcą je przetwarzać), różnorodność urządzeń i aplikacji łączących się bezpośrednio (bez warstwy middleware) z bazami danych (tablet, smartfon, notebook, serwer innego serwisu, ...) oraz gromadzenie i przetwarzanie danych nieustrukturyzowanych tj. zdjęcia, wideo, czy audio (Perry, 2011).

Reasumując, najważniejsze wyzwania jakie stoją przed twórcami baz danych zorientowanych na chmurę to:
  • szybkość i prostota oprogramowania oraz administracji bazy danych,
  • efektywne przetwarzanie różnorodnych danych (również nieustrukturyzowanych) w dużej ilości
  • skalowalność w oparciu o tanią i standardową infrastrukturę (commodity servers, wirtualizacja), 
  • elastyczność rozumiana jako szybkość skalowalności, 
  • elastyczność rozumiana jako łatwość dostępu dla różnych urządzeń/konsumentów danych,
  • uniezależnienie użytkownika od dostawcy chmury (łatwe przeniesienie rozwiązania do innej chmury geograficznie i logicznie).

Bazy w chmurach

Rozwiązań klasy NoSQL jest obecnie bardzo wiele. Zazwyczaj są to rozwiązania oparte o rozproszony system plików i model danych klucz-wartość (ang. key-value data store). Są oczywiście rozwiązania komercyjne tj. Xeround oraz open-source. Wiele firm stworzyło wysokowydajne i skalowalne produkty na własne potrzeby i udostępniło je w oparciu o model open-source.

Miało to miejsce w przypadku bazy danych Cassandra (obecnie projekt Apache), z której korzysta m.in. Facebook (gdzie pierwotnie powstała) i Twitter. Cassandra jest próbą połączenia rozproszonego systemu wzorowanego na Amazon Dynamo i moelu danych opartego o Google BigTable. Jest to baza optymalizowana pod odczyt danych, w której informacja podczas zapisu jest propagowana do wszystkich węzłów. Daje to dostępność informacji do odczytu w wielu punktach (węzłach), ale kosztem spójności - propagacja danych między węzłami trwa i zaraz po zapisie nowej informacji do bazy, przez krótki okres czasu informacja we wszystkich węzłach nie będzie spójna - model spójności tzw. eventually consistent (Bunch, 2010).

Innym przykładem może być HBase - wysokowydajna baza danych również oparta o koncepcję BigTable, będąca "nakładką" na rozproszony system plików o nazwie Hadoop. Projekt Haddop (obecnie prowadzony również w ramach Apache) jest open-source'ową implementacją wypracowanej przez Google w ramach Google File System koncepcji MapReduce. Jest to rozwiązanie, które zostało zaprojektowane na potrzeby przetwarzania wsadowego (batch processing) na dużych zbiorach.

Dalsze przykłady można mnożyć. Bunch et al. (2010) stworzył ciekawe (i jedno z pierwszych) porównanie wydajności różnych rozwiązań klasy NoSQL. Brano pod uwagę rozwiązania, które współpracują z platformą AppScale i opisano m.in. rozwiązania: wspomniane Cassandra i HBase, Hypertable (stosowany przez chińską przeglądarkę Baidu), Voldemort (rozwijany przez LinkedIn), MongoDB (stosowana przez SourceForge, Github i Electronic Arts), MemcacheDB (połączenie frameworku do cache'owania memcached i bazy Berkeley DB) i MySQL (jedyna relacyjna baza danych w porównaniu).

Adopcja nowej technologii

Podobnie jak w przypadku platform programistycznych, adopcja nowych rozwiązań bazodanowych w organizacjach odbywa sie bottom-up (Perry, 2011), czyli nośnikami zmiany są programiści poszukujący nowych, adekwatnych rozwiązań dla swoich problemów. Dlatego też bardzo istotne jest nie tylko udostępnianie produktu do testów jako wersja do ściągnięcia, ale również jako PaaS. Daje to możliwość przetestowania bazy od razu w chmurze, zanim podjęta zostanie decyzja o jej wdrożeniu. Podobnie dzieje się to w małych firmach (które nie mają rozbudowanych działów wsparcia infrastruktury) i dużych korporacjach (w których zorganizowanie serwera i uzyskanie zgody na "postawienie" nowego systemu bazy danych może trwać dość długo).

To jednak nie koniec relacyjnych baz danych

Chmura nie oznacza końca relacyjnych baz danych. Zastosowania, w których relacyjne bazy danych do tej pory dobrze się sprawdzały, nie znikną. Rynek rozszerza się i robi miejsce dla baz typu NoSQL. Co więcej, dostawcy rozwiązań dedykowanych dla chmur sięgają również do rozwiązań hybrydowych - łączących zalety relacyjnych i nierelacyjnych baz danych. Pamiętajmy, że na świecie jest ogromna liczba programistów i inżynierów, którzy kariera zawodowa związana jest głównie z bazami relacyjnymi. Wielu dostawców związanych z chmurą bierze na cel właśnie tą grupę i próbuje tworzyć rozwiązania umożliwiające dostęp do silników swoich produktów przez interfejs SQL (Perry, 2011).

Co więcej, podobnie jak Amazon, także Google oferuje w chmurze zarówno usługę związana z relacyjna baza danych, jak również bazę NoSQL. Widać, że nierelacyjne bazy danych stają się obowiązkowym uzupełnieniem oferty dostawców PaaS i IaaS.

+++
Polecane posty i artykuły:

  • Panel na temat baz danych w chmurze - poniżej (Perry, 2011)




+++ 

*) Rysunek za safecloudcrm.com

Bunch, Chris, Chohan, Navraj, Krintz, Chandra, Chohan, Jovan, Kupferman, Jonathan, Lakhina, Puneet, Li, Yimin, Nomura, Yoshihide (2010), "An Evaluation of Distributed Datastores Using
the AppScale Cloud Platform", IEEE Cloud10: International Conference on Cloud Computing, July, 2010, dostępne pod http://cs.ucsb.edu/~ckrintz/papers/cloud10.pdf, pobrane 28.11.2011


Hamilton, James (2009), "One Size Does Not Fit All", Perspectives - James Hamilton's Blog, obulikowane 3.11.2009, dostępne pod http://perspectives.mvdirona.com/CommentView,guid,afe46691-a293-4f9a-8900-5688a597726a.aspx, pobrane 21.11.2011


Perry, Gava (2011), "Video: Cloud Databases Panel at GigaOm Structure", dostępne pod http://gevaperry.typepad.com/main/2011/06/video-cloud-databases-panel-at-gigaom-structure.html, opublikowane 23.06.2011, pobrane 21.11.2011




poniedziałek, 21 listopada 2011

Chmura dla początkujących.


Ktoś może zapytać: „a co to jest, ta chmura?”. Zacznijmy więc od początku. Usługi w chmurze są ściśle związane z Internetem (symbolizowanym przez chmurę) i polegają na outsourcingu infrastruktury i częściowo systemów informatycznych poza infrastrukturę przedsiębiorstwa i zapewnienie opieki nad nią przez firmę trzecią, która specjalizuje się właśnie w utrzymaniu i udostępnianiu infrastruktury przez Internet. 

Firma outsourcingowa (więcej o outsourcingu można przeczytać tutaj) często zobowiązana jest kontraktem to utrzymywania odpowiedniego poziomu dostępności i jakości usługi (tzw. Service Level Agreement, SLA). Przykładowo, w przypadku indywidualnych kontraktów na outsourcing systemów krytycznych dla przedsiębiorstw mówi się o dostępności rzędu nawet 99,9999%, co oznacza, że usługa może nie być dostępna maksymalnie 52 minuty w skali roku (niedostępność może wynikać z awarii, ale również przerw konserwacyjnych). 

Taka gwarancja oczywiście kosztuje, choć w modelu chmury klient płaci jedynie za to z czego skorzystał (np. faktyczny transfer danych, wykorzystane cykle procesora, ilość wykorzystanej pamięci, itp.), czyli trochę jak komórką bez abonamentu, ale opłacaną za minuty rozmów (ang. pay-as-you-go). Wiąże się to również z tym, że ilość zasobów (np. wirtualnych serwerów, procesorów, pamięci, itp.) dostępnych dla klienta jest zmienna (skalowalna) i zależy od jego faktycznych potrzeb w danym momencie (ang. on-demand). Oznacza to, że klient nie musi się martwić zakupem dodatkowych serwerów, gdy jego systemy znacznie się rozrosną. Zadba o to firma świadcząca usługi w chmurze.

Jakie usługi możemy kojarzyć z chmurą.

Rys. Stos usług dostępnych w chmurze (za Cloud Hosting List, 2011)


Powyższy rysunek przedstawia stos usług związanych z chmurą. Na samym dole mamy usługi związane z infrastrukturą (Infrastructure as a Service lub IaaS) skierowane do projektantów infrastruktury sieciowej w przedsiębiorstwach (Network Architects). Przykładami mogą być Amazon Elastic Cloud Computing (EC2) lub GoGrid

Powyżej sytuują się usługi związane z platformą aplikacyjną/programistyczną (Platform as a Service lub PaaS) skierowane do twórców konkretnych rozwiązań informatycznych, programistów (Application Developers), np. Amazon Web Services lub Google Apps Engine. Warstwa PaaS często korzysta z niższej warstwy infrastruktury (IaaS). 

Najwyższa warstwa, to warstwa usług dostępnych dla użytkowników końcowych (Software as a Service lub SaaS), które bazują na usługach niższych warstw tj. infrastruktury, platformy lub obydwu jednocześnie. Znane przykłady to GoogleDocs, Gmail, czy Dropbox.

Stos na rysunku uformowany został w odwrócony trójkąt, symbolizujący stopień widoczności każdej z warstw dla użytkownika końcowego. Usługi typu IaaS są w zasadzie niewidoczne dla użytkowników końcowych, w przeciwieństwie do usług SaaS, które najczęściej maja postać konkretnych portali.

+++

Artykuły pokrewne:  

Czy chmura to już standard? - o tym czy chmura na świecie i w Polsce jest już standardem dla biznesu i o tym czego jej w Polsce brakuje.

Jeśli nie jesteś tam pomysłowy jak Steve Jobs, lepiej napisz platformę. - więcej o platformach, modelu Platform as a Service i ich drodze na szeroki rynek.

Outsourcing: czy wszystko zawsze musimy robić sami? - więcej o pragmatycznym podejściu do outsourcingu.
+++

Cloud Hosting List (2011), „Was bedeutet SaaS?”, dostępne pod: http://cloudlist.de/was-bedeutet-saas/, opublikowane 12.03.2011, pobrane 17.11.2011.