Tłumaczenie artykułu przygotowano specjalnie dla studentów kursu .
Czy interesuje Cię rozwój w tym kierunku? Zobacz nagranie profesjonalnego warsztatu , który poprowadził Eгор Зуев — TeamLead w firmie InBit i autor programu edukacyjnego w OTUS.

Google Cloud Platform (GCP) oferuje wiele usług, w tym stos obliczeniowy, który zawiera Google Compute Engine (GCE), Google Kubernetes Engine (wcześniej — Container Engine) (GKE), Google App Engine (GAE) oraz Google Cloud Functions (GCF). Wszystkie te usługi mają fajne nazwy, ale ich funkcje oraz unikalność mogą być nie do końca oczywiste. Ten artykuł jest przeznaczony dla tych, którzy dopiero zaczynają z chmurowymi koncepcjami, a w szczególności z usługami chmurowymi i GCP.

1. Stos obliczeniowy
Stos obliczeniowy można postrzegać jako wielowarstwową abstrakcję nad tym, co może dostarczyć system komputerowy. Ten stos wznosi się (moves up) od „gołego metalu” (bare metal), odnosząc się do faktycznych komponentów sprzętowych komputera, aż do funkcji (functions), które stanowią najmniejszą jednostkę obliczeniową. Ważne jest, aby zauważyć w odniesieniu do stosu, że usługi są agregowane w miarę przesuwania się w górę stosu, na przykład sekcja „aplikacje” (apps), pokazana na rysunku 1 poniżej, powinna zawierać wszystkie podstawowe komponenty kontenerów (kontenery), maszyn wirtualnych (virtual machines) i sprzętu. W podobny sposób komponent maszyn wirtualnych powinien zawierać sprzęt wewnątrz do działania.

Rysunek 1: Stos obliczeniowy | Obrazek pochodzi z
Ten model, przedstawiony na rysunku 1, stanowi podstawę do opisu oferty dostawców chmurowych. W związku z tym niektórzy dostawcy mogą oferować jedynie na przykład kontenery oraz usługi na niższych warstwach stosu, podczas gdy inni — wszystko, co pokazano na rysunku 1.
— Jeśli znasz usługi chmurowe, przejdź do sekcji 3, aby zapoznać się z odpowiednikiem GCP
— Jeśli potrzebujesz jedynie podsumowania usług chmurowych, przejdź do sekcji 2.4
2. Usługi chmurowe
Świat rozwiązań chmurowych jest bardzo różnorodny. Dostawcy chmury oferują liczne usługi dostosowane do różnych potrzeb klientów. Możliwe, że słyszałeś o takich terminach jak IaaS, PaaS, SaaS, FaaS, KaaS itd., z wszystkimi literami alfabetu, po których następuje "aaS". Pomimo dziwnego systemu nazewnictwa, tworzą one zestaw usług dostawców chmury. Zauważam, że istnieją 3 podstawowe oferty "jako usługa" (as a Service), które dostawcy chmury prawie zawsze oferują.
To IaaS, PaaS i SaaS, które oznaczają odpowiednio infrastrukturę jako usługę (Infrastructure as a Service), platformę jako usługę (Platform as a Service) oraz oprogramowanie jako usługę (Software as a Service). Ważne jest, aby wizualizować usługi chmurowe jako poziomy oferowanych usług. Oznacza to, że gdy wchodzisz lub schodzisz na poziom, jako klient, przechodzisz przez różne opcje obsługi, które są albo dodawane, albo usuwane z podstawowej oferty. Najlepiej jest to postrzegać jako piramidę, jak pokazano na rysunku 2.

