Polecamy Waszej uwadze również materiały z serwisu „Trochę Techniki”: Jak wykorzystać chmury? Cloud computing w praktyce
Protoplaści chmury
Internet na wszystkich prezentacjach, wykładach, schematach czy diagramach przedstawiany jest w postaci chmury. Gdy tylko w świecie IT pojawił się ten termin, bardzo wiele firm „zaadaptowało” swoje usługi i szczyciło się posiadaniem „techniki cloud computing”, ale w istocie nie wprowadziły do swojej oferty żadnego nowego produktu. Czy zatem chmura jest wyłącznie szumem marketingowym? Nie, choć pozornie może to tak wyglądać. Inna kwestia, że w żadnym razie nie można mówić tu o nowej technice: chmura łączy w umiejętny sposób te istniejące. Koncepcja rozproszonego przetwarzania danych wyewoluowała ze znanych wcześniej rozwiązań. Przyjrzyjmy się niektórym z nich. Zaznaczamy, że podane przykłady są uproszczeniem i mają na celu tylko pokazanie, jak wiele cloud computing czerpie ze starszych pomysłów.
Mainframe'y
Jedna z fundamentalnych cech techniki cloud computing, rozliczanie za faktycznie zużyte zasoby, pochodzi z czasów, kiedy jeszcze w ogóle nie było komputerów dostępnych dla indywidualnych użytkowników. Istniały tylko duże maszyny, do których dostęp – ściśle regulowany – miały całe zespoły wyspecjalizowanych fachowców, np. naukowców. Cofnijmy się zatem o niemal pół wieku.
Widoczna na zdjęciu „komoda” z „biurkiem” i „maszyną do pisania” to Odra 1003 – pierwszy seryjnie produkowany w Polsce komputer przeznaczony do obliczeń naukowych, wykorzystywany także do sterowania procesami produkcyjnymi w zakładach (zainteresowanych szczegółami technicznymi tej maszyny zapraszamy do warszawskiego Muzeum Techniki).
Ten skonstruowany w 1963 roku model w pewnym sensie można uznać za protoplastę chmury prywatnej (współczesną klasyfikacją chmur według lokalizacji zajęliśmy się w dalszej części). Według Wikipedii w 1976 roku za wykonanie miliona operacji na tym sprzęcie należało zapłacić 49 zł.
Moc obliczeniowa komputera stacjonarnego lub laptopa, rozmiar pamięci, pojemność dysku itp. to cechy produktu, za które płacimy. Po tym jednorazowym wydatku już nie jesteśmy rozliczani np. za przetworzoną przez procesor liczbę operacji czy zapisaną ilość danych. Tymczasem zarówno we wspomnianej maszynie obliczeniowej sprzed pół wieku, jak i we wszystkich współczesnych chmurach moc obliczeniowa oraz wszelkie inne zasoby nie są faktycznie produktem lecz usługą.
Grid computing
Niektórym chmury obliczeniowe kojarzą się z rozproszonym przetwarzaniem, czy też przetwarzaniem sieciowym. To skojarzenie z jednej strony jest prawidłowe: centra obliczeniowe wielu chmur są rozproszone, ale samo rozdzielenie pracy na wiele jednostek połączonych ze sobą w sieć nie tworzy chmury, tak jak nawet najbardziej rozbudowana baza wiedzy nie tworzy sztucznej inteligencji czy choćby systemu eksperckiego.
Ilustracja przedstawia widok interfejsu aplikacji klienckiej Folding@Home, jednego z dwóch najbardziej znanych projektów obliczeniowych wykorzystujących grid computing (drugim jest SETI@Home). Każdy zainteresowany może użyczyć na jego potrzeby mocy obliczeniowej swojego komputera. Wystarczy pobrać z jego witryny domowej odpowiedni program. Automatycznie wykorzysta on moc obliczeniową procesora oraz karty graficznej, oczywiście tylko wtedy, gdy z komputera nie korzysta jego właściciel (procedury obliczeniowe są uruchamiane wraz z wygaszaczem ekranu). Dlaczego to nie chmura? Od strony użytkownika różnica jest ogromna: wszystkie usługi konsumenckie i biznesowe w chmurze zapewniają znaczną interakcję, tymczasem grid computing – nie. Właściciel komputera użyczonego na potrzeby „gridowego” projektu może – jak w przypadku Folding@Home – jedynie podziwiać animację obliczanych struktur białkowych lub innych cząsteczek organicznych i nie ma żadnego bezpośredniego wpływu ani na dane wejściowe, ani na rezultat. Sednem grid computing jest efektywny podział cykli przetwarzania pomiędzy wiele maszyn udostępniających swoje zasoby. Tymczasem istotą chmury, i to każdej bez wyjątku, jest jej usługowy charakter. Ale współczesne chmury i przetwarzanie sieciowe mają bardzo istotny wspólny element: zdolność korzystania z zasobów rozproszonych, choć trzeba pamiętać o różnym sposobie alokowania tych zasobów i wynikającej z tego skalowalności rozwiązania (zainteresowanym polecamy krótki wpis na oficjalnym blogu firmy RightScale Inc., wyjaśniający w ciekawy sposób różnicę pomiędzy grid computing a cloud computing).
Grid computing pozwala obejść ograniczenia infrastruktury obliczeniowej w celu rozwiązania konkretnych problemów, jednak w dalszym ciągu przetwarzanie sieciowe nie pozwala oderwać się od fizycznej architektury. Sieć połączonych w internecie maszyn, których zasoby są wykorzystywane do przetwarzania danego zadania, nie różni się w swej istocie od typowego klastra komputerowego przeznaczonego do obliczeń równoległych. Mówiąc inaczej, grid to taki klaster, w którym rolę węzłów pełnią maszyny zgromadzone nie tylko w obrębie pojedynczej domeny, lecz także dostępne w całym internecie.
Wirtualizacja
Wspomnieliśmy już o łączeniu pojęcia „chmury” z rozproszonym przetwarzaniem. To niejedyne skojarzenie dotyczące chmur. Innym popularnym jest łączenie chmur z wirtualnym superkomputerem znajdującym się w internecie. No właśnie, wirtualizacja... Skoro podstawową cechą chmury jest jej usługowy charakter, to ten model przetwarzania danych musi uwzględniać bardzo zróżnicowane potrzeby potencjalnych użytkowników. Oznacza to, że nie wystarczy dysponować mocą obliczeniową i odpowiednią przepustowością węzła komunikacyjnego pomiędzy centrum danych a internetem, sferą, do której podłączeni są potencjalni usługobiorcy. Konieczne jest elastyczne dostosowanie możliwości infrastruktury do potrzeb klientów, co w praktyce przekłada się na konieczność zwirtualizowania posiadanych zasobów. Choć podstawy teoretyczne wirtualizacji zostały opracowane dość dawno, to dopiero pojawienie się technik wirtualizacyjnych we współczesnych procesorach (m.in. AMD-V i Intel VT-x) umożliwiło efektywne wykorzystanie rzeczywistych zasobów.
W jaki sposób wirtualizacja pozwala wydajniej i elastyczniej wykorzystywać dostępny potencjał? Wyobraźmy sobie, że dysponujemy 10 komputerami o określonej konfiguracji. Jak teraz połączyć pamięć, moc obliczeniową czy przestrzeń na dane wszystkich komputerów w jedną pulę? Samo połączenie ich w sieć nie wystarczy. W takim przypadku, chcąc oferować zasoby swoich maszyn jako usługę, możemy jedynie po prostu wynajmować poszczególne stanowiska, co bliższe jest raczej kawiarence internetowej niż modelowi przetwarzania w chmurze.
Następny etap integracji zasobów to utworzenie klastra (np. typu Beowulf – jak na powyższym zdjęciu). W ten sposób uzyskujemy jeden „superkomputer”, którego moc obliczeniowa – w uproszczeniu – jest równa sumarycznej mocy poszczególnych węzłów, czyli owych 10 stacji roboczych. Zarządzanie takim tworem jest możliwe zarówno poprzez jeden węzeł pełniący rolę terminala, jak też powłokę uruchomioną zdalnie. Co zyskaliśmy? Łatwiejszy dostęp do sumarycznych zasobów swojej infrastruktury. Mamy coś na kształt mainframe'a: możemy prowadzić obliczenia, wykorzystując moc połączonych węzłów, i ściśle rozliczać zużyte zasoby. Jednak to wciąż nie chmura.
W tym momencie wkracza wirtualizacja – implementacja technik wirtualizacyjnych pozwala utworzyć teoretycznie dowolną liczbę maszyn wirtualnych, na których mogą być uruchomione dowolne zadania i usługi. Oczywiście, cały czas trzeba mieć na uwadze w istocie ograniczone zasoby, jednak to ograniczenie jest wyłącznie ilościowe (skończona pojemność pamięci klastra, skończona sumaryczna moc obliczeniowa itp.), a nie narzucone szczegółami konstrukcyjnymi czy infrastrukturą, bo maszynę wirtualną można utworzyć dowolną, dopasowaną do bieżących potrzeb. Efekt będzie najbliższy chmurze, bo otrzymujemy środowisko pozwalające zaoferować skalowalną moc, którą można przydzielić dowolnej liczbie klientów, wirtualizując ich środowiska pracy.
Trzeba jeszcze pamiętać o przygotowaniu konkretnych usług, które będzie można oferować za pomocą zwirtualizowanego środowiska, to już jednak wykracza poza samą wirtualizację.
Przypominamy, że powyższe przykłady są uproszczeniem, ale pokazują, ile chmury czerpią z istniejących już od dawna rozwiązań. Przyjrzyjmy się mniej lub bardziej oficjalnym definicjom chmury.
Czym jest chmura?
Czym jest chmura? Co to znaczy „przetwarzanie w chmurze”, czyli cloud computing? Pojęcia te są na tyle świeże, że nie doczekały się jednolitej definicji. Jest ich kilka.
Zacznijmy od jednego z najpopularniejszych źródeł wiedzy w internecie – Wikipedii, według której cloud computing to (pisownia, gramatyka itp. jak w oryginale):
...model przetwarzania oparty na użytkowaniu usług dostarczonych przez zewnętrzne organizacje. Funkcjonalność jest tu rozumiana jako usługa (dająca wartość dodaną użytkownikowi) oferowana przez dane oprogramowanie (oraz konieczną infrastrukturę). Oznacza to eliminację konieczności zakupu licencji czy konieczności instalowania i administracji oprogramowaniem. Konsument płaci za użytkowanie określonej usługi, np. za możliwość korzystania z arkusza kalkulacyjnego. Nie zakupuje sprzętu ani oprogramowania. Termin „cloud computing” związany jest z pojęciem wirtualizacji. Model „cloud computing” historycznie wiąże się z przetwarzaniem w sieci grid, gdzie wiele systemów udostępnia usługi korzystając z podłączonych zasobów, z tą różnicą, że w „cloud computing” mamy do czynienia z podążaniem zasobów za potrzebami usługobiorcy.
Nieco inaczej pojęcie to definiuje NIST (National Institute of Standards and Technology). Według tej amerykańskiej organizacji standaryzacyjnej cloud computing to:
...nowy model dostarczania i korzystania z zasobów informatycznych, takich jak zasoby obliczeniowe (serwerowe), magazynowanie danych, przepustowość sieci, a nawet aplikacje. Model cechuje się takimi funkcjami, jak samoobsługa na żądanie, duża elastyczność, taryfikacja usług (pay-as-you-use), implementacja puli zasobów i szeroki dostęp do sieci.
Jedno z najpopularniejszych określeń chmury zostało sformułowane przez analityków Gartnera. Według nich cloud computing to:
...styl obliczeń, w którym dynamicznie skalowalne (zwykle zwirtualizowane) zasoby są dostarczane jako usługa za pośrednictwem internetu. Użytkownik nie musi mieć wiedzy na temat tego, w jaki sposób ta usługa jest realizowana, nie musi też zajmować się aspektami technicznymi niezbędnymi do jej działania. Ciekawą opinię na temat chmury przedstawił również Tomasz Kopacz z Microsoftu:
Chmura to pewnego rodzaju abstrakcja dla klienta i to dobrze, że on nie wie, jak to dokładnie działa. Dla klienta chmura to po prostu „gniazdko z mocą obliczeniową”. On tam podłączy jakieś urządzenie, „coś” się wydarzy i jego nie będzie interesowała niedostępność. To ma działać, tak jak jest teraz w przypadku prądu elektrycznego. Klient nie wnika w to, skąd on mu się „bierze”, on go po prostu ma. I ja widzę chmurę jako trend przesuwania IT w kierunku koncepcji spotykanych u innych dostawców infrastruktury (woda, prąd itp.).
Istnieje też teoria, która definiuje chmury jako sam proces przenoszenia pewnych zasobów (danych, aplikacji, serwerów, maszyn, maszyn wirtualnych itp.) z miejsca, w którym jest zlokalizowana dana firma, w inne – np. do centrum danych zapewniającego odpowiedni zestaw usług.
We wszystkich przytoczonych definicjach łatwo zauważyć element wspólny: usługowy charakter chmur, odróżniający te twory od innych wspomnianych rozwiązań. Przejdźmy o etap dalej – jakie są cechy charakterystyczne chmur?
Chmury – cechy charakterystyczne
Jakie kryteria pozwalają uznać dane rozwiązanie za chmurę obliczeniową? Oto kilka podstawowych cech charakterystycznych.
Płatności są ściśle związane z wykorzystaniem zasobów (sprzętu, łącza, aplikacji itp.) – wszyscy usługodawcy oferujący usługi w chmurze pobierają opłaty za ich wykorzystanie na podstawie faktycznego użycia. Jednostkami rozliczeniowymi może być czas korzystania z danej usługi (np. aplikacji), liczba zajętych cykli obliczeniowych, ilość przesłanych bądź składowanych w chmurze danych itp. Na tej metodzie płatności oparte są niemal wszystkie plany rozliczeniowe za usługi w chmurach. Z jednej strony taki model oznacza najczęściej oszczędności: zamiast np. kupować jednorazowo drogą licencję na program dla pewnej liczby stacji roboczych, opłacamy usługę korzystania w chmurze z programu zapewniającego taką samą lub zbliżoną funkcjonalność, np. płacąc co miesiąc niewielką kwotę za każdego użytkownika. Model rozliczania „za zużycie” ma też, oczywiście, swoje wady, którymi zajmiemy się w dalszej części, gdy dojdziemy do zestawienia znanych wad (m.in. ograniczeń) cloud computing.
Funkcjonalność jako usługa. Cechą każdej chmury jest to, że funkcje są oferowane jako usługi, bez względu na to, czy potrzebna jest moc obliczeniowa, pamięć masowa czy np. jakaś aplikacja, np. do zarządzania elektroniczną korespondencją. Z punktu widzenia nabywcy – użytkownika końcowego – nie ma żadnego znaczenia, jak faktycznie jest to realizowane, np. czy korzysta z zasobów fizycznych czy cloud computing, po prostu ma działać.
Skalowalność i elastyczność. Co oznacza, że produkt jest skalowalny i elastyczny? Wyobraźmy sobie serwis internetowy, którego obciążenie nie jest stałe, co w praktyce dotyczy każdej witryny o otwartym charakterze, np. zwykłego sklepu internetowego. Mamy oto sklep internetowy, który umieściliśmy na własnym serwerze. Przy małym ruchu taki sklep może działać nawet na zwykłym domowym pececie. Zdarza się jednak, że ruch gwałtownie wzrośnie, np. z powodu świątecznego szału zakupowego – sami nie będziemy mogli zapewnić odpowiedniej mocy do obsługi bardzo dużej liczby transakcji. Można temu przeciwdziałać, zawczasu rezerwując u usługodawcy odpowiednią pulę zasobów. Zwiększyliśmy skalę, ale nie mamy elastyczności – w efekcie będziemy przygotowani na obsługę wzmożonego ruchu, ale przez większość czasu płacimy za coś, czego nie wykorzystujemy. Jak sobie z tym poradzić? Chmury zapewniają architekturę umożliwiającą zmianę wydajności serwisu w zależności od potrzeb. Oczywiście, tymczasowy wzrost zapotrzebowania na zasoby oznacza także droższą usługę, ale dodatkowe koszty można pokryć dzięki większej liczbie obsłużonych transakcji. Gdy tylko wzmożony ruch się skończy, równie łatwo można zrezygnować ze zbędnych zasobów.
Współdzielenie usług. Cechą każdej chmury jest to, że wielu klientów, korzystając z tych samych usług, używa „fizycznie” tej samej, współdzielonej infrastruktury. W chmurze współdzielone są zarówno elementy fizycznej i wirtualnej infrastruktury, jak też same aplikacje. Oczywiście, rodzi to pytania o bezpieczeństwo („Czy firma A nie będzie znała dokumentów firmy B?”), ale o tym napiszemy więcej w dalszej części.
Internet. Wspólną cechą wszystkich chmur (może z wyjątkiem specyficznych tzw. chmur prywatnych) jest to, że z oferowanych usług użytkownik korzysta za pośrednictwem internetu.
Znamy zatem cechy wspólne wszystkich rozwiązań opartych na cloud computing. Jak można te rozwiązania podzielić?
Usługi w chmurach
Bez względu na to, jak bardzo użytkownik usługi IT działającej w chmurze nie jest zainteresowany jej funkcjonowaniem, klasyfikacja rozwiązań cloud computing jak najbardziej istnieje. Zacznijmy od podziału cloud computing w zależności od zakresu usług.
Kolokacja
Za jedną z najstarszych i najprostszych form „usług w chmurze” uznaje się kolokację, czyli udostępnianie serwerowni. Należy przy tym pamiętać, że udostępniane są zasoby serwerowni (w sensie: pomieszczenia), ale nie same serwery. O odpowiedni serwer, sprzętowy firewall, równoważniki obciążenia, system operacyjny, oprogramowanie musimy zadbać sami. Po prostu w ramach kolokacji dostajemy część klimatyzowanego pomieszczenia z szafą serwerową na własny sprzęt, zasilaniem i ewentualnie wsparciem administratorów. Nie należy mylić kolokacji z hostingiem. Kolokacja uwalnia od konieczności administrowania własnymi serwerami, zapewnienia odpowiedniego zasilania, chłodzenia itp., jednak w dalszym ciągu jesteśmy bezpośrednio odpowiedzialni za sprzęt i działające na nim aplikacje. Oczywiście, tak naprawdę zakres usług nie musi być sztywny, wszystko zależy od umowy pomiędzy usługodawcą a usługobiorcą.
IaaS – Infrastructure as a Service
Krok dalej mamy usługowy model IaaS (ang. Infrastructure as a Service). W takim przypadku nie przenosimy już sprzętu z firmy na zewnątrz, to usługodawca ma nam zapewnić infrastrukturę o wymaganych parametrach: w ramach usługi dostajemy serwery i pozostały niezbędny sprzęt, taki jak sprzętowe zapory. Doskonale znanym od dawna wariantem IaaS są serwery „dedykowane”, czyli jednostki serwerowe o konkretnej konfiguracji i z kompletnym wyposażeniem. Są one dostępne praktycznie u wszystkich liczących się usługodawców internetowych. Jeszcze inny sposób korzystania z IaaS opiera się na wirtualizacji maszyn klienta w infrastrukturze usługodawcy. Mówiąc prościej, polega to na tym, że zamiast dosłownie kupować serwer (lub przekazywać usługodawcy, jak w kolokacji), dostarczamy (lub zamawiamy) maszynę wirtualną o wymaganych parametrach. Po zwirtualizowaniu serwera usługodawca może zaoferować nam większą skalowalność, mniej przestojów itp. Trzeba jednak pamiętać, że w IaaS w dalszym ciągu musimy sami zatroszczyć się o system operacyjny i aplikacje, z których będziemy korzystać poprzez wynajmowaną – fizyczną bądź zwirtualizowaną – infrastrukturę. Serwery „dedykowane” od rozwiązań wirtualnych oferowanych w modelu IaaS różni sposób rozliczania. Kupując taki serwer, płacimy za konkretny sprzęt; oczywiście, do tego może być dołączony odpowiedni pakiet usług regulowany umową, jednak dla naszych rozważań istotne jest to, że choć usługą jest infrastruktura, to wciąż składnikiem kosztów jest jakieś pudełko – fizyczny serwer. Natomiast korzystając z maszyn wirtualnych, płacimy w modelu typowym dla chmur: za faktycznie zużytą moc serwerów. Przykładem takiej zwirtualizowanej usługi IaaS jest rozwiązanie EC2 firmy Amazon.
PaaS – Platform as a Service
Jeżeli cała infrastruktura oferowana jako usługa okazuje się niewystarczająca, następnym etapem jest PaaS, czyli platforma (w sensie: programowa) jako usługa. W takim przypadku usługodawca oferuje wszystko to, co w modelu IaaS, wzbogacając infrastrukturę o system operacyjny i zarządzając nim. Oczywiście, sprowadzanie platformy programowej do roli wyłącznie systemu operacyjnego jest uproszczeniem, jednak chodzi o to, by pamiętać, że PaaS nie oferuje aplikacji dla końcowych użytkowników. W ramach PaaS oprócz zarządzanego systemu otrzymujemy dodatkowe narzędzia software'owe, jednak nie są to końcowe aplikacje użytkowe. PaaS jest modelem najlepiej chyba dostosowanym do potrzeb programistów, którzy chcieliby tworzyć własne aplikacje w chmurze, a następnie zarabiać na nich, oferując je dalej klientom jako usługi. Przykładem „chmury” typu PaaS jest choćby Windows Azure.
SaaS – Software as a Service
W ten sposób doszliśmy do modelu o największym zakresie usług: Software as a Service, co oznacza oprogramowanie jako usługę. W tym modelu usługodawca oprócz sprzętu, infrastruktury, oprogramowania systemowego zapewnia finalne rozwiązania, z których korzysta nabywca. Usługą jest w takim przypadku oprogramowanie zapewniające wymaganą przez klienta funkcjonalność. Model ten jest z pewnością najlepiej znany użytkownikom komputerów, którzy korzystają z niego – niekoniecznie świadomie – bardzo często. Przykładem jego zastosowania są systemy poczty Gmail i Hotmail, takie programy, jak: Office Web Apps, Google Apps, Zoho, a także wiele innych aplikacji niewymagających instalowania i potrzebujących do działania jedynie przeglądarki WWW. Oczywiście, w chmurze są oferowane również dużo bardziej zaawansowane pakiety dla końcowych użytkowników, np. Exchange Online, SharePoint Online, BPOS (ang. Business Productivity Online Services) Microsoftu, Google Apps i rozbudowany system CRM firmy SalesForce.
Kiedy korzystamy z Gmaila czy webowego Outlooka, nie interesują nas żadne szczegóły techniczne, nie wiemy, w jakim centrum danych znajdują się „fizycznie” nasze maile, nie interesuje nas konfiguracja poszczególnych węzłów, używany sprzęt, chłodzenie – słowem: infrastruktura. Nie zastanawiamy się, jaki system jest stosowany do zarządzania milionami skrzynek pocztowych z całego świata, jak realizowane są poszczególne funkcje, których działanie w żadnym razie nie obciąża naszego komputera – wszystko wykonuje się online. Tak naprawdę jedynym elementem, na który mamy jeszcze wpływ, jest sam dostęp do łącza internetowego i jego przepustowość, która zresztą jest czynnikiem mocno ograniczającym nawet największe zalety chmur. Ograniczeniami i zaletami chmur zajmiemy się w dalszej części.
S + S
Klasyfikacja chmur zależnie od oferowanego zestawu usług nie byłaby pełna, gdybyśmy pominęli rozwiązania typu S+S, czyli Software + Services. W tym przypadku nie mówimy już tylko o chmurze, ale o możliwościach, jakie stwarza połączenie modelu SaaS z tradycyjnym sposobem użycia aplikacji. To, że termin Software + Services został zaproponowany przez Microsoft, nie jest przypadkowy: firma ta stara się łączyć zalety tradycyjnego sposobu korzystania z programów z usługami w chmurze. Prostym przykładem może być „tradycyjny” pakiet Microsoft Office 2010 oraz pakiet działających w chmurze aplikacji webowych Office Web Apps lub pakiet Microsoft Business Productivity Online Services (BPOS).
BPOS można wypróbować bezpłatnie. Wystarczy skorzystać z 30-dniowej oferty testowej, którą można aktywować w polskojęzycznej witrynie Microsoft Online Services, wystarczy mieć konto Live ID.
Chmury prywatne, publiczne, „dedykowane” i hybrydowe
Rozwiązania oparte na ogólnie pojętym modelu cloud computing można klasyfikować nie tylko pod względem oferowanych usług, ale również według lokalizacji chmury.
Chmura publiczna
Z chmurą publiczną mamy do czynienia, kiedy zestaw usług IT jest oferowany w całości przez zewnętrznego operatora/dostawcę. Przy czym usługi te są ogólnie dostępne dla każdego zainteresowanego ich wykorzystaniem – odpłatnym bądź nie. Bardziej obrazowo: chmura publiczna to sprzęt, oprogramowanie i usługi zgromadzone w ramach centrów danych należących na ogół do jednego operatora (jak: Amazon, Microsoft, Google). Na przykład ci, którzy mają konta w bezpłatnej aplikacji webowej Hotmail, korzystają z chmury publicznej oferowanej przez Microsoft, a posiadacze kont w popularnym Gmailu używają chmury Google'a. Należy jednak pamiętać, że chmura publiczna nie musi być ograniczona do jednego dostawcy. Można sobie wyobrazić sytuację, że dostawca A oferuje infrastrukturę i platformę programistyczną w chmurze, a firma B tworzy aplikacje w chmurze i oferuje je jako usługi, wykorzystując infrastrukturę dostawcy A. Klient, używający aplikacji firmy B działających w centrach danych dostawcy A, korzysta także z chmury publicznej. Jednak niezależnie od dostawcy cechą wszystkich chmur publicznych jest ich ogólnodostępny charakter. Z usług w takiej chmurze może korzystać każdy posiadacz komputera podłączonego do internetu.
Chmura prywatna
Chmury prywatne to po prostu te, w których odbiorcą usług jest jedna firma. Uważny Czytelnik może zapytać, czym chmura prywatna różni się od własnej serwerowni. Jeżeli chodzi o samą infrastrukturę, to odpowiedź jest prosta: niczym :) Diabeł jednak tkwi w szczegółach, czyli w warstwie aplikacji i zestawie usług. Jeżeli ktoś chce mieć własną, prywatną chmurę, to po prostu najpierw inwestuje w sprzęt i infrastrukturę, a następnie bierze specjalnie przygotowane oprogramowanie: systemowe (np. do zarządzania zasobami i maszynami wirtualnymi) oraz aplikacje (korzysta się z produktów dostawców chmur publicznych, ale równie dobrze można tworzyć własne, jeżeli ma to sens ekonomiczny). Na koniec uruchamia to u siebie. Łatwo zauważyć, że skala przedsięwzięcia wyklucza stosowanie takiego rozwiązania w małej firmie. Teoretycznie możliwe jest zbudowanie takiej chmury nawet na kilku komputerach w prywatnym mieszkaniu, jednak wydaje się to mocno wątpliwe pod względem opłacalności. Dlatego z chmur prywatnych mogą korzystać (i korzystają) duże firmy, które z pewnych względów (bezpieczeństwa, prawnych itp.) nie mogą przetwarzać danych poza własną siedzibą.
Wariantem chmury prywatnej są rozwiązania typu cloud-in-a-box, czyli chmury w „pudełku”. Są to wyspecjalizowane jednostki, najczęściej w postaci mobilnych centrów obliczeniowych umieszczonych w kontenerach. Taki kontener zawiera pełną infrastrukturę: okablowanie, niezbędny sprzęt, system chłodzenia, serwery, oprogramowanie systemowe do zarządzania całością oraz aplikacje usługowe, które mają działać w takiej „przenośnej chmurze”. W takim przypadku nabywca ma pełną kontrolę nad chmurą, czyli ma w istocie swoją chmurę prywatną – musi jedynie zapewnić dostęp do prądu, łącza do sieci oraz ewentualnie odpowiednią ilość chłodziwa (w przypadku centrum z systemem chłodzenia cieczą). Oczywiście, wiąże się z tym również odpowiedzialność za funkcjonowanie i ochronę całości, ale niepodważalną zaletą tego typu rozwiązań jest np. to, że można je stosować w sytuacji, kiedy budowa własnego centrum danych jest niemożliwa bądź nieopłacalna. Stawiając kontener cloud-in-a-box, nie musimy np. zajmować się kwestiami dotyczącymi prawa budowlanego.
Chmura „dedykowana” i hybrydowa
Chmura „dedykowana” to rozwiązanie stworzone dla firm, które chciałyby korzystać z funkcjonalności zapewnianej przez cloud computing, ale nie stać ich na uruchomienie własnej chmury prywatnej, a z publicznej nie mogą bądź z jakichś względów nie chcą korzystać. Niektórzy duzi operatorzy chmur mogą z własnych centrów danych wyizolować część zasobów (sprzętu, usług itp.) na potrzeby konkretnego klienta, tworząc w ten sposób tzw. chmurę dedykowaną. Oczywiście, takie rozwiązanie jest droższe od usług w „zwykłej” chmurze publicznej, jednak znacznie tańsze od budowy własnej chmury prywatnej o podobnej funkcjonalności.
Inną kategorią w tej klasyfikacji są chmury hybrydowe (zwane też chmurami mieszanymi). W tym przypadku sprawa jest prosta: mamy do czynienia z rozwiązaniem, które częściowo jest chmurą prywatną, a częściowo publiczną. Wykazaliśmy już, że chmury obliczeniowe nie są rozwiązaniami ściśle zdefiniowanymi i zamkniętymi. Ich usługowy charakter wymusza daleko idącą elastyczność w zaspokajaniu potrzeb użytkowników.
Gdzie „fizycznie” są chmury?
A co z faktyczną lokalizacją? Pytaniem, które być może nurtuje wielu użytkowników aplikacji webowych, czyli działających w chmurze, jest: „Gdzie tak naprawdę znajdują się moje dane?".
W przypadku największych usługodawców oferujących usługi w chmurze, takich jak Google, Microsoft, Amazon, zasoby chmury pochodzą z centrów danych rozmieszczonych na całym świecie. Gdzie dokładnie? Tego typu informacje ze względów bezpieczeństwa nigdy nie są podawane w pełni.
Wiadomo jednak, że np. Microsoft dysponuje w Europie dwoma dużymi centrami danych: w Dublinie (centrum główne) oraz w Amsterdamie (centrum zapasowe).
Wybór lokalizacji centrum obliczeniowego nie zależy, oczywiście, od czyjegoś kaprysu. Na celowniku operatorów są miejsca, gdzie jest najtańszy prąd oraz odpowiednie łącza i możliwości chłodzenia.
Zalety cloud computing
Spróbujmy podsumować zalety chmur obliczeniowych.
Skalowalność
Każdy użytkownik chmury na pewno doceni swobodę i pozytywne aspekty dynamicznego przydzielania zasobów, gdy tylko okażą się potrzebne. Dzięki temu nie trzeba płacić za utrzymanie infrastruktury „na wszelki wypadek”. Oczywiście, za wykorzystaną dodatkową moc obliczeniową chmury czy obsługę większej liczby transakcji trzeba zapłacić, ale jak już wspomnieliśmy, omawiając przykład sklepu internetowego, większy koszt jest równoważony wzrostem zysku wynikającym ze wzmożonego ruchu.
Dostępność
Usługi w chmurze są dostępne praktycznie z każdego komputera podłączonego do internetu. W tradycyjnym modelu korzystania z aplikacji instalowanych na stanowiskach pracy i licencjonowanych zależnie od ich liczby uzyskanie podobnej funkcjonalności jest po prostu niemożliwe. Warto też pamiętać o tym, że w przypadku programów działających jako usługi w chmurze użytkownik nie musi się martwić o to, czy sprzęt, z którego korzysta, ma odpowiednią wydajność.
Wydajność
Skoro o wydajności mowa: to następna zaleta chmur. Centra obliczeniowe, będące największymi chmurami publicznymi, oferują moc nieosiągalną dla nawet najbardziej rozbudowanej stacji roboczej. Nie bez znaczenia jest też wzrost szybkości wynikający ze skalowania i dynamicznego przydzielania zasobów. To, że wzrost obciążenia nie powoduje przestojów, również przekłada się na efektywność działania danej firmy.
Łatwe zarządzanie
Wiąże się częściowo z dostępnością. Firma korzystająca z kompleksowego zestawu usług w chmurze może nimi zarządzać za pomocą wygodnego w obsłudze oprogramowania i pojedynczego punktu, z którego można zawiadywać całością (aplikacjami w chmurze, przechowywanymi w niej danymi itp.). Nie ma potrzeby tworzenia różnych końcówek administracyjnych do zarządzania poszczególnymi serwerami, macierzami dyskowymi, siecią itp. Do użytkownika chmury trafiają po prostu łatwo zarządzalne zasoby, a to, w jaki sposób są one fizycznie zorganizowane, nie ma dla usługobiorcy żadnego znaczenia.
Elastyczność
Dzięki chmurom w niektórych przypadkach rozwój technik informatycznych jest prostszy niż w klasycznym ujęciu. Zamiast kupować nowe serwery, dbać o ich prawidłową konfigurację, zgodność z istniejącymi rozwiązaniami itp., można skorzystać z gotowych usług w chmurze.
Niezawodność
Budowanie bezpiecznej infrastruktury zapewniającej nieprzerwane działanie kosztuje bardzo wiele. Nakłady inwestycyjne na wspomniane centra obliczeniowe Microsoftu czy Google'a wyniosły kilkaset milionów euro na jeden obiekt. Nic dziwnego zatem, że dostawcy usług w chmurze bardzo podkreślają niezawodną infrastrukturę swoich centrów danych – jest ona nie tylko zaletą, ale wręcz koniecznością, bo warunkuje sukces biznesowy inwestycji. W tradycyjnym modelu korzystania z aplikacji awaria jednego z komputerów w firmie zmniejsza ogólną wydajność. W chmurze nie ma czegoś takiego jak awaria stacji roboczej. Oczywiście, serwery w centrach danych również się psują, ale zadania realizowane przez jednostki, które uległy awarii, są natychmiast przejmowane przez inne maszyny.
Ekologia
Efektywniejsze wykorzystanie pamięci, mocy obliczeniowej i przestrzeni na dane przekłada się na mniejsze zużycie zasobów naturalnych (energii, paliw itp.) niż w tradycyjnym IT.
Wady i ograniczenia
Nie można odmówić chmurom pewnych zalet, ale nie są one jeszcze na tyle uniwersalne, by skutecznie zastąpić tradycyjne. Zatem na zakończenie przyjrzymy się ograniczeniom chmur.
Bezpieczeństwo
Jedną z większych zalet chmur jest ich skalowalność, jednak jeżeli weźmiemy pod uwagę stosowany w nich model rozliczeń, to okaże się, że ta skalowalność w przypadku np. serwisu internetowego niesie z sobą pewne ryzyko. Zapewne większość Czytelników doskonale wie, czym są ataki DDoS. To masowe generowanie wywołań mające na celu przeciążenie i w rezultacie czasowe unieruchomienie wybranych serwerów. Gdy dane są przetwarzane tradycyjnie, taki atak w najgorszym razie powoduje zablokowanie serwerów danej firmy, ale gdy chodzi o duże, bardzo wydajne centra danych, w których zasoby są dynamicznie alokowane według potrzeb usługobiorcy, DDoS może być bardzo kosztowny.
Z bezpieczeństwem wiąże się też kwestia lokalizacji danych. W tradycyjnym modelu przetwarzania ich właściciel najczęściej ma nad nimi pełną kontrolę. Wszystkie znajdują się na dyskach komputerów i serwerach firmowych. W przypadku modelu cloud computing dane, podobnie jak wykorzystywana aplikacja, znajdują się w chmurze, na której działanie – jeżeli jest to chmura publiczna – nie mamy żadnego wpływu.
Ograniczone rozwiązania
Usługi dostarczane z chmury z jednej strony mają kompleksowy charakter i nie wymagają od ich użytkownika wiedzy na temat niezbędnej infrastruktury, konfiguracji itp., ale z drugiej trzeba pamiętać o tym, że zakres tych usług jest ograniczony i faktycznie narzucony przez dostawcę. Na przykład używając chmury Microsoftu, możemy korzystać z usług online w ramach aplikacji Office Web Apps czy pakietu Microsoft Business Productivity Suite, ale nie mamy dostępu do rozwiązań firm trzecich – trudno sobie wyobrazić np. środowisko online do pracy grupowej IBM LotusLive działające w chmurze Microsoftu. Tymczasem korzystając z tradycyjnych aplikacji instalowanych lokalnie, mamy pełną swobodę wyboru rozwiązania.
To ograniczenie to tylko jeden aspekt problemu. Trzeba też pamiętać o tym, że aplikacje są stale rozwijane i aktualizowane. Można sobie wyobrazić sytuację, w której usługodawca wprowadza do usługi jakąś funkcję, jednak nowość okazuje się zbędna dla niektórych firm korzystających z usługi, lub wręcz przeszkadza w pewnych działaniach. To oczywiście uproszczony przykład, ale pokazuje problem swoistego uzależnienia użytkownika chmury od nieuzgadnianych z nim rozwiązań wprowadzanych przez usługodawcę.
Richard Stallman, założyciel i prezes Free Software Foundation, w wywiadzie dla dziennika „The Guardian” wręcz ostrzega przed masowym wykorzystywaniem chmur, jednoznacznie twierdząc, że jest to po prostu pułapka. Jego zdaniem prywatne dane użytkowników nie powinny być powierzane zewnętrznym firmom, bo to oznacza, że chcąc mieć do nich dostęp, uzależniamy się od zamkniętych rozwiązań opracowanych przez ludzi, na których pracę nie mamy żadnego wpływu. Poza tym nie ma żadnej gwarancji, że gdy praca w wielu firmach zostanie ściśle zintegrowana z chmurami, ceny oferowanych usług nie wzrosną. Oczywiście, ograniczenie związane z dostarczanymi rozwiązaniami nie dotyczy chmur prywatnych, w których sami sobie jesteśmy dostawcami rozwiązań.
Wydajność
Z jednej strony wydajność centrów obliczeniowych przetwarzających dane w chmurach jest nieosiągalna nawet dla wielu firm, a więc tym bardziej dla użytkowników indywidualnych. Jednak faktyczna wygoda korzystania z poszczególnych rozwiązań jest ograniczona szybkością transmisji danych pomiędzy komputerem użytkownika a chmurą. Nawet najszybsze centrum danych niewiele zmieni, jeśli czas reakcji programu działającego online będzie fatalny za sprawą łącza o małej przepustowości. Warto też mieć na uwadze, że nawet najszybsze powszechnie dostępne łącza internetowe zapewniają dużo wolniejszy transfer danych niż w przypadku komunikowania się aplikacji z komponentami sprzętowymi komputera, na którym jest uruchomiona. W rezultacie, choć moc pojedynczej stacji roboczej jest daleko mniejsza niż dowolnego centrum obliczeniowego, to istnieje bardzo wiele programów, które jeszcze długo będą działać szybciej, gdy zostaną uruchomione lokalnie. Trudno wyobrazić sobie np. aplikację użytkową lub grę generującą obraz 3D w czasie rzeczywistym i w całości działającą w chmurze, przynajmniej na razie. Jednak gdy przepustowość łączy indywidualnych użytkowników będzie mierzona w gigabitach na sekundę, bardzo możliwe, że wystarczy wpiąć się w chmurę.
Dziękujemy firmie Microsoft za pomoc w przygotowaniu artykułu.