GCP: Розбір обчислювального стека Google Cloud Platform

Переклад статті підготовлений спеціально для студентів курсу «Хмарні сервіси».

Цікаво розвиватись у цьому напрямі? Дивіться запис професійного майстер-класу «AWS EC2 сервіс», який провів Єгор Зуєв - TeamLead у компанії InBit та автор освітньої програми в OTUS.

GCP: Розбір обчислювального стека Google Cloud Platform

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

GCP: Розбір обчислювального стека Google Cloud Platform

1. Обчислювальний стек

Обчислювальний стек можна як багаторівневу абстракцію з того, що може надати комп'ютерна система. Цей стек сходить (рухається вгору) від «голого заліза» (голий метал), що відноситься до фактичних апаратних компонентів комп'ютера, аж до функцій (Функції), які являють собою найменшу одиницю обчислення. Що важливо відзначити щодо стека, так це те, що послуги агрегуються при переміщенні вгору по стеку, наприклад, розділ «додатки» (додатка), показаний на малюнку 1 нижче, повинен містити всі базові компоненти контейнерів (containers), віртуальних машин (віртуальні машини) та заліза. Так само компонент віртуальних машин повинен містити залізо всередині для роботи.

GCP: Розбір обчислювального стека Google Cloud Platform

Малюнок 1: Обчислювальний стек | Зображення отримано з Google Cloud

Ця модель, показана на малюнку 1 є основою для опису пропозицій від хмарних провайдерів. Таким чином, деякі провайдери можуть надавати тільки, наприклад, контейнери та послуги нижче за якістю по стеку, а інші — все, що показано на малюнку 1.

— Якщо ви знайомі з хмарними сервісами, переходьте до розділу 3, щоб ознайомитись з еквівалентом GCP
— Якщо вам потрібне лише зведення по хмарних сервісах, переходьте до розділу 2.4

2. Хмарні послуги

Світ хмарних обчислень дуже різноманітний. Хмарні провайдери пропонують безліч послуг, пристосованих до різних вимог клієнтів. Можливо, ви чули про такі терміни як IaaS, PaaS, SaaS, FaaS, KaaS і т.д. з усіма літерами алфавіту, за якими слідує «aaS». Незважаючи на дивну угоду про ім'я, вони утворюють набір послуг хмарних провайдерів. Я констатую, що є три основні пропозиції «як послуга» (as a Service), які хмарні провайдери майже завжди надають.

Це IaaS, PaaS та SaaS, які позначають відповідно інфраструктуру як послугу (Infrastructure as a Service), платформу як послугу (Platform as a Service) та програмне забезпечення як послугу (Software as a Service). Важливо візуалізувати хмарні послуги як рівні послуг. Це означає, що коли ви піднімаєтесь або спускаєтеся з рівня на рівень, ви, як клієнт, перетинаєте різні варіанти обслуговування, які або додаються, або забираються з основної пропозиції. Найкраще розглядати це як піраміду, як показано на малюнку 2.
GCP: Розбір обчислювального стека Google Cloud Platform

Малюнок 2: Піраміда aaS | Зображення отримано з Ruby Garage

2.1 Інфраструктура як послуга (IaaS)

Це найнижчий рівень, який може запропонувати постачальник хмарних послуг, і він включає провайдера хмарних обчислень, що поставляє голу інфраструктуру, включаючи проміжне програмне забезпечення, мережні кабелі, процесори, графічні процесори, оперативну пам'ять, зовнішнє сховище, сервери та образи базових операційних систем , наприклад, Debian Linux, CentOS, Windows і т.д.

Якщо замовте постачальника хмарних послуг IaaS пропозицію, це те, що ви повинні очікувати отримати. За вами, як за клієнтом, залишається збирання цих частин для ведення вашого бізнесу. Ступінь того, з чим вам доведеться працювати, може змінюватись від постачальника до постачальника, але, як правило, ви просто отримуєте апаратне забезпечення та ОС, а решта за вами. Прикладами IaaS є AWS Elastic Compute, Microsoft Azure та GCE.

Деяким людям може не сподобатися той факт, що їм доводиться встановлювати образи ОС і займатися мережею, балансуванням навантаження або піклуватися про те, який тип процесора ідеально підходить для їхнього робочого навантаження. Саме тут ми рухаємося вгору пірамідою до PaaS.

2.2 Платформа як послуга (PaaS)

PaaS включає лише постачальника хмарних послуг, що пропонує певну платформу, на якій користувачі можуть створювати програми. Це абстракція над IaaS, що означає, що постачальник хмари бере на себе всі деталі типів ЦП, пам'яті, ОЗУ, сховища, мереж тощо. Як показано на малюнку 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: Зведення основних хмарних пропозицій Зображення надано Amir at Blog Specia

3. Обчислювальний пакет Google Cloud Platform

Розглянувши типові пропозиції хмарних провайдерів у розділі 2, ми можемо порівняти їх із пропозиціями Google Cloud.

