Czym jest chmura obliczeniowa i „cloud computing”?

Ponad 10 lat temu, po raz pierwszy zacząłem regularnie słyszeć o „cloud computingu”, czyli przetwarzaniu w chmurze. Internet był wtedy czymś niepowszechnym, (po)wolnym i wciąż dość hermetycznym.

Na naprawdę szybkie łącza mogły liczyć jedynie korporacje, duże firmy czy instytucje rządowe, a przeciętny użytkownik od jakiegoś czasu zachwycony korzystał z Neostrady, która była jak objawienie po przesiadce z łącza telefonicznego. Mimo tego, już wtedy „chmura” stała się modnym słowem w świecie IT i nowych technologii. Czytasz gazetę, włączasz TV, otwierasz lodówkę – a tam chmura. Problem w tym, że mało kto wiedział o co w tym tak naprawdę chodzi. Ja również błąkałem się we mgle… a może w chmurze? Zacznijmy od początkowego fragmentu definicji z Wikipedii: Chmura obliczeniowa – model przetwarzania danych oparty na użytkowaniu usług dostarczonych przez usługodawcę. I to jest właśnie jeden z największych problemów związanych z tym terminem. Jego semantyczne znaczenie jest wyjątkowo szerokie i we współczesnym Internecie właściwie ciężko znaleźć coś, co nie jest chmurą lub nie jest w pewien sposób oparte o cloud computing. O jakim computingu/przetwarzaniu mówimy? Znowu z pomocą przychodzi nam Wikipedia: Przetwarzanie danych – przekształcanie treści i postaci danych wejściowych metodą wykonywania systematycznych operacji w celu uzyskania wyników w postaci z góry określonej. Mówimy zatem o przetwarzaniu danych na wszystkich poziomach – od tych nisko do wysokopoziomowych. Mogą być to zarówno zwykłe operacje binarne, jak i operacje na tekście pisanym.

cloudcomputing-(1)

Spróbujmy jednak, na potrzeby tego wpisu, doprecyzować co będziemy nazywać chmurą obliczeniową i jakie są jej najważniejsze cechy. Zacznijmy od zdefiniowania przez zaprzeczenie. Chmurą (oczywiście) nie jest przetwarzanie danych lokalnie – używając naszego lokalnego, dysku, procesora i pamięci RAM. Czy cloud computing jest więc zwyczajnym wykorzystaniem zasobów zdalnych (przez sieć LAN czy Internet) do przetwarzania informacji? Można powiedzieć, że jest to warunek konieczny, ale niewystarczający. Kolejnym koniecznym warunkiem jest dostarczenie użytkownikowi usługi, a nie produktu. Jak to rozumieć? Posłużmy się dwoma przykładami. Pierwszy z nich to sieć elektryczna i medium, jakim jest prąd. Użytkownik płaci za usługę – dostęp (i wykorzystanie) prądu z sieci elektrycznej. Nie obchodzi go infrastruktura, elektrownia, obciążenie linii średniego i wysokiego napięcia, itd… Interesuje go usługa – napięcie w gniazdku, prąd zasilający domowe urządzenia. Przeciwnym podejściem byłoby wykorzystanie domowego generatora prądu i zasilanie gospodarstwa we własnym zakresie – a to wiązałoby się z kupnem tego generatora, dostarczaniem paliwa do niego, regularnym serwisowaniem czy wymianą go po kilku latach. Kupując generator, kupujemy produkt. Podpisując umowę z dostawcą energii elektrycznej – kupujemy usługę dostarczaną nam przez sieć energetyczną. Jak przenieść to na realia przetwarzania w chmurze? Pomyślmy o składowaniu informacji. Standardowe „niechmurowe” podejście kup produkt, to nabycie lokalnego dysku twardego lub fizycznego serwera u zewnętrznego dostawcy. Podejście cloud computing, czyli kup usługę, to zapłacenie za wybraną przestrzeń dyskową i dostęp do niej przez sieć (np. Internet). Klient płaci za usługę, a nie fizyczny dysk, więc nie musi martwić się gdzie dokładnie składowane są jego dane. To dostawca usługi ma zapewnić dostępność danych, stabilność łączy, szybkość transmisji czy bezpieczeństwo. Podsumowując – chmura to rozporoszone zasoby obliczeniowe i dyskowe oraz dostęp do nich na zasadzie korzystania z usług za pomocą łącza danych. Zasada działania polega więc na przeniesieniu obowiązku świadczenia usług na serwer i umożliwienie stałego dostępu poprzez komputery klienckie. Dzięki temu ich bezpieczeństwo nie zależy od tego, co stanie się z lokalnym komputerem, a szybkość usług wynika z mocy obliczeniowej serwera.

cloudcomputing-(2)

Historia i możliwości