Rysunek 2: Piramida "aaS" | Zdjęcie pochodzi z
2.1 Infrastruktura jako usługa (IaaS)
To najniższy poziom, jaki może zaoferować dostawca usług chmurowych, i obejmuje dostawcę obliczeń w chmurze dostarczającego "nagą" infrastrukturę, w tym oprogramowanie pośrednie, kable sieciowe, procesory, karty graficzne, pamięć operacyjną, zewnętrzne pamięci masowe, serwery oraz obrazy podstawowych systemów operacyjnych, takich jak Debian Linux, CentOS, Windows itp.
Jeśli zamówisz ofertę IaaS u dostawcy usług chmurowych, to tego możesz się spodziewać. To na Tobie, jako kliencie, spoczywa składanie tych elementów do prowadzenia własnego biznesu. Zakres tego, z czym będziesz musiał pracować, może różnić się w zależności od dostawcy, ale zazwyczaj otrzymujesz jedynie sprzęt i system operacyjny, a reszta leży w Twoich rękach. Przykładami IaaS są AWS Elastic Compute, Microsoft Azure i GCE.
Niektórym osobom może nie spodobać się fakt, że muszą instalować obrazy systemów operacyjnych i zarządzać siecią, równoważeniem obciążenia lub troszczyć się o to, jaki typ procesora najlepiej pasuje do ich obciążenia roboczego. Właśnie tutaj przechodzimy wyżej w piramidzie do PaaS.
2.2 Platforma jako usługa (PaaS)
PaaS obejmuje tylko dostawcę usług chmurowych, który oferuje określoną platformę, na której użytkownicy mogą tworzyć aplikacje. To abstrakcja nad IaaS, co oznacza, że dostawca chmury zajmuje się wszystkimi szczegółami dotyczącymi typów CPU, pamięci, RAM, przechowywania, sieci itp. Jak pokazano na rysunku 2, jako klient masz niewielką kontrolę nad rzeczywistą platformą, ponieważ dostawca chmury zajmuje się wszystkimi szczegółami infrastruktury za Ciebie. Żądasz wybranej platformy i budujesz na niej projekt. Przykładami PaaS są Heroku.
Dla niektórych może to być zbyt wysoki poziom, ponieważ niekoniecznie chcą budować projekt na wskazanej platformie, a raczej potrzebują zestawu usług bezpośrednio od dostawcy chmurowego. Tu na scenę wkracza SaaS.
2.3 Oprogramowanie jako usługa (SaaS)
SaaS to najbardziej rozpowszechnione usługi oferowane przez dostawców usług chmurowych. Są one przeznaczone dla użytkowników końcowych i dostępne głównie przez strony internetowe, takie jak Gmail, Google Docs, Dropbox itp. Jeśli chodzi o Google Cloud, istnieje kilka ofert poza ich stosem obliczeniowym, które są SaaS. Należą do nich Data Studio, Big Query itp.
2.4 Podsumowanie usług chmurowych
Składniki
IaaS
PaaS
SaaS
Co otrzymujesz
Otrzymujesz infrastrukturę i płacisz odpowiednio. Wolność używania lub instalowania dowolnego oprogramowania, systemu operacyjnego lub ich kombinacji.
Tutaj otrzymujesz to, o co prosisz. Oprogramowanie, sprzęt, system operacyjny, środowisko webowe. Otrzymujesz gotową do użycia platformę i płacisz odpowiednio.
Tutaj nie musisz się o nic martwić. Otrzymujesz wstępnie zainstalowany pakiet dopasowany do Twoich wymagań, a jedyne, co musisz zrobić, to płacić odpowiednio.
Wartość
Podstawowy poziom obliczeń
Szczyt IaaS
To zasadniczo pełny pakiet usług
Trudności techniczne
Wymagane są wiedza techniczna
Masz podstawową konfigurację, ale nadal wymagane są wiedza specjalistyczna.
Nie musisz się martwić o szczegóły techniczne. Dostawca SaaS zapewnia wszystko.
Z czym współpracuje
Wirtualne maszyny, pamięci masowe, serwery, sieć, load balancery itp.
Środowiska wykonawcze (jak java runtime), bazy danych (jak mySQL, Oracle), serwery webowe (jak tomcat itp.)
Aplikacje podobne do usług pocztowych (Gmail, Yahoo mail itp.), witryn społecznościowych (Facebook itp.)
Wykres popularności
Popularne wśród wysoko wykwalifikowanych programistów i badaczy, którzy potrzebują dostosowania do swoich wymagań lub dziedziny badań
Najbardziej popularne wśród programistów, ponieważ mogą skupić się na rozwijaniu swoich aplikacji lub skryptów. Nie muszą martwić się o obciążenie ruchem lub zarządzanie serwerem itp.
Najbardziej popularne wśród zwykłych konsumentów lub firm, które korzystają z oprogramowania, takiego jak poczta elektroniczna, usługi wymiany plików, media społecznościowe, ponieważ nie muszą martwić się o detale techniczne
Rysunek 3: Podsumowanie głównych ofert chmurowych | Obraz dostarczony
3. Zestaw obliczeniowy Google Cloud Platform
Po rozważeniu typowych ofert dostawców chmurowych w rozdziale 2, możemy je porównać z ofertami Google Cloud.
3.1 Google Compute Engine (GCE) — IaaS

