Chmura nie jest homogeniczna: co znajdziesz w jej środku i jak możesz to wykorzystać w swojej pracy?
Na slajdach, które pokazuje się zwykle podczas prezentacji dla klientów, chmurę symbolizuje się prostym obrazkiem chmury. Niezbyt to wyszukane, ale praktyczne. Większość kierowców mało obchodzi to, co siedzi pod maską ich auta – wiedzą, że mają przekręcić kluczyk w stacyjce, wrzucić bieg, wcisnąć gaz. Czemu inaczej miałoby być z właścicielami internetowych serwisów? Was obchodzi przede wszystkim to, czy zapewnimy im ciągłość działania ich usług przy możliwie niskiej cenie.
Wielu jest jednak kierowców z żyłką mechaników, których interesuje to, jak działa sprzęgło czy przepustnica, wielu też właścicieli internetowych serwisów chce wiedzieć, jak działają „silniki” napędzające ich strony. Im właśnie proponuję dziś krótką wycieczkę po wnętrznościach chmur.
Przekonacie się, że chmura (wbrew nazwie) nie jest jakąś homogeniczną substancją, ale splotem specjalizowanych usług IT, udostępnianych przez standardowe interfejsy. Usługi te udostępniane są klientom tak, jak np. firma budowlana może udostępniać swój sprzęt i ludzi do wszelakich prac – czy będzie to budowa drogi, czy kopanie fundamentów pod budynek. Wybór celu zależy od klienta, dostawca skupia się na tym, by dać mu najlepsze narzędzia i eksperckie doświadczenie.
Wiecie już, że możecie w chmurze uruchamiać wirtualne maszyny i przechowywać terabajty danych, płacąc tylko za to, z czego faktycznie korzystaliście. Jeśli wyliczająca płace aplikacja w firmie uruchamiana jest tylko na jeden dzień w miesiącu, po co płacić za miesiąc dzierżawy serwera w tradycyjnym hostingiem? Jeśli sklep internetowy przeżywa oblężenie kilka razy do roku, po co kupować do niego potężne serwery, które przez większość czasu będą działały z kilkuprocentowym obciążeniem? Usługi w chmurze są więc szczególnie atrakcyjne dla tych, którzy działają w nieprzewidywalnym środowisku Internetu.
Ale jakie to usługi? Przyjrzyjmy się temu, co znaleźć można w najczęściej stosowanym rodzaju chmur, znanych jako IaaS – Infrastruktura jako usługa (Infrastructure as a Service). Infrastruktura to bardzo szerokie pojęcie. Obejmuje zarówno sprzęt (co prawda wirtualny), jak i gotowe procesy. Oto one.
Serwery aplikacji
To podstawowy „towar” w asortymencie większości dostawców chmur. Wirtualne serwery, które z perspektywy użytkownika niczym nie różnią się od fizycznego serwera. Działają pod kontrolą wybranego przez użytkownika systemu operacyjnego, wgrywanego z przygotowanych przez dostawcę obrazów maszyn wirtualnych (są to zwykle różne dystrybucje Linuksa, czasem Windows Server, FreeBSD czy Solaris). Charakteryzują się określoną wydajnością, regulowaną liczbą wirtualnych procesorów i wielkością pamięci. Oczywiście, im większe parametry, tym droższy czas pracy takiej maszyny wirtualnej.
Każdy serwer aplikacji działa niezależnie od innych. Niektórzy dostawcy chmur pozwalają na dynamiczne skalowanie parametrów przez hiperwizor (nadzorcę wirtualizacji), w zależności od obciążenia, jakiemu jest poddana, czy aktualnych potrzeb użytkownika, inni wymagają określenia tych parametrów na sztywno przed uruchomieniem wirtualnego serwera.
Tak czy inaczej, w razie wzrostu obciążenia takiej maszyny wirtualnej, chmura może uruchamiać dynamicznie jej kolejne instancje-klony, dzieląc obciążenia między nimi za pomogą tzw. loadbalancingu.
Do czego wykorzystuje się serwery aplikacji w chmurze? Po zainstalowaniu na nich serwera webowego, np. Apache, IIS czy nginx, stanowią podstawę dla serwisów WWW, sklepów internetowych czy aplikacji webowych, ale na tym nie koniec. Serwery aplikacji mogą działać poza publicznym Internetem, uruchamiając aplikacje pisane w najróżniejszych językach – Javie, C#, PHP, Pythonie itd.
Różni dostawcy różnie nazywają ten typ usługi. Amazon Web Services określa ją jako jako Elastic Computing Cloud, Rackspace mówi nazywa ją Cloud Servers, w Oktawave mówimy o Oktawave Cloud Instances. 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 IaaS, chyba że korzystają one z unikatowych dla danej chmury interfejsów programowania. Jeśli jednak mamy do czynienia z typowym sklepem internetowym czy portalem newsowym, wybór dostawcy jest decyzją bardziej biznesową niż technologiczną.
Dyski wirtualne
Serwery aplikacyjne w chmurze gdzieś muszą przechowywać swoje dane. Dla tradycyjnych serwerów wirtualnych sprzedawanych przez firmy hostingowe podstawowym (i zwykle jedynym) parametrem jest wielkość wirtualnego dysku. Parametr ten jest jednak dla aplikacji internetowych zwykle najmniej ważny. Co z tego, że klient dostanie wirtualny dysk 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?
Prawdziwe platformy cloud computing oferują więc klientom nie tylko przypisane dla ich dysków miejsce, ale też gwarantowaną wydajność, wyrażoną parametrem IOPS (Input/Output Operations Per Second), czyli liczbę operacji zapisu/odczytu, jaką dysk może wykonać w ciągu sekundy.
Standardowe dyski SATA zapewniają obecnie 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. Co najważniejsze, 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.
Kiedy warto skorzystać z oddzielnego dysku wirtualnego? Na pewno wówczas, jeśli aplikacja uruchamiana na wirtualnym serwerze jest „zasobożerna” pod względem operacji wejścia/wyjścia, jeśli też zależy nam na większym bezpieczeństwie danych (większość dostawców pozwala na automatyzację procesu wykonywania kopii zapasowych takich wirtualnych wolumenów).
Znane usługi tego typu to Amazon Elastic Block Store, Zadara Storage, Rackspace CloudBlock Storage, oraz nasza – Oktawave Volume Storage.
Obiektowe przechowywanie danych
Standardowa organizacja danych w ramach systemu plików nie jest rozwiązaniem optymalnym dla każdego rodzaju i każdej ilości przechowywanych danych. Obiektowy storage wymyślono po to, by przechowywać duże ilości danych o dowolnym rozmiarze, uzyskując do nich dostęp przez zarówno przez interfejsy webowe jak i programistyczne.
O obiekcie można myśleć jako składającej się z trzech elementów strukturze – klucza, wartości i metadanych: kluczem jest nazwa obiektu, wartością jego zawartość, a metadanymi zbiór par klucz-wartość przenoszących dodatkowe informacje o obiekcie.
Aby użytkownik nie zaginął wśród milionów obiektów, usługi obiektowego storage'u w pewien sposób naśladują drzewiastą strukturę tradycyjnych systemów plików, wykorzystując np. architekturę kontenerów, dzięki którym łatwo określać uprawnienia dostępu do danych, jak również organizować przechowywane dane w grupy, odpowiedniki tradycyjnych folderów.
Wysoka niezawodność, realizowana dzięki rozproszeniu danych na wiele przechowujących dane węzłów, replikujących między sobą operacje na obiektach, bezpieczeństwo dostępu i wysoka szybkość powinny wystarczyć, by zachęcić do korzystania z takiej formy przechowywania danych – ale najważniejsza jest chyba cena, znacznie niższa, niż gdyby się zamierzało wszystkie te pliki przechowywać na dyskach wirtualnych.
Obiektowy storage w chmurze przydaje się przede wszystkim serwisom przetwarzającym duże ilości multimediów – zdjęć, filmów czy nagrań audio. Przy sensownym modelu biznesowym (np. płatności za odtworzenie filmów), można cały koszt przechowywania danych przenieść na końcowego klienta.
Najbardziej znane usługi obiektowego przechowywania danych to Amazon Simple Storage Service, Rackspace CloudFiles czy nasza Oktawave Cloud Storage.
Relacyjne bazy danych
Bardziej skomplikowanych struktur danych nie trzymamy w plikach, ani tym bardziej płaskiej strukturze obiektowej. Dlatego dostawcy chmur starają się zapewnić dodatkowe wsparcie dla aplikacji korzystających z najpopularniejszych relacyjnych baz danych, dostarczając zawierające te bazy maszyny wirtualne, prekonfigurowane zgodnie z najlepszymi praktykami i wzbogacone o zestaw dodatkowych narzędzi do monitorowania kluczowych parametrów bazy (liczby transakcji, zapytań, wielkości czy obciążenia). Zwykle są one uruchamiane wyłącznie na dyskach SSD, chroni się je mechanizmami automatycznego tworzenia kopii (także w trakcie ich działania) i skaluje z użyciem tych samych mechanizmów, co serwery aplikacyjne.
Najczęściej takie usługi baz danych w chmurze wykorzystują MySQL, PostgreSQL, SQL Server czy Oracle DB (w tych dwóch ostatnich wypadkach trzeba dopłacić za licencję Microsoftu czy Oracle'a). Niektórzy dostawcy oferują też nierelacyjne magazyny danych (NoSQL), od jakiegoś czasu chętnie wykorzystywane w działających na dużą skalę serwisach internetowych z treściami dostarczanymi przez użytkowników. Do najbardziej znanych na rynku należą Amazon Relational Database Service, Windows Azure SQL, Rackspace Cloud Database, czy nasza Oktawave Cloud Database.
Kiedy warto sięgnąć po taką usługę? Na pewno jest ona niezbędna dla każdego, kto prowadzi profesjonalny serwis z dużą liczbą transakcji, np. sklep internetowy. Wykorzystanie specjalistycznej instancji bazodanowej pozwala na znaczne zwiększenie wydajności całej aplikacji, dla której uruchomiona na tym samym wirtualnym serwerze baza będzie tylko wąskim gardłem.
Wirtualne sieci prywatne
Nie każdy wirtualny serwer musi być dostępny z Internetu: budując usługi często udostępnia się na zewnątrz tylko serwery webowe, a serwery aplikacji i baz danych „schowane” są przed użytkownikami, komunikując się ze sobą w wewnętrznych sieciach. Wirtualne sieci prywatne, pozwalają na łatwe zbudowanie takiego intranetu w chmurze – kilkoma kliknięciami użytkownik może zwykle przypisać swoje instancje serwerowe do jednej z odizolowanych stref, niedostępnych z zewnątrz.
Zazwyczaj architektura takich usług pozwala jedną instancję przypisać do wielu prywatnych sieci, korzystających z różnych pul adresowych – a to pozwala na przeniesienie w chmurę nawet najbardziej skomplikowanych zestawień serwerów, zapewniając im maksymalne bezpieczeństwo.
Najbardziej znane usługi tego typu to Amazon Virtual Private Cloud, Rackspace Cloud Networks czy nasza Oktawave Private Network. Warto się usługami takimi zainteresować wtedy, gdy przeniesione do chmury aplikacje przeznaczone są wyłącznie do użytku wewnętrznego, np. dla upoważnionych użytkowników, łączących się z prywatną siecią za pomocą klienta VPN.
Monitoring
Czy serwer działa? U nas działa, u klienta działa, a czy działa u klientów naszego klienta? Dostępność w Internecie to nie jest taka prosta sprawa. Usługi monitoringu w chmurze pozwalają na łatwe skonfigurowanie nadzoru nad dostępnością serwisów internetowych działających w chmurze. Kontrola ta realizowana jest jednocześnie z wielu lokalizacji na całym świecie, a w razie wystąpienia problemów system wysyła do użytkownika e-maila z powiadomieniem, będąc też w stanie generować okresowe raporty o dostępności i błędach, jakie wystąpiły w trakcie ewentualnej awarii.
Praktycznie każdy dostawca usług w chmurze zapewnia jakąś formę monitoringu. W Oktawave znajdziesz ją pod nazwą Oktawave Watch.
Szybkie wdrażanie aplikacji
Uruchomione instancje serwerowe można oczywiście dowolnie konfigurować, instalując na nich to oprogramowanie i te usługi, które są niezbędne, ale jeśli potrzeby użytkownika są raczej standardowe, to lepiej jest skorzystać z gotowych systemów szybkiego wdrażania aplikacji i frameworków programistycznych. Pozwalają one zwykle na uruchomienie kilkoma kliknięciami gotowej aplikacji, skonfigurowanej już zgodnie z najlepszymi praktykami.
Jakie aplikacje i środowiska można w ten sposób instalować, to już zależy od dostawcy. Amazon oferuje np. w ramach usługi Elastic Beanstalk możliwość szybkiego wdrożenia aplikacji w Ruby, .NET, PHP czy Pythonie, my w Oktawave dostarczamy zarówno prekonfigurowane aplikacje webowe (np. Joomlę czy phpBB), jak i programistyczne frameworki (Rails czy Django).
W każdym jednak wypadku, dzięki takim usługom czas potrzebny na wdrożenie aplikacji znacząco się zmniejsza – a własnych programistów można skierować do pracy nad kodem, a nie konfigurowaniem serwerów.
Znajdziesz coś dla siebie
Mamy nadzieję, że ta krótka wycieczka po usługach dostępnych w chmurach infrastruktury pomoże Wam w zrozumieniu, czego możecie od ich dostawców oczekiwać i jak najlepiej wykorzystać to, co już oferują. Mi najbardziej zależy na tym, byś jako użytkownik doskonale rozumiał, z jakiego rodzaju technologią obcujesz, kiedy decydujesz się na chmurę i byś umiał z tej technologii precyzyjnie korzystać.
P.S. Zachęcamy Czytelników Spider’s Web do zadawania pytań i pogłębiania wiedzy. Jesteśmy tutaj, by pomóc Wam w adopcji optymalnych i oszczędnych rozwiązań dla Waszych projektów. Przypominamy też, że teraz każdy może przetestować Oktawave za darmo, korzystając z naszej promocji.
Maciej Kuźniar - dyrektor projektu Oktawave. Pasjonat technologii związanych z przetwarzaniem i przechowywaniem danych, posiadający 10 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.