3.1 Google Compute Engine (GCE) - IaaS

GCP: Розбір обчислювального стека Google Cloud Platform

Рисунок 4: Google Compute Engine (GCE)

GCE – це IaaS пропозиція від Google. З GCE можна вільно створювати віртуальні машини, розподіляти ресурси процесора і пам'яті, вибирати тип сховища, наприклад SSD чи HDD, і навіть обсяг пам'яті. Це майже так само, якби ви створили свій власний комп'ютер/робочу станцію і займалися всіма деталями його роботи.

У GCE можна вибрати від мікро інстанцій з 0,3-ядерним процесорами і 1 ГБ ОЗУ до 96-ядерних монстрів з більш ніж 300 ГБ ОЗУ. Ви також можете створювати віртуальні машини нестандартного розміру для робочих навантажень. Для тих, хто зацікавився, це віртуальні машини, які ви можете зібрати.

Типи машин Документація Compute Engine Google Cloud

3.2. Google Kubernetes Engine (GKE) — (Caas / Kaas)

GCP: Розбір обчислювального стека Google Cloud Platform

Малюнок 5: Google Kubernetes Engine (GKE)

GKE — це унікальна обчислювальна пропозиція від GCP, яка є абстракцією над Compute Engine. У більш загальному сенсі GKE можна віднести до категорії «Контейнер як послуга» (CaaS), яка іноді називається «Kubernetes як послуга» (KaaS), яка дозволяє клієнтам легко запускати свої Docker-контейнери в повністю керованому середовищі Kubernetes. Для тих, хто не знайомий з контейнерами, контейнери допомагають модульно формувати сервіси/додатки, тому різні контейнери можуть містити різні сервіси, наприклад, один контейнер може розміщувати інтерфейс вашої веб-програми, а інший може містити його серверну частину. Kubernetes виконує автоматизацію, координацію, керування та розгортання ваших контейнерів. Більше інформації тут.

Google Kubernetes Engine | Google Cloud

3.3 Google App Engine (GAE) - (PaaS)

GCP: Розбір обчислювального стека Google Cloud Platform

Рисунок 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 використовується для веб-застосунків, а не для мобільних додатків.

Для ознайомлення: App Engine — Створюйте веб- та мобільні бекенди, що масштабуються, будь-якою мовою | Google Cloud

3.4 Google Cloud Functions — (FaaS)

GCP: Розбір обчислювального стека Google Cloud Platform

Малюнок 7: Google Cloud Functions (GCF)

Сподіваюся, ви помітили тенденцію, проаналізувавши попередні пропозиції. Чим вище ви піднімаєтеся сходами обчислювальних рішень GCP, тим менше вам потрібно турбуватися про базові технології. Ця піраміда завершується найменшою можливою одиницею обчислення, функцією, як показано у розділі 1.

GCF є відносно новою GCP-пропозицією, яка все ще знаходиться на стадії бета-тестування (на момент написання цієї статті). Хмарні функції дозволяють певним функціям, написаним розробником, запускатися за якоюсь подією.

Вони керуються подіями і лежать в основі модного слова "безсерверний", тобто не знають серверів. Хмарні функції дуже прості і мають багато різних застосувань, які потребують мислення. Наприклад, кожен раз, коли новий користувач реєструється, може бути запущена хмарна функція, щоб попередити розробників.

На фабриці, коли певний датчик досягає певного значення, може запустити хмарну функцію, яка виконує деяку обробку інформації, або повідомляє деякий обслуговуючий персонал тощо.

Хмарні функції - керовані подіями серверні обчислення Google Cloud

Висновок

У цій статті ми говорили про різні хмарні пропозиції, наприклад IaaS, PaaS і т. д., і як стек обчислень Google реалізує ці різні рівні. Ми бачили, що рівні абстракції при переході з однієї категорії послуг до іншої, наприклад, IaaS в Paas, вимагають менше знань про основу, що лежить.

Для бізнесу це забезпечує критично важливу гнучкість, яка не тільки відповідає його оперативним цілям, але також задовольняє інші ключові області, такі як безпека і вартість. Узагальнення:

Compute Engine — дозволяє створити свою власну віртуальну машину, виділяючи певні апаратні ресурси, наприклад, ОЗУ, процесор, пам'ять. Він також досить практичний і низькорівневий.

Движок Kubernetes - Це крок вище в порівнянні з Compute Engine, який дозволяє вам використовувати Kubernetes і контейнери для керування вашим додатком, дозволяючи при необхідності масштабувати його.

App Engine — це крок вище в порівнянні з Kubernetes Engine, що дозволяє вам зосередитись тільки на своєму коді, у той час як Google забезпечує всі вимоги базової платформи.

Cloud-Functions - Це вершина обчислювальної піраміди, що дозволяє написати просту функцію, яка при запуску використовує всю базову інфраструктуру для обчислення та повернення результату.

Дякуємо за увагу!

Twitter: @martinomburajr

Джерело: habr.com

Додати коментар або відгук