Преводът на статията е подготвен специално за студентите от курса .
Интересно ли е да се развивате в тази посока? Вижте записа на професионалния уебинар , проведен от Егор Зуев — TeamLead в компанията InBit и автор на образователната програма в OTUS.

Google Cloud Platform (GCP) предлага множество услуги, включително изчислителен стек, който съдържа Google Compute Engine (GCE), Google Kubernetes Engine (по-рано — Container Engine) (GKE), Google App Engine (GAE) и Google Cloud Functions (GCF). Всички тези услуги имат интересни наименования, но може да не е напълно очевидно какви функции предлагат и какво ги прави уникални една спрямо друга. Тази статия е предназначена за тези, които се запознават за първи път с облачните концепции, и по-специално с облачните услуги и GCP.

1. Изчислителен стек
Изчислителният стек може да се разглежда като многостепенна абстракция на това, което може да предостави компютърната система. Този стек се издига (moves up) от „голия метал“ (bare metal), свързан с действителните хардуерни компоненти на компютъра, до функциите (functions), които представляват най-малката единица изчисление. Важно е да се отбележи, че услугите се агрегират, докато се премества нагоре по стека, например, разделът „приложения“ (apps), показан на изображение 1 по-долу, трябва да съдържа всички основни компоненти на контейнери (containers), виртуални машини (virtual machines) и хардуер. По същия начин компонентът на виртуалните машини трябва да съдържа хардуер за работа.

Изображение 1: Изчислителен стек | Изображението е взето от
Тази модел, показан на изображение 1, е основата за описание на предложенията от облачните доставчици. Следователно, някои доставчици могат да предлагат само, например, контейнери и услуги с по-ниско качество по стека, а други — всичко, показано на изображение 1.
— Ако сте запознати с облачните услуги, преминете към раздел 3, за да се запознаете с еквивалента на GCP
— Ако ви е необходима само резюме на облачните услуги, преминете към раздел 2.4
2. Облачни услуги
Светът на облачните изчисления е много разнообразен. Облачните доставчици предлагат множество услуги, адаптирани към различните нужди на клиентите. Може би сте чували за термини като IaaS, PaaS, SaaS, FaaS, KaaS и др. с всички букви на азбуката, следвани от 'aaS'. Независимо от странното наименование, те образуват набор от услуги на облачните доставчици. Установявам, че има 3 основни предложения 'като услуга' (as a Service), които облачните доставчици почти винаги предлагат.
Това са IaaS, PaaS и SaaS, които означават съответно инфраструктура като услуга (Infrastructure as a Service), платформа като услуга (Platform as a Service) и софтуер като услуга (Software as a Service). Важно е да визуализирате облачните услуги като нива на предлаганите услуги. Това означава, че когато се изкачвате или слизате от едно ниво на друго, като клиент, преминавате през различни опции за обслужване, които се добавят или премахват от основното предложение. Най-добре е да го разглеждате като пирамида, както е показано на рисунка 2.

