Wchodząc w świat chmury nie sposób zauważyć jak wiele akronimów w nim funkcjonuje. Bardzo powszechnymi i nierozerwalnie z cloduem związanymi są IaaS, PaaS, SaaS, FaaS, BaaS i wiele innych. Zapewne spotkałeś się, bądź spotkasz się jeszcze z innymi skrótami zakończonymi na aaS. No właśnie aaS czyli as a Service. Chmura jaką znamy obecnie oferuje wszystkie swoje dobrodziejstwa w postaci usług. Akronimy takie jak IaaS, PaaS, FaaS itd. określają w jakim modelu dane usługi zostaną nam udostępnione. W tym artykule postaram się przybliżyć Ci na czym polegają te modele, jakie są różnice i zalety każdego z nich.
Przykłady z życia codziennego
Akronimy *aaS są silnie związane z IT oraz z chmurą, ale model stojący za każdym z nich możemy sobie zobrazować na trywialnych przypadkach z życia codziennego. Wszyscy jesteśmy konsumentami przeróżnych usług. Czy to robiąc zakupy, jadąc na stację paliwową czy oglądając Netflixa. Niektóre z naszych konsumenckich potrzeb jesteśmy w stanie zaspokoić na kilka różnych sposobów. Oto dwa przykłady.
Transport
1. możemy kupić i posiadać auto na własność
2. możemy leasingować auto
3. możemy korzystać z usług typu car-sharing jak np. Panek
4. możemy korzystać z usług taksówek i uberów.
Posiłek
1. możemy przygotować posiłek w domu
2. możemy kupić gotowy do podgrzania posiłek w sklepie
3. możemy zamówić posiłek z restauracji do domu
4. możemy zjeść posiłek na miejscu w restauracji
Kolejność wymienionych opcji nie jest tutaj przypadkowa. Pierwsza opcja wymaga od konsumenta największego zaangażowania. Praktycznie pełna odpowiedzialność jest tutaj po stronie klienta. W ostatniej opcji odpowiedzialność jest najmniejsza, gdyż zostaje ona przeniesiona na dostawcę usługi. Dostosujmy więc powyższe przykłady do modeli IaaS Paas, i SaaS.
Obrazki/diagramy wyrażają często więcej niż 1000 słów. Myślę, że ten powyżej już w pewnym stopniu pomógł Ci zrozumieć różnicę w modelach usługowych jakie mamy dostępne w chmurze.
Z technicznego punktu widze
Na powyższym obrazku widzimy rozkład odpowiedzialności klient vs. dostawca w poszczególnych modelach. W podejściu On-Premises jesteśmy w pełni odpowiedzialni za wszystkie aspekty. Korzystając z hostingu opieramy się jedynie na fizycznej infrastrukturze dostawcy, wszystkie wyższe warstwy są wciąż naszym zmartwieniem. Kolejne podejścia IaaS, PaaS i SaaS to modele ściśle związane z chmurą. Poniżej krótki opis tych typów wraz z przykładowymi usługami. Dodatkowo dodałem kilka wariacji. Ale zanim to, to jeszcze jedna mała uwaga.
Nie traktuj poniższych typów jako oficjalnej klasyfikacji usług. Poniższa lista jest jedynie ciekawostką. Bywa, że ciężko dopasować konkretną usługę do jej typu udostępniania, dlatego może to być mylące i różnie interpretowane. Sam AWS unika stosowania terminów IaaS, PaaS czy SaaS w odniesieniu do usług. Zamiast tego często posługuje się określeniami usługa oraz usługa zarządzana (service vs managed service). Przykładowo, chcąc postawić bazę MySQL mamy możliwość zainstalowania jej własnoręcznie na EC2 – podejście service. W takim przypadku zarządzanie bazą jest po naszej stronie. Musimy sami zapewnić skalowalność, replikacje itd. Drugą opcją jest skorzystanie z usługi zarządzanej przez AWS, w tym wypadku MySQL for RDS – podejście typu managed service.
IaaS – Infrastructure as a Service
Najbardziej niskopoziomowy z modeli. Od dostawcy otrzymujemy podstawowe komponenty infrastruktury takie jak serwery wirtualne, sieć czy storage. Dostawca dba aby te usługi były dla nas wysoce dostępne, i w zasadzie tutaj kończy się jego odpowiedzialność. Konfiguracja tych zabawek leży już po naszej stronie. Proces wdrożenia aplikacji i jej prawidłowe działanie to już też nasz interes.
Przykłady usług:
PaaS – Platform as a Service
W tym przypadku infrastruktura nie jest już naszym zmartwieniem, gdyż to dostawca jest odpowiedzialny za jej dostarczenie i utrzymanie. W rozwiązaniach tego typu dostajemy gotowe prekonfigurowane środowisko pracy. Środowisko to umożliwi nam uruchomienie naszych usług, testowanie ich oraz zarządzanie ich cyklem życia.
SaaS – Software as a Service
W przypadku tego modelu otrzymujemy kompletny i gotowy od razu do użycia produkt, tzw. oprogramowanie pudełkowe. W tym modelu wszystko jest zarządzane przez dostawcę i po jego stronie leży cała odpowiedzialność. Nie musimy martwić się o dostępność, skalowalność i bezpieczeństwo (przynajmniej w teorii). Oczywistym minusem jest to, że zazwyczaj mamy mały wpływ na rozwój danej usługi
FaaS – Function as a Service
Rozwiązanie ściśle kojarzone z pojęciem serverless. Pod tym akronimem kryje się model, w którym dostawca umożliwia uruchamianie na żądanie naszego kodu w postaci funkcji. Nie musimy tworzyć ani rezerwować do tego żadnego serwera. W modelu tym jesteśmy rozliczania za czas działania funkcji i za ilość wykorzystanej mocy obliczeniowej.
BaaS – Backend as a Service
W tym przypadku w postaci usługi otrzymuj komponent, który realizuje pewne funkcjonalności zakulisową. Rozwiązania tego typu stosuje się tam gdzie chcemy pewną pracę backendową wyoutsourcować poza nasze rozwiązanie. Świetnym przykładem może być tutaj zastosowanie zewnętrznego uwierzytelniania (np. poprzez konto Google).
DBaaS – Database as a Service
Czyli nic innego jak zarządzana baza danych. Setup bazy danych do najprostszych nie należy. Jest też wiele nietrywialnych aspektów związanych z zarządzaniem taką bazą, tj. kopie zapasowe, aktualizacje czy wydajność. DBaaS nie sprawia, że wszystkie te problemy znikają, ale na pewno są one prostsze do opanowania.
AIaaS – Artificial Intelligence as a Service
Akronim, którym możemy otagować wszystkie usługi związane ze sztuczną inteligencją. W ostatnim czasie widać trend wzrostowy w tej dziedzinie. Chmurowi gracze, w szczególności AWS i GCP prześcigają się w ilości udostępnianych usług z szeroko rozumianego AI. W katalogu usług AWSa najdłuższą listę zobaczymy właśnie pod kategorią Machine Learning.
CaaS – Container as a Service
Model, w którym usługa jest związana z kontenerami i ich orkiestracją. Tym akronimem można otagować wszystkie usługi udostępniające w pełni zarządzane klastry Kubernetesa.
MaaS – Monitoring as a Service
Określa się tak grupę usług zapewniających funkcjonalności związane z monitoringiem, alertingiem czy agregacją logów. Dotyczy to zarówno warstwy infrastruktury jak i aplikacji.