Skoro zawęziliśmy już definicję przetwarzania w chmurze, to warto wspomnieć o historii i początkach tego podejścia. Pochodzenie samego terminu nie jest do końca jasne, ale w świecie nauki chmurą zwykło się nazywać duże zbiory obiektów, które widziane z daleka zaczynają tworzyć całość i tak się właśnie je opisuje, bez zagłębiania się w szczegóły i elementy składowe. To określenie bardzo dobrze oddaje podejście do oferowania usług w chmurze – gdzie infrastruktura, serwis czy administracja nie jest w obrębie zainteresowań odbiorcy końcowego.  Sam termin pierwszy raz pojawia się w wewnętrznym dokumencie, który trafił do pracowników firmy Compaq w roku 1996. Na trwałe do świadomości opinii publicznej trafił jednak dopiero wtedy, gdy Jeff Bezos ze swoim Amazon.com wprowadził na rynek usługę Elastic Compute Cloud. Podstawową ideą stojącą za chmurą obliczeniową można dostrzec jednak już w rozwiązaniach z lat 50-tych, kiedy zasoby dużych komputerów typu mainframe były udostępniane lokalnym komputerom-klientom o prawie zerowej mocy obliczeniowej. Na kolejny duży przełom trzeba było czekać do lat 90-tych, kiedy to firmy telekomunikacyjne zaczęły oferować wirtualne sieci prywatne (VPN), pozwalające na korzystanie z porównywalnej jakości usług, co za pomocą łącz point-to-point, zapewniając jednak zauważalnie niższą cenę. Po roku 2000 wiele dużych koncernów branży IT zainwestowało w rozwój własnej chmury, a więcej o obecnej sytuacji na rynku napiszę w dalszej części tego wpisu.

Jak ustaliliśmy wcześniej, pojęcie chmury jest bardzo szerokie i niejednoznaczne – w rozległym znaczeniu, przetwarzaniem w chmurze jest wszystko, co jest przetwarzane poza lokalną zaporą sieciową. Na potrzeby tego wpisu operujemy jednak węższym zakresem znaczeniowym i utożsamiamy chmurę ze zdalnymi usługami dostępnymi z komputerów i urządzeń klienckich. No właśnie – dostępnymi usługami. Jakimi konkretnie? Przyjrzyjmy się trzem najważniejszym. Zacznijmy od najniższej warstwy całego systemu idąc po kolei w górę:

IaaS (Infrastructure as a Service) – czyli infrastruktura jako usługa. W ramach tego rozwiązania klientowi dostarczana jest infrastruktura informatyczna, czyli sprzęt, oprogramowanie i serwis. Użytkownik płaci za konkretną ilość zasobów – przestrzeń dyskową czy określony zasób pamięci i mocy obliczeniowej. Nie oznacza to jednak, że sprzęt został fizycznie przydzielony klientowi. Hardware może być wymieniany, dublowany i rozproszony, a odbiorcę końcowego interesują jedynie dostępne zasoby. W praktyce, wykorzystuje się tu często izolowane maszyny wirtualne z obrazem systemu operacyjnego gotowego do zainstalowania.

PaaS (Platform as a Service) – czyli platforma jako usługa. Jak sama nazwa wskazuje, dostawca zapewnia nam dostęp do całej platformy obliczeniowej – zwykle jest to zainstalowany już system operacyjny z środowiskiem uruchomieniowym, bazą danych i web serwerem. Twórcy aplikacji i rozwiązań internetowych mogą tworzyć i uruchamiać swoje oprogramowanie „w chmurze” bez konieczności inwestowania i utrzymywania zarówno sprzętowych, jak i programowych warstw infrastruktury sieciowej. Przykładami dostawców takich rozwiązań są choćby Microsoft Azure, Amazon Web Services czy Google App Engine.

SaaS (Software as a Service) – czyli oprogramowanie jako usługa. To temat, który najbardziej powinien zainteresować pojedynczych odbiorców usług i fanów urządzeń przenośnych. Najprościej rzecz ujmując, jest to umożliwienie dostępu do aplikacji, które cały swój „silnik” mają w chmurze. Przykładem może być Google Docs czy Office Online, do których dostęp uzyskujemy przez przeglądarkę. W przypadku płatnych usług, nie kupujemy produktu jako takiego, a jedynie dostęp do niego na określony czas – najczęściej na miesiąc lub rok.

Ok, ale po co to wszystko? Dlaczego nie możemy korzystać z lokalnych zasobów? Dlaczego nie możemy kupować oprogramowania na własność? W skrócie – dla wygody i zmniejszenia ponoszonych kosztów. Ale po kolei. Chmura to skalowalność – potrzebujemy więcej zasobów w postaci przestrzeni dyskowej, mocy obliczeniowej czy transferu? Dwa kliknięcia i załatwione – bez konieczności zmagania się z restrukturyzacją istniejącej infrastruktury. Pomocne jest też API oparte najczęściej na standardzie Representational State Transfer (REST), które pozwala maszynom zewnętrznym na interakcję z chmurą w podobnym zakresie, co żywy użytkownik. Dzięki dużej, złożonej infrastrukturze spadają też ceny usług i eliminowana jest konieczność ponoszenia nakładów finansowych na utrzymywanie własnej infrastruktury. Zaletą jest też brak zależności od sprzętu. Komputer czy tablet są tylko klientami, interfejsem dla usług, które „gnieżdżą się” na serwerach w chmurze. Uszkodzenie lokalnego sprzętu nie skutkuje utratą danych czy brakiem dostępu do usług. Zaletą jest też łatwiejsze monitorowanie wydajności i optymalizacji naszych aplikacji czy infrastruktury wirtualnej. Co jeszcze? Wielodostęp do wspólnych zasobów (współpraca), niezawodność czy bezpieczeństwo – choć to ostanie, to sprawa sporna i zależna od wielu czynników.