Рисунок 2: Пирамида 'aaS' | Изображението е получено от
2.1 Инфраструктура като услуга (IaaS)
Това е най-ниското ниво, което може да предложи доставчикът на облачни услуги, и включва облачен доставчик, предлагащ 'голата' инфраструктура, включваща софтуер, мрежови кабели, процесори, графични процесори, оперативна памет, външно хранилище, сървъри и изображения на основни операционни системи, като Debian Linux, CentOS, Windows и т.н.
Ако поръчате предложение за IaaS от доставчика на облачни услуги, това е това, което трябва да очаквате. Вие, като клиент, оставате да сглобите тези части за управление на бизнеса си. Степента на взаимодействие, с която ще трябва да работите, може да варира от доставчик до доставчик, но обикновено получавате само хардуера и ОС, а останалото е за вас. Примери за IaaS са AWS Elastic Compute, Microsoft Azure и GCE.
Някои хора може да не харесват факта, че трябва да инсталират образи на ОС и да се занимават с мрежа, балансиране на натоварването или да се грижат за това, кой тип процесор е идеален за тяхната работна натовареност. Тук се придвижваме нагоре по пирамидата към PaaS.
2.2 Платформа като услуга (PaaS)
PaaS включва само доставчика на облачни услуги, който предлага определена платформа, на която потребителите могат да изграждат приложения. Това е абстракция над IaaS, което означава, че доставчикът на облака поема всички детайли за типа CPU, памет, RAM, съхранение, мрежи и др. Както е показано на рисунка 2, вие, като клиент, имате малък контрол върху самата платформа, тъй като облачният доставчик се грижи за всички детайли на инфраструктурата вместо вас. Вие заявявате избраната платформа и изграждате проект на нея. Примерите за PaaS включват Heroku.
За някои хора това може да е твърде висококачествено ниво, тъй като те не задължително искат да изграждат проект на посочената платформа, а по-скоро се нуждаят от набор от услуги директно от доставчика на облачни услуги. Тук на сцената излиза SaaS.
2.3 Софтуер като услуга (SaaS)
SaaS представлява най-разпространените услуги, предлагани от доставчици на облачни услуги. Те са предназначени за крайни потребители и са достъпни основно чрез уебсайтове, като Gmail, Google Docs, Dropbox и т.н. Що се отнася до Google Cloud, има няколко предложения извън техния изчислителен стек, които са SaaS. Те включват Data Studio, Big Query и др.
2.4 Обобщение на облачните услуги
Съставляващи
IaaS
PaaS
SaaS
Какво получавате
Получавате инфраструктура и плащате съответно. Свобода да използвате или инсталирате всякакъв софтуер, операционна система или тяхната комбинация.
Тук получавате това, което сте поискали. Софтуер, хардуер, операционна система, уеб среда. Вие получавате готова за използване платформа и плащате съответно.
Тук не трябва да се тревожите за нищо. Предоставя ви се предварително инсталиран пакет, настроен според вашите изисквания, и ви остава само да платите съответно.
Стойност
Основно ниво на изчисления
Върховете на IaaS
Това е по същество пълен пакет от услуги
Технически сложности
Необходими са технически познания
Получавате базова конфигурация, но все още са необходими знания в областта.
Не е нужно да се занимавате с техническите детайли. Доставчикът на SaaS предоставя всичко.
С какво работи
Виртуални машини, съхранения, сървъри, мрежи, балансировачи на натоварването и т.н.
Среда за изпълнение (като java runtime), бази данни (като mySQL, Oracle), уеб сървъри (като tomcat и др.)
Приложения като пощенски услуги (Gmail, Yahoo mail и др.), сайтове за социално взаимодействие (Facebook и др.)
Графика на популярността
Популярно сред високо квалифицирани разработчици, изследователи, които изискват персонализиране в съответствие с техните изисквания или област на изследвания.
Най-популярно сред разработчиците, тъй като те могат да се фокусират върху разработването на своите приложения или скриптове. Те не трябва да се тревожат за натоварването на трафика или управлението на сървъра и др.
Най-популярно сред обикновените потребители или компании, които използват софтуер, като електронна поща, облачни услуги, социални мрежи, тъй като не им се налага да се занимават с техническите детайли.
Фигура 3: Резюме на основните облачни предложения | изображение предоставено
3. Изчислителният пакет Google Cloud Platform
След като разгледахме типичните предложения на облачните доставчици в раздел 2, можем да ги съпоставим с предложенията на Google Cloud.
3.1 Google Compute Engine (GCE) — IaaS

Фигура 4: Иконка на Google Compute Engine (GCE)
GCE е IaaS предложение от Google. С GCE можете свободно да създавате виртуални машини, да разпределяте ресурси от процесора и паметта, да избирате вид хранилище, например SSD или HDD, а също и обем на паметта. Тук е почти така, сякаш създавате собствен компютър/работна станция и се занимавате с всички детайли на неговата работа.
В GCE можете да изберете от микро инстанции с 0,3 ядра и 1 GB RAM до 96-ядерни машини с над 300 GB RAM. Можете също така да създавате виртуални машини с нестандартен размер за вашите работни натоварвания. За тези, които се интересуват — това са виртуални машини, които можете да сглобите.
3.2. Google Kubernetes Engine (GKE) — (CaaS / KaaS)

Фигура 5: Иконка на Google Kubernetes Engine (GKE)
GKE е уникално изчислително предложение от GCP, което представлява абстракция над Compute Engine. В по-общ смисъл, GKE може да бъде класифициран като "Контейнер като услуга" (CaaS), понякога наричан "Kubernetes като услуга" (KaaS), който позволява на клиентите лесно да стартират своите Docker контейнери в напълно управляваната среда на Kubernetes. За тези, които не са запознати с контейнерите, те помагат модулно да се формират услуги/приложения, така че различни контейнери могат да съдържат различни услуги; например, един контейнер може да хоства интерфейса на уеб приложението ви, а друг може да съдържа неговата сървърна част. Kubernetes автоматизира, координира, управлява и разгръща вашите контейнери. Повече информация тук.
3.3 Google App Engine (GAE) — (PaaS)

