Z głową w chmurach…

praca w chmurze

Nie dalej jak trzy miesiące temu uczestniczyłem we wdrożeniu fragmentu systemu dla klienta w USA i ze względu na godzinę wdrożenia wykonywałem zadania z tym związane z domu. Wtedy do mojego pokoju weszła córka i zapytała mnie: „Tato, co robisz?”. Zaaferowany i zajęty pracą odpowiedziałem: „Deployujemy nową wersję w chmurze”. Nie przewidziałem konsekwencji swojej odpowiedzi, bo to zrodziło lawinę pytań od: „Co to znaczy deployować?” po: „Czym ty tato właściwie się zajmujesz?”.

Najważniejsze jednak okazało się spostrzeżenie córki, które rzuciła mimochodem, bardziej do siebie niż do mnie, wychodząc już z pokoju: „Jak w chmurze, skoro siedzi na krześle w pokoju”. 🙂 To dało mi sporo do myślenia. W obecnej rzeczywistości sporo naszych danych ląduje w chmurze. Przechowujemy tam dokumenty, pracujemy na aplikacjach w chmurze, a nawet posiadamy zasoby w chmurze. Rzadko jednak zadajemy sobie pytanie, co to jest ta chmura i jakie są konsekwencje korzystania z takich zasobów.

Przetwarzanie w chmurze

Wyjaśnienie zacznę od zaglądnięcia do Wikipedii:

Chmura obliczeniowa – model przetwarzania danych oparty na użytkowaniu usług dostarczonych przez usługodawcę”

Podaną definicję należałoby uzupełnić o informację, że dostarczona usługa zainstalowana jest na współdzielonej infrastrukturze, którą klient niejako „wynajmuje” od usługodawcy. Usługa taka najczęściej jest dostępna w Internecie.

Przyjrzyjmy się takim usługom jak np. OneDrive czy Google Docs. Rzadko zastanawiamy się nad tym, jak właściwie działają takie aplikacje. Co więcej, czasami nie zastanawiamy się nad konsekwencjami takiego podejścia. A co, jeśli zabraknie nam dostępu do Internetu? W moim przypadku oznaczałoby to np. problem z płatnościami za rachunki, które skrupulatnie wrzucam do arkusza kalkulacyjnego… w chmurze.

Wykorzystanie zasobów współdzielonych

Przechowywanie dokumentów czy zdjęć w chmurze to jeden z najczęściej wykorzystywanych przez nas „domowych sposobów” użycia takich rozwiązań.

Jeśli chodzi o „profesjonalne” zastosowanie, to obecnie jest kilka takich możliwości. Można je zebrać w następujący zestaw:

  • IaaS – Infrastructure as a Service, czyli infrastruktura jako usługa
  • PaaS – Platform as a Service, czyli platforma jako usługa
  • SaaS – Software as a Service, czyli oprogramowanie jako usługa
  • BaaS i FaaS – Back-end as a Service i Function as a Service, czyli usługa umożliwiająca tworzenie

Wszystkie te usługi mogą ze sobą współpracować, ale równie dobrze mogą być wykorzystywane pojedynczo.

Podczas pracy z chmurą obliczeniową należy zawsze mieć świadomość tego, że wykorzystywane przez nas zasoby są współdzielone. Koszt wykupienia dedykowanych rozwiązań, czyli takich, które będą przeznaczone tylko i wyłącznie dla nas, jest dość wysoki. Maszyny współdzielone będą zdecydowane tańsze, niemniej jednak nie ma gwarancji, że cały czas będą działać z maksymalną wydajnością.

W IT bardzo często korzystamy z modeli IaaS i SaaS, czyli używane są w tym wypadku maszyny wirtualne (IaaS) oraz gotowe programy (SaaS).

W modelu IaaS najczęściej definiujemy, jaką moc obliczeniową ma posiadać zamówiony przez nas sprzęt. Określamy takie parametry jak np.:

  • Liczba procesorów
  • Rozmiar pamięci RAM
  • Rodzaj i rozmiar dysków twardych

