Z perspektywy administratora lub inżyniera IT to bardzo rozległa i pełna wspólnych zależności gałąź technologiczna. Możesz być jednym z najlepszych w wąskiej specjalizacji, w sieciach, w security, w bazach danych czy systemach i usługach. Musisz jednak zawsze pamiętać, że końcowym efektem pracy jest dostarczenie kompletnego produktu dla użytkowników.
Termin Cloud computing odnosi się do pewnego sposobu dostarczenia usługi skupiając się bardziej na samej usłudze niż na całej technologicznej otoczce która jej towarzyszy. Innymi słowy jest to podejście które bardziej dotyczy tego co dostarczamy niż w jaki sposób. W końcu musimy być wobec siebie szczerzy, większość klientów interesuje cena i jakość niż technologie ukryte pod maską.
Wirtualizacja serwerów
Kiedy myślisz o serwerze zapewne pierwsze co przychodzi Ci na myśl to maszyna typu Blade zainstalowana w szafie rackowej gdzieś w data center. Kiedy masz już ten obraz, zastanawiasz się pewnie z czego się składa. Jakie i jak szybkie procesory posiada? Ile pamięci RAM zainstalowano oraz jak duża przestrzeń dyskowa jest dostępna? Przez chwilę pewnie pomyślisz również o jego położeniu w szafie oraz jak jest chłodzony.
Jednak z punktu widzenia dostarczanej usługi termin serwer odnosi się bardziej do systemu operacyjnego (OS) niż do sprzętu. Posiadając jeden fizyczny serwer jesteśmy w stanie uruchomić i udostępnić kilka lub kilkanaście zwirtualizowanych serwerów (VM). Dzieje się tak ponieważ obecnie jest bardzo ciężko wykorzystać w pełni możliwości naszego sprzętu korzystając wyłącznie z jednej usługi.
Z punktu widzenia security wirtualizowanie VM to również dobre rozwiązanie pozwalające współdzielić zasoby sprzętowe jednak pozostawiając warstwę aplikacyjna podzieloną pomiędzy usługobiorców którzy są od siebie odizolowani. Klienci mimo, że korzystają z jednej fizycznej maszyny, nie mają dostępu do aplikacji i systemu drugiego użytkownika.
Ma to również ogromny sens biznesowy. Po co kupować lub wynajmować cały serwer za setki lub tysiące złotych kiedy potrzebujemy wyłącznie kilku lub kilkanastu procent jego wydajności do uruchomienia na przykład serwera WWW.
Podstawy wirtualizacji serwerów
Tradycyjne, zorientowane na fizyczny sprzęt podejście określało mianem serwera każdy komputer który świadczył jakieś usługi. Mógł być to zarówno stary PC wstawiony do piwnicy i umożliwiający grę w Quake’a z kolegami, jak i typowe dla data center serwery typu Blade. Każdy z nich charakteryzują jednak te same 4 podstawowe parametry: CPU, RAM, przepustowość łącza (sieć) oraz powierzchnia dyskowa (storage).
W takim modelu jak widoczny powyżej, każdy fizyczny serwer pracuje pod kontrolą jednego systemu operacyjnego. Wszystkie dostępne zasoby i moc obliczeniowa są współdzielona przez różne usługi, ale system w którym pracują jest dla nich wspólny. Takie podejście jest dobre w momencie kiedy mamy bardzo mało różnych usług do uruchomienia, wydajność naszej maszyny jest ograniczona lub nie chcemy (na przykład z powodów bezpieczeństwa) współdzielić zasobów z innymi.
W dzisiejszych czasach jednak większość firm podąża w kierunku maksymalizacji zysków poprzez optymalizację kosztów. Jak to zrobić? Oczywiście idąc z stronę chmury oraz wirtualizacji. Współczesnie praktycznie każdy fizyczny serwer posiada więcej mocy obliczeniowej niż potrzeba dla jednego systemu. Pomyślmy przez chwilę o współczesnych procesorach. Każdy z nich posiada kilka lub kilkanaście rdzeni które posiadają odpowiednio większą ilość wątków. Dzięki temu w jednym cyklu pracy procesora moglibyśmy wykonać określoną ilość operacji x liczba rdzeni x liczba wątków. Jednak tego nie zrobimy ponieważ istnieje bardzo niewiele aplikacji w pełni wielowątkowych.
Dzięki zastosowaniu hypervisora (pomyśl o nim jak o nadrządcy) jesteśmy w stanie potraktować każdy wątek procesora jako wirtualny (vCPU). Możemy wtedy takie vCPU zgrupować i przypisać ich dowolną liczbę do VM (virtual machines).
Virtual Machines to zwirtualizowane systemy operacyjne które współdzielą ze sobą fizyczne możliwości maszyny. Do zarządzania nimi oraz alokacji potrzebnych im zasobów służy hypervisor. Obecnie do najpopularniejszych należą:
- Vmware vCenter
- Citrix XenServer
- KVM
- Microsoft HyperV
Dzięki nim możemy dowolnie tworzyć, zatrzymywać, uruchamiać, usuwać czy migrować nasze VM pomiędzy różnymi fizycznymi maszynami nawet w czasie rzeczywistym.
Virtual Network Functions
Virtual Network Fuctions w skrócie VNF to wirtualna instacja każdego urządzenia sieciowego działająca w chmurze. W ten sposób możemy realizować funkcje switcha ale również routera czy firewalla. Nic nie stoi na przeszkodzie by uruchomić własną instancję ASAv w VM oraz CSR (Cloud Services Router).
Wirtualne switche
W tradycyjnym modelu każdy fizyczny serwer był wyposażony w jedną lub więcej kart sieciowych które będziemy nazywać NIC (Network interface card). W takim wypadku dostęp do sieci wystarczyło zrealizować poprzez podłączenie fizycznego switcha do naszej maszyny i już mieliśmy dostęp do sieci. Co jednak gdy mamy kilka wirtualnych systemów, które z założenia są od siebie logicznie odseparowane? Oczywiście musimy podłączyć te systemy do switcha który zapewni odpowiednia separację i tagowanie.
Dlatego większość hypervisorów posiada wbudowane vSwitche na wzór zwirtualizowanego ethernetowego switcha.
Należy pamiętać, że takie wirtualne switche zapewniają jedynie podstawową funkcjonalność switchy. Jeśli oczekujesz i potrzebujesz zaawansownych opcji switchy typowych dla Data center nic nie stoi na przeszkodzie, aby kupić ich zwirtualizowane wersje. Dla przykładu Cisco posiada w swojej ofercie wirtualne switche Nexus 1000v. Juniper oferuje swoje switche z rodziny vQFX10000. Jeśli jesteś zagorzałym razem projektów Open source może zainteresować Cię projekt Open Switch.
Usługi Cloud Computing
Cloud computing to tak naprawdę sposób oferowania usług IT. Odpowiednie wykorzystanie narzędzi takich jak wirtualizacja jak również wykorzystanie sprzętu stworzonego do clouda. Jednakże nie można tu mówić, że musisz mieć to, to i to i już oferujesz usługi chmurowe. Aby mówić o takich usługach musi być spełnione 5 warunków:
- Usługi na żądanie: Usługobiorca sam decyduje kiedy i jakie usługi chce oraz może je dowolnie zatrzymywać, pauzować i uruchamiać. Wszystko bez integerencji dostawcy usług.
- Dostęp z dowolnego urządzenia : Usługi muszą być dostępne z dowolnego urządzenia (oczywiście z każdego gdzie prawnie jest to dozwolone).
- Pula zasobów: Usługobiorca może dowolnie konfigurować jakie zasoby potrzebuje w danej chwili z dostępnej puli.
- Elastyczność: Uzytkownik może w dowolnej chwili zwiększyć lub zmniejszyć parametry swojej usługi bez potrzeby czekania na rekację zespołu technicznego w Data Center. Oznacza to, że nie jest ograniczony sztywnymi parametrami fizycznych maszyn i może dowolnie skalować parametry swojej usługi zakupując dodatkową moc obliczeniową, przestrzeń dyskową czy pamieć RAM.
- Mierzalność usług: Dostawca jest w stanie dostarczyć raport wykorzystania usług zarówno w celach informacyjnych jak i do celów rozliczeniowych.
Chmura prywatna
Teraz kiedy już wiemy jakie warunki musimy spełnić by mówić o usługach w pełni chmurowych możemy przystąpić do ich podziału ze względu na odbiorcę. Jednym z rodzajów jest chmura prywatna o której mówimy w momencie gdy usługi cloudowe są dostarczane wewnątrz jednej organizacji. Prywatna w tym znaczeniu, że dysponujemy wszystkimi narzędziami do dostarczenia usług spełniających 5 wymaganych warunków do naszych współpracowników.
Najczęściej oznacza to znaczącą optymalizację istniejących procesów dostarczania usług poprzez automatyzację oraz wykreślenie człowieka pośredniczącego. Innymi słowy tam gdzie wcześniej był potrzebny administrator który na żądanie użytkowników towrzył dla nich odpowiednie VM, teraz mamy najcześciej katalog usług z których deweloper czy operator może wybrać czego potrzebuje i może to sobie samodzielnie wyklikać.
Chmura publiczna
W przeciwieństwie do chmu prywatnej gdzie usługi były dostarczne wewnątrz jednej organizacji w chmurze publicznej mamy do czynienia ze zjawiskiem przeciwnym. Usługi dostarczane przez jedną firmę są dostępne dla wielu klientów poza tą organizacją. Oczywiście 5 warunków chmury musi być nadal spełnionych.
Chmura i model „As a service”
Termin As a sevice z angielskiego oznacza „jako usługa”. Oznacza to , że takie usługi kupujemy w modelu abonamentowym podobnie jak to robimy z numerem telefonu. Do tej pory z całym tym cloudowym zamieszaniem omawialiśmy jedynie zamawiania przez użytkownika jakiś usług z dostępnego katalogu. No więc właśnie, jakie usługi oferuje nam chmura? Wiemy już, że dzięki wirtualizacji może zamówić cały gotowy do pracy system operacyjny wewnątrz VM. Takie najprostsze podejście do tematu określamy jak IaaS – Infrastructure as a Service, czyli infrastruktura jako usługa.
IaaS – Infrastructure as a Service
W tym modelu otrzymujemy dostęp do gotowej instancji wirtualnego serwera o zamówionych przez nas parametrach. Wybieramy parametry sprzętowe które są nam potrzebne oraz jeden z przygotowanych przez dostawcę obrazów systemu operacyjnego. W tym miejscu warto wspomnieć, że nasz dostawca gwarantuje dostępność sprzętową oraz sieciową wirtualnej maszyny czyli właśnie infrastruktury. Mamy również pewność, że każdy z predefiniowanych obrazów będzie działał prawidłowo w momencie instalacji. Od momentu uruchomienia writualnej maszyny VM użytkownik odpowiada za dalsze samodzielne skonfigurowanie oraz doinstalowanie potrzebnych aplikacji.
Oczywiście nadal po stronie dostawcy leży zapewnie odpowiedniego łącza sieciowego oraz wszelkich szczegółów odnośnie naszej maszyny. W tym panelu, który umożliwia uruchomienie, zatrzymanie czy zrestartowanie systemu w razie potrzeby bez kontaktu z usługodawcą. Na poniższym obrazku możesz przeczytać, że tworzymy przykładowa instację w Europie wybierając 16 wątków procesora do pary z 104 GB pamięci RAM. Wybrany dysk twardy to 1 TB SSD z zainstalowanym na pokładzie Debianem w wersji 9. Jak szaleć to szaleć 😉
SaaS – Software as a Service
Software as a service oznacza, że użytkownik końcowy otrzymuje aplikację jako usługę chmurową. W przeciwieństwie do IaaS nie musimy wybierać parametrów wirtualnej maszyny oraz systemu operacyjnego czy przejmować się instalacją dodatkowych aplikacji. Tym wszystkim zajmuje się usługodawca który prawdopodobnie zarządza kilkoma, kilkunastoma VMkami, aby dostarczyć nam konkretną aplikację w modelu subskrypcyjnym. Do aplikacji działających jako SaaS zaliczamy na przykład wszystkie usługi przechowywania plików – Google drive, Dropbox, Onedrive czy Apple iCloud. Kolejnym przykładem aplikacji jako usługa jest Microsoft Exchange, czyli nasz prywatny serwer poczty jednak bez konieczności instalacji pakietów czy zarządzania wirtualnymi maszynami.
PaaS – Platform as a Service
Platform as a Service czyli platforma jako usługa to preinstalowane środowisko gotowe do pracy. Usługa zazwyczaj jest skierowana do programistów którzy dzięki temu nie muszą troszczyć się o aktualizację systemu, jego licencjonowanie oraz nie muszą jednorazowo wydawać tysięcy na zakup potrzebnego sprzętu. W ten sposób płacą wyłącznie za wykorzystane w danym okresie zasoby. Przykładem takiej usługi jest App Engine dostępny w Google Cloud oraz Lamba dostępna w AWS od Amazona.
Połączenia WAN do chmury
Wykorzystywanie internetu do połączenia się z chmurą jest błogosławieństwem oraz przekleństwem zarazem. Szeroko dostępna usługa dostępu do internetu pozwala w sposób szybki oraz wygodny na połączenie z naszą chmurą. Nie musisz się przejmować jak oraz w jaki sposób uzyskasz połączenie ze swoim uługodawcą. Jednak korzystanie z internetu posiada szereg wad:
- Bezpieczeństwo: Cały twój ruch jest podatny na podsłuchanie poprzez atak Man in the middle
- Przepustowość: Przeniesienie swojej infrastruktury do chmury wymaga znacznego zwiększenia dostępnej prędkości na łączu WAN, jednocześnie nie mamy żadnej gwaracji, że gdzieś po drodze nasz ruch nie przytka któregoś z łącz ISP
- QoS: Internet z założenia nie dostarcza żadnych usług QoS
- Brak WAN SLA: Praktycznie żadnej z ISP nie jest w stanie zagwarantować SLA na łączach do każdego miejsca na świecie.
Jednymi z opcji na rozwiązanie chociaż części z tych problemów jest zakupienie usługi prywatnego łącza WAN i wpięcie bezpośrednio do infrastruktury lub ustanowienie tunelu VPN do dostawcy chmury. Kolejną opcją jest wykupienie opcji MPLS VPN i spięcie jej pomiędzy naszym ISP i chmurą.
Główni gracze
Usługi chmurowe stają się coraz popularniejsze jednak nadal tort dzielą między sobą głównie trzy firmy:
- AWS Amazon web services – obecnie najpopularniejszy z dostawców usług chmurowych oferujący bardzo intuicyjny panel sterowania oraz szeroki zakres usług.
- Microsoft Azure – Jeśli szukasz usługi opartej o Windows serwer lub jedną z usług od Microsoftu wybór jest właściwie jeden.
- Google Cloud – Ilością usług nie ustępuje AWS’owi, świetnie integruje się z Gsuite.
Każda z tych firm oferuje darmowy okres testowy, dzięki czemu możesz przetestować ich usługi kompletnie za darmo.
Czy chmura zabierze Ci pracę?
Pora odpowiedzieć sobie na pytanie, które pojawia się wyjątkowo często. Również coraz częściej w wymaganiach na stanowiska sieciowa pojawia sięw wymaganiach znajomość zagadnień cloudowych. Niestety mie ma jednej, dobrej odpowiedzi na to pytanie. Na pewno rola chmury będzie znacząco wzrastać i popyt na tradycyjny networking będzie malał.
Wiele firm zamiast inwestować we własną infrastrukturę lub kolakcję po prostu zakupi potrzebne usługi. Z drugiej strony chmura nie jest magicznym tworem i nadal wymaga, aby ktoś nią zarządzał. Możliwość uruchamiania VNF jako instancji VM nie oznacza, że wiedza jak je skonfigurować jest już nie potrzeba. Popyt na osoby techniczne będące w stanie administrować całymi sieciami cloudowymi będzie rosnął.
[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]Praca w IT ma to do siebie, że wymaga ciągłego doskonalenia oraz doszkalania, a chmura z pewnością jest przyszłością i zabierze pracę jedynie tym którzy stoją w miejscu.