Рисунок 6: Иконка Google App Engine (GAE)
Както беше споменато в раздел 2.2, PaaS е над IaaS, и в случая на GCP, може да се разглежда като предложение над GKE. GAE е специализиран Google PaaS, и както те самите най-добре се описват — "донесете своя код, а ние ще се погрижим за всичко останало."
Това гарантира, че клиентите, които използват GAE, не трябва да се занимават с основния хардуер/промежуточен софтуер и вече могат да имат преднастроена платформа, готова за работа; всичко, което трябва да направят, е да предоставят кода, необходим за стартиране.
GAE автоматично управлява мащабирането, за да отговори на натоварването и търсенето от страна на потребителите, което означава, че ако вашият сайт за продажба на цветя внезапно достигне пик, защото наближава денят на влюбените, GAE ще се погрижи за мащабирането на основната инфраструктура, за да посрещне търсенето и да гарантира, че вашият уебсайт не изпада заради увеличеното търсене. Това означава, че плащате точно за ресурсите, които вашето приложение изисква в момента.
GAE използва Kubernetes или неговата вградена версия, за да се справи с всичко това, така че да не трябва да се безпокоите за него. GAE е най-подходящо за компании, които не се интересуват от основната инфраструктура и се грижат само за това, че приложението им е достъпно по най-добрия начин.
Според мен, GAE е най-доброто място за стартиране, ако сте разработчик с отлична идея, но не искате да се занимавате с рутинна работа по настройка на сървъри, балансировка на натоварването и друга трудоемка работа в областта на devops/SRE. С времето бихте могли да опитате GKE и GCE, но това е само мое мнение.
Дисклеймер: AppEngine се използва за уеб приложения, а не за мобилни приложения.
За запознаване:
3.4 Google Cloud Functions - (FaaS)

Фигура 7: Иконка на Google Cloud Functions (GCF)
Надявам се, че сте забелязали тенденция, анализирайки предишните предложения. Колкото по-нагоре се изкачвате по стълницата на изчислителните решения GCP, толкова по-малко трябва да се притеснявате за основните технологии. Тази пирамида завършва с най-малката възможна единица изчисление - функция, както е показано в раздел 1.
GCF е относително ново предложение на GCP, което все още е в бета тестване (в момента на написването на тази статия). Облачните функции позволяват определени функции, написани от разработчика, да се стартират при дадено събитие.
Те се управляват от събития и лежат в основата на модната дума 'безсървърен', тоест не познават сървъри. Облачните функции са много простички и имат много различни приложения, изискващи събитийно мислене. Например, всеки път, когато се регистрира нов потребител, може да бъде стартирана облачна функция, за да предупреди разработчиците.
На фабриката, когато определен сензор достигне определена стойност, той може да стартира облачна функция, която извършва обработка на информацията или уведомява определен обслужващ персонал и т.н.
Заключение
В тази статия говорихме за различните облачни предложения, например IaaS, PaaS и т.н., и как стекът на изчисленията на Google реализира тези различни нива. Видяхме, че нивата на абстракция при прехода от една категория услуги в друга, например от IaaS към PaaS, изискват по-малко знания за основата.
За бизнеса това осигурява критична гъвкавост, която не само отговаря на оперативните му цели, но също така удовлетворява и други ключови области, като безопасност и разходи. Обобщавайки:
Compute Engine — ви позволява да създавате собствена виртуална машина, като разпределяте определени хардуерни ресурси, като RAM, процесор и памет. Също така е достатъчно практичен и нисковърховен.
Kubernetes Engine — това е следваща стъпка в сравнение с Compute Engine, която ви позволява да използвате Kubernetes и контейнери за управление на вашето приложение, позволявайки да го мащабирате при необходимост.
App Engine — това е следваща стъпка в сравнение с Kubernetes Engine, позволявайки ви да се фокусирате само върху вашия код, докато Google осигурява всички изисквания на основната платформа.
Cloud-Functions — това е върха на изчислителната пирамида, която позволява да напишете проста функция, която при стартиране използва всяката основна инфраструктура за извършване на изчисления и връщане на резултата.
Благодаря за вниманието!
Twitter:
Източник: habr.com