Przykładami takich usług są: AWS EC2, Azure VM, GCP CE.

Systemy informatyczne mogą być również instalowane w modelu PaaS, której przykładem jest np. Heroku. W ramach rozwiązania mamy możliwość wykupienia zasobów wraz z dodatkowymi usługami. Są to np.: bazy danych, audyt, bezpieczeństwo, itp. Dzięki temu przy pomocy jednej skonsolidowanej platformy można dostarczyć całościowe rozwiązanie.

W modelu SaaS dostajemy gotowe oprogramowanie, które po prostu zaczynamy wykorzystywać. W tym przypadku nie zastanawiamy się, gdzie znajdą się nasze zasoby, ile potrzebujemy dla nich mocy obliczeniowej. Przykładem takich usług w tym modelu są: MS Office 365 czy Google Docs.

W modelu FaaS (BaaS) programiści tworzą pojedyncze elementy systemu – funkcje, które mogą mieć dowolne przeznaczenie – zarówno biznesowe, jak również techniczne. Pojedyncze funkcje mogą być tworzone w jednym z wielu języków programowania, np. JavaScript, Python, Java, C#, itd. Inicjatorem-wyzwalaczem (triggerem) działania takiej usługi może być np. pojawienie się rekordu w bazie danych, pliku w chmurze czy po prostu żądanie http (API). Możliwości jest naprawdę sporo. Korzystając z tego modelu, programista przygotowuje kod i integrację z innymi usługami, a następnie dostarcza funkcjonalność do platformy w chmurze. Dodatkowo konfiguruje on usługę pod kątem sposobu jej wywołania. Jej działaniem zarządza sama chmura i, co ważne, dba ona również o to, żeby usługa zawsze była dostępna.

Chmura dostarcza oczywiście odpowiednich mechanizmów do monitorowania i sprawdzania, jak poszczególne usługi pracują i czy maszyny nie są przeciążone, umożliwia tworzenie kopii bezpieczeństwa (któż z nas o tym nie zapomina), itp. Tego typu mechanizmy często są „wliczone” w cenę usługi, co dodatkowo może nas motywować do skorzystania z tego rozwiązania.

O czym należy pamiętać…

Przede wszystkim o tym, że nic nie jest za darmo. Tak – korzystanie z chmury komercyjnie – kosztuje i to czasami niemałe pieniądze. Ważne jest to, że ten koszt zawsze można oszacować, a służą do tego różnego rodzaju kalkulatory dostarczane przez właścicieli platform.

Rozwiązanie chmury na pewno jest wygodne – praktycznie bez konieczności wydania na początek sporej ilości pieniędzy, otrzymujemy gotowy produkt, który już może dla nas zarabiać. Dodatkowo nie musimy martwić się o brakujące zasoby, w łatwy sposób możemy je rozbudowywać. Kolejnym atutem rozwiązania na pewno jest możliwość kolokacji (czyli posiadania wielu lokalizacji) zasobów.

Zamiast zakończenia

Zawsze jest tak, że trzeba zakończyć. Zdołaliśmy zaledwie dotknąć w tym wpisie bardzo szerokiego tematu. O chmurze i usługach w niej dostępnych napisano wiele i napisać można jeszcze więcej, chociażby o architekturze bez infrastruktury #serverless czy o możliwościach obliczeniowych w obszarze BigData, ale – drogi czytelniku – nie możemy o wszystkim napisać w jednym blogowym artykule, dlatego zachęcam Cię do zapoznania się z tematem we własnym zakresie. Dobrym miejscem na takie poznanie jest którakolwiek z dużych platform cloud czy jakaś pozycja w literaturze (hasło „cloud computing” w Google).

Na zachętę dodam, że wszystkie liczące się platformy mają możliwość „pobawienia” się ich usługami za darmo przez określony czas (zwykle jest to 12 miesięcy). Moim zdaniem – warto spróbować.

Autor: Paweł Janusz – programista, architekt, pasjonat wytwarzania oprogramowania. W Onwelo odpowiedzialny za lubelski oddział i jego rozwój.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *