Zarządzanie pamięciami masowymi, biblioteki taśmowe, macierze, deduplikacja, SAN, NAS i wiele innych ciekawych zagadnień związanych z tematyką storage.
To w sumie drugi wpis na tym blogu na temat przetwarzania w chmurze. Z tego względu dość znacznie go skrócę ale i tak nie uniknę powtórzenia niektórych informacji. Przedstawiona zostanie pewna wizja przetwarzania w chmurze z perspektywy EMC i pod kątem przygotowania do egzaminu ISMowego. Będziemy się także skupiać bardziej na zagadnieniach związanym z użyciem i przeniesieniem infrastruktury storage do chmury.
W celu dopełnienia wiadomości polecam sięgnięcie do wpisu sprzed kilku miesięcy: http://metastorage.blogspot.com/2010/07/cloud-z-gowa-w-chmurach.html
Wyzwania związane z tradycyjnym storage:
Tradycyjne zarządzanie Storage nie jest przystosowane do administrowania wielo-petabajtowymi środowiskami. Rozbudowa infrastruktury, związanej z pamięciami masowymi, jest dokonywana poprzez dodawanie dodatkowych macierzy, co zwiększa stopień skomplikowania architektury, utrudnia zarządzanie i staje się bardzo nieefektywne kosztowo.
Cloud Storage Infrastructure:
Następujące zalety i cechy przetwarzania w chmurze są charakterystyczne dla sekcji storage:
Infinite Scale - chmura umożliwia łatwe zarządzanie, dowolnie dużą ilością macierzy (różnych typów), rozlokowanych w wielu lokalizacjach. Wszystkie zasoby storage tworzą pule o określonych parametrach, które łatwo następnie dzielić i wystawiać do konkretnych hostów. Skalowalność takiego rozwiązania jest w zasadzie nieograniczona, a stopień skomplikowania systemu zarządzającego pozostaje stały.
No Boundaries - chmura agreguje zasoby różnego typy, umieszczone w dowolnych lokalizacjach.
Self-Healing - Chmura skupia się na ochronie danych nie na ochronie infrastruktury fizycznej takiej jak np: dyski czy macierze. Dane mogą być rozdystrybuowane i replikowanie po wszystkich lokacjach obejmujących daną chmurę, przez co nie są wrażliwe nawet na bardzo poważne katastrofy (disaster)
Definicja Przetwarzania w Chmurze (cloud computing):
Cloud Computing is an emerging IT development, deployment and delivery model, enabling real-time delivery of products, services and solutions over the Internet (i.e. enabling cloud services).
Z samą chmurą wiąże się też inny sposób definiowania roli i działania sektora/działu IT. Otóż przechodzi się na model "usługowy" czyli przedsiębiorstwa zamawiają lub wykupują konkretne usługi (np: usługa dostarczenia 10TB powierzchni dyskowej o wydajności 3000IOPS), zamiast zamówienia i administrowania komponentami fizycznymi (np: macierzy + dyski)
W zależności od rodzaju usług które są dostarczane wyróżniamy:
SaaS (Software as a Service)
StaaS (Storage as a Service)
CaaS (Computing as a Service)
HaaS (Hardware as a Serivce)
Cechy chmur:
Usługa jest dostarczana przez firmę zewnętrzną - przedsiębiorstwa mogą wynająć firmę zewnętrzną do dostarczenia im usług IT, które do niedawna musiały być realizowane w dedykowanym data center - mówimy wtedy o tzw: "chmurze publicznej"
Dostęp poprzez Internet - usługi świadczone przez chmurę są dostarczane poprzez sieć , zwykle Internet.
Minimalny lub brak umiejętności IT potrzebny do wdrożenia chmury - rozwiązania chmurowe zwykle są bardzo proste do implementacji, a następnie nie wymagają żadnej wiedzy specjalistycznej w obsłudze.
Provisioning - zasoby są dostarczane "na żądanie". Istnieje duża elastyczność w formułowaniu potrzeb.
Ceny - rozwiązania "chmurowe" zwykle są bardzo atrakcyjne kosztowo. Dodatkowo płaci się tylko za tylko za to, co jest potrzebne.
I w ten sposób doszliśmy do połowy materiału obowiązującego przy egzaminie E20-001.
Teraz chwila wytchnienia, a potem zaczynamy sekcję 3 związaną z procesami BCP ( Bussines Continuity Processes)
Dziś będzie nieco mniej storagowo a więcej o ogólnym trendzie/modzie jaki od pewnego czasu można zaobserwować w IT. O co konkretnie chodzi , ano o chmurę (cloud) i o tzw "przetwarzanie w chmurze" (cloud computing).
Czym jest cloud computing?
Z technicznego punktu widzenia jest to połączenie dwóch metod: Grid Computingu i Utility Computingu.
Grid Computing Opiera się na przetwarzaniu równoległym. Duża ilość serwerów jest połączonych ze sobą w klaster/grid, dzięki temu ich moc obliczeniowa sumuje się i w efekcie dostajemy jedną "strukturę" o bardzo dużej mocy obliczeniowej.
Utility computing Bazuje na wirtualizacji i agregowaniu dostępnych zasobów w tzw: pule ( pools ). Nie interesuje nas już sam fizyczny sprzęt, czy to serwery czy storage, mamy kilka dużych "pojemników" z np: mocą obliczeniową, przestrzenią , przepustowością łącza i w razie potrzeby wydzielamy z niej maszyny wirtualne o zadanych przez nas parametrach.
Łącząc ze sobą grid i utility computing dostajemy w rezultacie wielki zbiornik z którego możemy czerpać ( oczywiście w ograniczony sposób ) i na bazie którego możemy tworzyć komputery wirtualne o wymaganych w danym momencie parametrach. Zbiornik ten nazwijmy chmurą.
Co daje nam zastosowanie modelu "chmurowego" i czym różni się to od tradycyjnego podejścia? Przede wszystkim odrywamy się od fizycznej architektury i wszystkich związanych z tym ograniczeń. Wyróżnia się trzy modele dostępu i wykorzystania zasobów z chmury:
SaaS ( Software as a Service ) Praktycznie wszystko poza końcową aplikacją jest zwirtualizowane i umieszczone gdzieś w chmurze. Użytkownik traktuje oprogramowanie jako usługę , nie martwimy się kombatybilnością aplikacji z naszym komputerem, procesem instalacji czy zapewnieniem zgodności. Zamawiamy konkretne rozwiązanie jakiego dostarcza nam usługodawca i gotowe. Przykłady to choćby usługi dostarczane przez Google ( Docs , Gmail ) lub firmy oferujące miejsce na strony WWW.
PaaS ( Platform as a Service ) Użytkownik ( consumer ) dostaje od dostawcy u środowisko ( platformę ) w którym może pisać własne aplikację. Wszystkie warstwy leżące poniżej tego, czyli między innymi system operacyjny , infrastruktura serwerowa i storage znajdują się w chmurze.
IaaS ( Infrastructure as a Service ) W tym modelu w chmurze znajduje się "jedynie" fizyczna infrastruktura. Serwery, systemy pamięci masowych, osprzęt sieciowy jest ukryty i zwirtualizowany. Na tej bazie użytkownik instaluje i konfiguruje system operacyjny, systemy bazodanowe i końcowe aplikacje.
W zależności od wybranego modelu zmienia się zakres i poziom zasobów, którymi osobiście zarządzamy.
Kolejnym kryterium według którego możemy podzielić chmury, to sposoby w jaki zostanie ona zaprojektowana i stworzona ( a także w późniejszym okresie zarządzana ), tutaj także można wyróżnić trzy kategorie: chmura prywatna, publiczna i hybrydowa.
Chmura prywatna ( private ) Cała infrastruktura stworzona w chmurze jest przydzielone dla jednego przedsiębiorstwa. Może ona być przygotowana i zarządzana przez firmę zewnętrzną lub przez wewnętrzne IT danej firmy. W tym drugim przypadku firma utrzymuje swoje własne serwerownie i ludzi nim zarządzających a z samego "cloud computingu" korzystają ludzie zajmujący się administracja na poziomie OS lub wyżej ( w zależności który model: SaaS, PaaS, IaaS jest wdrożony).
Chmura publiczna ( public ) W tym rodzaju "cloud computingu" zasoby sprzętowe nie są dedykowane pod poszczególnych klientów korzystających z usług firmy dostarczającej "chmurę". Czasem taki model nazywa się "on demand" lub "pay as you go" - klient określa jakie parametry go interesują i płaci dokładnie za o co zamówił ( np: daną moc obliczeniową + pewną ilość pamięci masowej o zadanej wydajności). Jeżeli jego potrzeby rosną to "na żądanie" może zwiększyć zasoby w dzierżawionym przez siebie środowisku ( np: wykupić więcej mocy lub szybszy storage) i te dodatkowa usługa zostanie dodana w locie i bez potrzeby zatrzymywania pracujących aplikacji i maszyn wirtualnych.
Chmura hybrydowa ( hybrid ) Połączenie filozofii chmury prywatnej i publicznej. Pewna część aplikacji i infrastruktury danego klienta pracuje w chmurze prywatnej a część jest umiescowiona w przestrzeni chmury publicznej.
Co daje nam chmura?
Oczywiście teoria teorią i można budować najrozmaitsze modele ale interesujące ( a chmura jest interesująca ) są tylko te które mają realne zastosowania i dodatkowo są w nich lepsze i bardziej innowacyjne niż to co już jest dostępne. Jakie więc są plusy technologi "cloud computingu":
Zwiększone możliwości Korzystając z rozwiązań dostarczanych przez dostawcę "chmury" możemy wykorzystywać nowe funkcjonalności i rozwiązania techniczne bez żmudnego procesu przekonfigurowywania i migrowania aplikacji. Thin Provisioning , Automated tiering , deduplikacja - wykupujemy to jako usługę i praktycznie od razu korzystamy z ich dobrodziejstw.
Zwiększona wydajność Za to odpowiada dynamiczna alokacja zasobów, przykładowo nasza aplikacja w pewnym momencie wykazuje o wiele większe zapotrzebowanie na moc obliczeniową ( tzw: peak )- od razu dynamicznie większa moc zostaje z "chmury" przydzielona - nie ma spowolnienia działania i utraty wydajności.
Mniejsze koszta Przede wszystkim płacimy za to co tak naprawdę wykorzystujemy. W normalnych warunkach projektując środowisko serwerowe musimy dostarczyć taką wydajność żeby nasze serwery mogły obsłużyć momenty gdy obciżenie bardzo rośnie ( wspomniane w poprzednim punkcie "peaks" ). Korzystając z chmury wykupujemy tylko tyle mocy ( i innych zasobów ) ile realnie zużywamy, gdy w krótko trwających okresach będziemy potrzebowali dużo więcej "chmura" automatycznie nam to przydzieli a potem zabierze gdy już szczyt obciążenia minie. Dodatkowo odchodzą nam koszty związane z utrzymaniem infrastruktury ( prąd , klimatyzacja , koszty powierzchni w datacenter itd...)
Ograniczenie ryzyka Chodzi tutaj o ryzyko "przeinwestowania". Nie musimy alokować środków w dużych inwestycjach w infrastrukturę , nie musimy podpisywać dłogoterminowych kontraktów na wsparcie. Nie ma ryzyka że zainwestujemy w coś , co okaże się niepotrzebne.
Łatwa skalowalność Nasze wymagania rosną? Nie ma problemu - po prostu wykupujemy od "właściciela" chmury dodatkowe zasoby. Nie ma problemów z instalacją nowego sprzętu, migracjami ze starych struktur na nowe , pogodzenia ze sobą może nie do końca kompatybilnych architektur itd...
Łatwość zarządzania Koniec z wieloma punktami zarządzania. Osobnym na poziomie storage ( często i tak podzielonym jeszcze na poszczególne macierze, biblioteki itd...) , osobnym zarządzaniem na systemach , zarządzaniem serwerami , mainfraimem , zasobami sieciowymi itd... to wszystko jest już zrobione w "chmurze" , do nas trafia już samo "mięso" pod postacią zasobów gotowych do wykorzystania.
Ograniczenia chmury
Nie ma rzeczy idealnych, chmura to także nie jest "święty grall" stanowiący odpowiedź na wszystkie pytania i bolączki związane z IT. Są dziedziny i konfiguracje które nie radzą sobie za dobrze w chmurze.
Ograniczenia związane z bezpieczeństwem danych. Jeżeli mówimy o chmurze prywatnej to użytkownik ma całkiem sporą kontrolę nad tym gdzie i w jaki sposób przechowywane są jego dane, sprawa się komplikuje jeżeli w grę wchodzi chmura publiczna lub hybrydowa - nasze dane mogą i najprawdopodobniej są rozrzucone po wielu lokacjach, które obejmować mogą więcej niż jeden kraj. Niektóre przedsiębiorstwa ( np: sektor bankowy ) mają bardzo restrykcyjne i narzucone odgórnie wymogi dotyczące przechowywania i dostępu do informacji jakie przetwarzają - umieszczenie ich gdzieś w nieokreślonej przestrzeni chmury może stanowić naruszenie tych standardów.
Ograniczenia związane z wydajnością aplikacji w chmurze Jednym z plusów działania w chmurze jaki został przezemnie wymieniony jest "Zwiększona wydajność". Jest to prawda jeżeli mówimy o sytuacjach gdy nasz program ma właśnie skok w obciążeniu i oprogramowanie chmury może mu dynamicznie i natychmiastowo przydzielić dodatkowe zasoby, są jednak aplikacje których przeniesienie do chmury może powodować problemy z szybkością działania. Są to zwykle aplikcaje działające w czasie rzeczywistym i wymagające bardzo szybkich odpowiedzi ze strony komponentów sprzętowych, ponieważ korzystamy z chmury więc sam końcowy hardware ( dyski , ram , procesory ) może być od nas bardzo odległy ( w sensie sieci IT czyli wiele "hopów" po drodze ), co z kolei spowoduje że opóźnienia będą na tyle duże iż nie damy rady zaspokoić potrzeb aplikacji działającej w "real-time"
Obawy związane z dostępnością danych i aplikacji Migracja do chmury może także budzić obawy dotyczące dostępności do danych w niej umieszczonych. Normalnie przedsiębiorstwa budują swoje polityki tzw "zachowania ciągłości" (eng: bussines continuity ) zawierające różne mechanizmy zabezpieczania się przed utratą danych , od stosowania redundantnych struktur na każdym poziomie i redukowania tzw SPOFów ( eng: Single Points of Failure ) aż po dublowanie całych centrów obliczeniowych i rozmieszczanie ich w różnych częściach kraju a następnie synchronizowanie i replikowanie zasobów między nimi. Korzystając z chmury publicznej użytkowanik końcowy nie ma de facto takiego wglądu w strukturę i zabezpieczenia jakim podlegają jego dane, musi pod tym względem zdać się na dostawcę danej usługi i umowę SLA jaką z nim podpisuje.
I to by było na tyle w ramach wprowadzenia do "cloud computingu". Jeszcze film z youtube dla tych którzy wolą bardziej interaktywną prezentację:
Do poczytania: "Cloud Computing" w Google i wyników aż nad to ;)