Rysunek 4: Ikona Google Compute Engine (GCE)
GCE to oferta IaaS od Google. Z GCE możesz swobodnie tworzyć maszyny wirtualne, przydzielać zasoby procesora i pamięci, wybierać typ pamięci, na przykład SSD lub HDD, a także jej pojemność. To prawie tak, jakbyś stworzył swój własny komputer/stację roboczą i zajmował się wszystkimi szczegółami jej działania.
W GCE możesz wybierać od mikro instancji z procesorami o 0,3 rdzeniach i 1 GB RAM do potworów z 96 rdzeniami z ponad 300 GB RAM. Możesz także tworzyć maszyny wirtualne o niestandardowych rozmiarach do swoich obciążeń roboczych. Dla zainteresowanych — to maszyny wirtualne, które możesz złożyć.
3.2. Google Kubernetes Engine (GKE) — (CaaS / KaaS)

Rysunek 5: Ikona Google Kubernetes Engine (GKE)
GKE to unikalna oferta obliczeniowa od GCP, która stanowi abstrakcję nad Compute Engine. W szerszym sensie GKE można zaklasyfikować jako 'Kontener jako usługa' (CaaS), czasami określaną jako 'Kubernetes jako usługa' (KaaS), która pozwala klientom łatwo uruchamiać swoje kontenery Docker w w pełni zarządzanym środowisku Kubernetes. Dla tych, którzy nie są zaznajomieni z kontenerami, kontenery pomagają modulować usługi/aplikacje, więc różne kontenery mogą zawierać różne usługi, na przykład jeden kontener może hostować interfejs twojej aplikacji internetowej, a inny może zawierać jej część serwerową. Kubernetes automatyzuje, koordynuje, zarządza i wdraża twoje kontenery. Więcej informacji tutaj.
3.3 Google App Engine (GAE) — (PaaS)

Rysunek 6: Ikona Google App Engine (GAE)
Jak wspomniano w sekcji 2.2, PaaS znajduje się wyżej niż IaaS, a w przypadku GCP można go również uznać za ofertę powyżej GKE. GAE to wyspecjalizowany PaaS od Google, a jak najlepiej sami się opisują — 'przywieź swój kod, a my zajmiemy się wszystkim innym'.
Gwarantuje to, że klienci korzystający z GAE nie muszą radzić sobie z podstawowym sprzętem/oprogramowaniem pośredniczącym i mogą mieć już wstępnie skonfigurowaną platformę gotową do pracy; wszystko, co muszą zrobić, to dostarczyć kod potrzebny do uruchomienia.
GAE automatycznie zajmuje się skalowaniem, by sprostać obciążeniu i zapotrzebowaniu ze strony użytkowników, co oznacza, że jeśli twoja strona sprzedająca kwiaty nagle osiągnie szczyt, ponieważ zbliża się Dzień Zakochanych, GAE zajmie się skalowaniem podstawowej infrastruktury, aby sprostać popytowi i zapewnić, że twoja strona internetowa nie padnie z powodu wzrostu zapotrzebowania. Oznacza to, że płacisz dokładnie za te zasoby, które są potrzebne twojej aplikacji w danym momencie.
GAE wykorzystuje Kubernetes lub jego wbudowaną wersję, aby poradzić sobie z tym wszystkim, abyś nie musiał się tym martwić. GAE jest idealne dla firm, które nie interesują się podstawową infrastrukturą i zależy im tylko na tym, aby ich aplikacja była dostępna w jak najlepszy sposób.
Moim zdaniem GAE to najlepsze miejsce na start, jeśli jesteś deweloperem z doskonałym pomysłem, ale nie chcesz zajmować się rutynową pracą konfigurowania serwerów, równoważenia obciążenia i wszystkimi innymi czasochłonnymi zadaniami związanymi z devops/SRE. Z czasem możesz spróbować GKE i GCE, ale to tylko moje zdanie.
Wyłączenie odpowiedzialności: AppEngine jest używany dla aplikacji internetowych, a nie aplikacji mobilnych.
Do zapoznania się:
3.4 Google Cloud Functions — (FaaS)

