Maciej Kuźniar: Słownik pojęć związanych z chmurą obliczeniową, czyli wszystko, co musisz wiedzieć o cloud computingu
Chmura obliczeniowa zakorzeniła się w naszym życiu codziennym do tego stopnia, że coraz trudniej jest przeciętnemu użytkownikowi ignorować jej obecność. Czasem jednak terminologia związana z tą dynamicznie rozwijającą się gałęzią usług internetowych potrafi być niejasna. Postanowiliśmy przygotować więc materiał wprowadzający dla osób, które nie miały jeszcze okazji zagłębić się w tajniki chmury obliczeniowej, tak by nie czuły się zagubione podczas wyboru właściwych produktów i usług.
W poniższym artykule, rozpoczynającym na Spider’s Web nowy cykl poświęcony zagadnieniom związanym z chmurą obliczeniową, zaczynamy od zamieszczenia słowniczka najważniejszych pojęć. Wyjaśniamy w nim krótko i zwięźle takie terminy jak wirtualizacja, hiperwizor, serwer wirtualny, storage blokowy, IOPS, tier dyskowy czy storage obiektowy. Porównujemy też modele chmury, takie jak IaaS, PaaS i SaaS.
Poniższy tekst to zaledwie zalążek większej serii materiałów, w których systematycznie będziemy poszerzać poruszone tutaj tematy. W naszym cyklu publikacji będziemy również posiłkować się tym, co już w przeszłości zostało opublikowane na łamach Spider’s Web w postaci właściwych odniesień.
Słownik pojęć podstawowych
Zaczniemy od zapoznania się z podstawowymi pojęciami, które będą się pojawiać w kolejnych tekstach traktujących o chmurze obliczeniowej.
Wirtualizacja
Punktem zerowym na drodze do poznawania chmury jest zrozumienie pojęcia wirtualizacji. W kontekście chmury obliczeniowej, wirtualizacja to możliwość uruchomienia kilku różnych systemów operacyjnych, na kilku odrębnych maszynach wirtualnych, które działają na jednej lub wielu maszynach fizycznych. Oznacza to, że wirtualizacja pozwala na podział zasobów fizycznych, przydzielenie ich do maszyn wirtualnych oraz taką emulację, że system operacyjny ma wrażenie działania na fizycznym sprzęcie.
Oczywiste korzyści płynące z wirtualizacji to oszczędności - zamiast pięciu różnych maszyn, możemy uruchomić jedną i tak rozdzielić jej zasoby, aby pomieściło się na niej pięć zwirtualizowanych środowisk, każde ze swoim systemem operacyjnym. Takie rozwiązanie pozwala na bardziej wydajną utylizacje zasobów, ale z drugiej strony wprowadza jedną z największych zalet dla całej chmury obliczeniowej: uniezależnia środowisko uruchomieniowe od konkretnej maszyny fizycznej. To wprost prowadzi do sytuacji, w której awaria sprzętowa nie musi już wpływać na awarię systemu operacyjnego czy samej maszyny wirtualnej. W razie uszkodzenia sprzętowego zasoby mogą być bardzo łatwo i nawet bez widoczności dla klienta przeniesione do innego zasobu fizycznego, zachowując ciągłość pracy.
Finalnie, zwirtualizowanie środowiska uruchomieniowego pozwala na pełną elastyczność w sposobie jego definiowania oraz skalowania. Teraz, żeby dołożyć do maszyny pamięci RAM, możemy się zalogować do panelu zarządzania i zmienić klasę maszyny. Wcześniej musieliśmy udać się ze śrubokrętem do serwerowni.
Hiperwizor
Hiperwizor (ang. hypervisor) czy też hipernadzorca, to oprogramowanie, które czuwa nad prawidłowym procesem wirtualizacji zasobów. Najczęściej spotykane hiperwizory to:
- Xen,
- Microsoft Hyper-V,
- VMware ESXi.
Wybór hiperwizora może mieć bezpośredni wpływ na dostępność niektórych systemów operacyjnych czy też ich konkretnych wersji - mówimy wówczas o tzw. parawirtualizacji. Jeśli jednak wybierzemy pełną wirtualizację, wówczas w wirtualnej maszynie będziemy mogli uruchomić dowolny OS.
Tutaj warto zaznaczyć, że architektura chmury obliczeniowej Oktawave już w momencie planowania była przemyślana tak, aby całe rozwiązanie było agnostyczne względem hiperwizorów (to znaczy tak, by można je było łatwo wymieniać), choć obecnie korzystamy z - według nas najlepszego obecnie hiperwizora - VMware ESXi, który daje możliwość pełnej wirtualizacji.
Serwer wirtualny
Tak oto przechodzimy do pojęcia serwera wirtualnego, zwanego także maszyną wirtualną. Jest to środowisko uruchomieniowe, które kontroluje wszystkie odwołania oprogramowania do sprzętu oraz do systemu operacyjnego, który został w nim uruchomiony. Innymi słowy serwer wirtualny udostępnia wszystko to, co udostępniłby dla aplikacji serwer fizyczny (moc procesora, pamięć, operacje I/O, przerwania etc.), ale w sposób zwirtualizowany.
Wirtualne serwery z perspektywy użytkownika niczym nie różnią się od fizycznego serwera. Działają pod kontrolą określonego systemu operacyjnego, wgrywanego z przygotowanych przez dostawcę obrazów maszyn wirtualnych (są to zwykle różne dystrybucje Linuksa, Windows Servera, FreeBSD czy Solarisa). Charakteryzują się określoną wydajnością, regulowaną liczbą wirtualnych procesorów i wielkością pamięci.
Różni dostawcy różnie nazywają ten typ usługi. Amazon Web Services określa ją jako Elastic Computing Cloud, Rackspace nazywa ją Cloud Server, w Oktawave mówimy o Oktawave Cloud Instance (czyli o instancjach chmury). Funkcjonalnie nie ma między nimi większych różnic, bez problemów można przenieść aplikacje między serwerami wirtualnymi u różnych dostawców chmury, chyba że korzystają one z unikatowych dla danej chmury interfejsów programowania.
Warto podkreślić, że sam serwer wirtualny w chmurze (czyli tzw. instancja lub jednostka obliczeniowa) to tylko RAM i procesor. Co nakazuje nam wprowadzić i wyjaśnić nowe pojęcie: storage'u blokowego (czyli dysku).
Storage blokowy (dysk)
Storage blokowy należy rozumieć jako wydzielony obszar na fizycznym dysku twardym, który umożliwia zapisywanie i odczytywanie danych w postaci bloków. Jest on szczególnie ważny dla sytuacji, w których musimy często odwoływać się do zasobów danych przechowywanych w postaci plików (np. otwierać je, pobierać z nich dane, zmieniać w nich fragmenty danych), np. systemów operacyjnych czy baz danych. Innymi słowy storage blokowy to odpowiednik dysku twardego komputera.
Ważne jest to, że w chmurze obliczeniowej po uruchomieniu serwera wirtualnego musimy do niego podłączyć dysk (storage blokowy właśnie), aby móc na nim zainstalować system operacyjny i inne aplikacje. Sam dysk możemy w chmurze podłączyć do kilku serwerów wirtualnych, podobnie jak kilka serwerów do jednego dysku.
W Oktawave taka usługa nazywa się Oktawave Volume Storage, u innych dostawców są to np. Amazon Elastic Block Store czy Rackspace CloudBlock Storage.
IOPS
Kolejnym terminem, na który często napotkacie podczas czytania o chmurze obliczeniowej, jest IOPS, czyli operacje wejścia/wyjścia na sekundę - z ang. Input/Output Operations Per Second. Taką wielkością określa się wydajność dysków blokowych podłączanych do serwera wirtualnego. Operacje wejścia/wyjścia to nic innego jak próby zapisu lub odczytu danych z dysku. Im większa jest ta liczba, tym częściej i szybciej dysk może dostarczać dane do procesora, co jest kluczowe dla wydajności wszelkich obliczeń.
Zwiększenie parametrów IOPS stało się obecnie jednym z kluczowych aspektów wydajnych systemów IT, ponieważ pozwoliło wyeliminować tzw. I/O wait, czyli sytuację, w której procesor czeka na storage, ponieważ ten nie jest w stanie dostarczyć mu wystarczająco szybko danych do przeprowadzenia obliczeń. Nie musimy dodawać, jak wielkie ma to znaczenie w czasach Big data.
Tier dyskowy
Tier dyskowy to jego klasa wydajności. Tiery dyskowe charakteryzowane są różnie przez poszczególnych dostawców. Dla przykładu w Oktawave prezentują się one następująco:
- Tier-1: do 1000 IOPS oraz do 300 MB/s ciągłego transferu,
- Tier-2: do 20 000 IOPS oraz do 2 GB/s ciągłego transferu,
- Tier-3: do 50 000 IOPS oraz 3 GB/s ciągłego transferu,
- Tier-4: do 100 000 IOPS oraz 3 GB/s ciągłego transferu,
- Tier-5: do 200 000 IOPS oraz 3 GB/s ciągłego transferu.
Dla tradycyjnych serwerów wirtualnych bardzo często jedynym parametrem jest wielkość wirtualnego dysku. Należy jednak mieć na uwadze, że parametr ten jest dla aplikacji internetowych zwykle najmniej ważny. Co z tego, że klient dostanie wirtualny dysk o przykładowej pojemności 50 GB, skoro dostęp do niego będzie spowolniony działaniem wszystkich innych wirtualnych dysków, znajdujących się na tym samym fizycznym urządzeniu?
Prawdziwa chmura obliczeniowa oferuje klientom nie tylko przypisane dla ich dysków miejsce, ale też gwarantuje ich wydajność, wyrażoną właśnie parametrem IOPS.
Można założyć, że standardowe dyski magnetyczne (z interfejsami SAS/SATA/FC) zapewniają wydajność około 200 IOPS. Wirtualna pamięć dyskowa może zapewnić maszynom wirtualnym, w zależności od wybranej klasy wolumenu, od tysiąca do nawet 200 tysięcy IOPS. Istotne jest to, że klient może nie tylko dowolnie konfigurować dostęp do wolumenów (np. przypisując wielu instancjom serwerowym ten sam wolumen), ale też w każdej chwili zmienić jego parametry.
Koszty tak gwarantowanego dostępu są naprawdę niewielkie, zwykle nie przekraczają kilkudziesięciu groszy miesięcznie nawet dla dużych serwisów WWW, pozwalają jednak dostawcom prawdziwych chmur na kontrolowanie zużycia zasobów przez wszystkich użytkowników, a finalnie - możliwość ich gwarancji.
Storage obiektowy (magazyn danych)
Decydując się na chmurę, warto wybrać takiego dostawcę, który w ramach systemu przechowywania danych oferuje zarówno dyski blokowe (dla systemu operacyjnego oraz baz danych), jak również storage obiektowy, gdzie dane przechowywane są w postaci dowolnych obiektów hierarchizowanych do struktur np. drzew lub list. Storage obiektowy różni się od blokowego przede wszystkim tym, że pozwala na zapisywanie i odczytywanie do niego całych obiektów, bez względu na ich rozmiar - dlatego tak dobrze sprawdza się jako magazyn zdjęć, wideo oraz innych obiektów statycznych.
Kiedy w dysku blokowym liczy się szybkość, z którą procesor może otworzyć jakiś zasób (np. bazę danych), dokonać w niej zmian i ją zamknąć, tak w storage'u obiektowym liczy się możliwość taniego i wydajnego przechowywania dużych obiektów i uniezależnienia takiego storage'u od powiązania z konkretnym serwerem wirtualnym.
Więcej na temat obiektowego storage’u przeczytasz w artykule “Obiektowy storage w chmurze. Hardcore? Nie, to jest dla ludzi!”, który jakiś czas temu ukazał się na łamach Spider’s Web.
Modele chmury
Chmura obliczeniowa trafia do klientów końcowych jako sprecyzowany model. Takich modeli jest kilka. Można jednak śmiało przyjąć, że istnieją trzy główne modele chmury obliczeniowej: IaaS, PaaS oraz SaaS.
IaaS
IaaS (z ang. Infrastructure as a Service), czyli infrastruktura jako usługa. Jest to model, który polega na udostępnianiu użytkownikowi końcowemu sprzętu, czyli infrastruktury (na którą składają się procesory, RAM, dyski blokowe, storage obiektowy oraz interfejsy sieciowe). Zamiast ponosić nakłady finansowe na zakup sprzętu i oprogramowania, klient "wypożycza" je w ramach wykupionej usługi.
Za taką usługę klient płaci w zależności od realnie zużytych zasobów, czyli płaci tylko wtedy, kiedy faktycznie korzysta z infrastruktury. Jeśli infrastruktura klienta nie musi pracować w nocy, to za ten czas klient nic nie płaci.
Z chmurą typu IaaS mamy do czynienia, kiedy mówimy o serwerze w chmurze. Jeśli zatem w ofertach różnych dostawców chmury, w tym również i u Oktawave, spotkacie się z terminem serwera w chmurze, to powinna się Wam zapalić lampka - „IaaS”.
PaaS
PaaS (z ang. Platform as a Service), czyli platforma jako usługa. Przez platformę należy tutaj rozumieć gotowe (lub prawie gotowe) środowisko do uruchomienia aplikacji. Bardzo często odbiorcami takiego modelu chmury są firmy zatrudniające programistów - w takich przypadkach uruchomienie stanowiska do pracy z odpowiednio przygotowanym frameworkiem uruchomieniowym to zaledwie kilka minut. PaaS pozwala koderom na skupienie się tylko na kodzie, a nie na przygotowywaniu całej infrastruktury sprzętowej służącej do jego wykonania lub uruchomienia. Dostawcy PaaS załatwiają całą tę robotę za dewelopera - ma to oczywiste przewagi (szybkość uruchomienia), jak również ograniczenia (deweloper nie ma de facto wpływu na środowisko uruchomieniowe i nie może go dostosować do własnych potrzeb).
PaaS to nie tylko gotowe frameworki dla programistów. Ten model chmury obliczeniowej ma szersze zastosowanie, np. świetnie się nadaje do przeprowadzania testów obciążeniowych.
Na łamach Spider’s Web pisaliśmy już szerzej o modelu PaaS w artykule “Chmura obliczeniowa dla programisty. O czym każdy koder wiedzieć musi”.
SaaS
SaaS (z ang. Software as a Service), czyli oprogramowanie jako usługa. To chyba najczęściej spotykany model chmury, czyli po prostu aplikacje działające w chmurze. Taką aplikacją może być klient pocztowy (np. Gmail), program do edytowania grafiki w przeglądarce internetowej (np. pixlr.com) czy też aplikacja na smartfonie.
W modelu SaaS działa również wiele programów firmowych dostępnych jedynie dla pracowników danej firmy - wszelkiego rodzaju CRM-y, CMS-y, itd. W tym modelu klient nie zajmuje się ani sprzętem, ani środowiskiem do uruchomienia aplikacji, po prostu uruchamia gotowe rozwiązanie. Podobnie jak w wypadku PaaS zaletą będzie szybkość uruchomienia gotowego do pracy środowiska, a wadą całkowita zależność od dostawcy oprogramowania.
Podsumowanie
Dobrnęliśmy do końca, a jeśli dobrnąłeś/aś z nami, to wiesz już wszystko, co trzeba wiedzieć na temat podstaw chmury obliczeniowej. W kolejnych odcinkach nauczymy Cię korzystać z tych zasobów.
Bo wiedz, że dopiero zaczynamy!
PS. Pamiętajcie, że każdy nowy użytkownik Oktawave dostaje na start 25 zł, by móc przetestować swoją maszynkę. Więcej na ten temat znajdziecie tutaj.
Maciej Kuźniar, prezes Oktawave sp. z o.o. oraz główny architekt. Pasjonat technologii związanych z przetwarzaniem i przechowywaniem danych, posiadający 12 lat doświadczenia w pracy dla klientów klasy enterprise (banki, telekomy, FMCG). Autor koncepcji technologicznie wspierających rozwój startupów oraz rozwiązań architektonicznych gwarantujących wysokie HA i SLA dla systemów IT.