Rysunek 7: Ikona Google Cloud Functions (GCF)
Mam nadzieję, że zauważyłeś trend, analizując poprzednie propozycje. Im wyżej w hierarchii rozwiązań obliczeniowych GCP, tym mniej musisz martwić się o podstawowe technologie. Ta piramida kończy się najmniejszą możliwą jednostką obliczeniową, funkcją, jak pokazano w sekcji 1.
GCF jest stosunkowo nową ofertą GCP, która nadal znajduje się w fazie beta (w momencie pisania tego artykułu). Funkcje chmurowe pozwalają na uruchamianie określonych funkcji napisanych przez dewelopera w odpowiedzi na jakieś zdarzenie.
Są one zarządzane przez zdarzenia i stanowią podstawę modnego pojęcia „bezserwerowo”, to znaczy nie znają serwerów. Funkcje chmurowe są bardzo proste i mają wiele zastosowań, które wymagają myślenia o zdarzeniach. Na przykład, za każdym razem, gdy nowy użytkownik się rejestruje, może zostać uruchomiona funkcja chmurowa, aby powiadomić deweloperów.
W fabryce, gdy określony czujnik osiągnie określoną wartość, może uruchomić funkcję chmurową, która wykonuje pewne przetwarzanie informacji lub powiadamia jakiś personel obsługujący itd.
Podsumowanie
W tym artykule rozmawialiśmy o różnych ofertach chmurowych, takich jak IaaS, PaaS itd., i o tym, jak stos obliczeniowy Google realizuje te różne poziomy. Zobaczyliśmy, że poziomy abstrakcji przy przejściu z jednej kategorii usług do drugiej, na przykład z IaaS do PaaS, wymagają mniej wiedzy o leżących u podstaw.
Dla biznesu zapewnia to krytyczną elastyczność, która nie tylko odpowiada jego celom operacyjnym, ale także zaspokaja inne kluczowe obszary, takie jak bezpieczeństwo i koszty. Podsumowując:
Compute Engine — pozwala na stworzenie własnej wirtualnej maszyny, przydzielając określone zasoby sprzętowe, takie jak pamięć RAM, procesor czy pamięć. Jest również wystarczająco praktyczny i niskopoziomowy.
Kubernetes Engine — to krok wyżej w porównaniu do Compute Engine, który pozwala na wykorzystanie Kubernetes i kontenerów do zarządzania aplikacją, umożliwiając jej skalowanie w razie potrzeby.
App Engine — to krok wyżej w porównaniu do Kubernetes Engine, pozwalający skupić się wyłącznie na swoim kodzie, podczas gdy Google zapewnia wszystkie wymagania podstawowej platformy.
Cloud-Functions — to szczyt piramidy obliczeniowej, umożliwiający napisanie prostego skryptu, który po uruchomieniu wykorzystuje całą podstawową infrastrukturę do obliczeń i zwraca wynik.
Dziękuję za uwagę!
Twitter:
Źródło: habr.com
