Мені було цікаво, в чому різниця між App Engine & Compute Engine. Хтось може мені пояснити різницю?
Мені було цікаво, в чому різниця між App Engine & Compute Engine. Хтось може мені пояснити різницю?
Відповіді:
App Engine - це платформа як послуга. Це означає, що ви просто розгортаєте свій код, а платформа робить все інше за вас. Наприклад, якщо ваш додаток стане дуже успішним, App Engine автоматично створить більше примірників для обробки збільшеного обсягу.
Compute Engine - це інфраструктура як послуга. Вам потрібно створити та налаштувати власні екземпляри віртуальної машини. Це дає більше гнучкості і, як правило, коштує набагато менше, ніж App Engine. Недолік полягає в тому, що вам доведеться самостійно керувати додатком та віртуальними машинами.
При необхідності можна змішати і App Engine, і Compute Engine. Вони обидва добре працюють з іншими частинами хмарної платформи Google .
EDIT (травень 2016 р.):
Ще одне важливе розмежування: проекти, запущені на App Engine, можуть зменшуватись до нуля, якщо жодних запитів не надходить. Це надзвичайно корисно на етапі розробки, оскільки ви можете їхати тижнями, не перебираючи велику безкоштовну квоту годин-екземплярів. Гнучке виконання (тобто "керовані віртуальні машини") вимагає принаймні одного примірника для постійного запуску.
EDIT (квітень 2017):
Хмарні функції (на даний момент у бета-версії) - це наступний рівень, що вищий від App Engine в плані абстракції - жодних випадків! Це дозволяє розробникам розгортати шматочки коду розміру, які виконуються у відповідь на різні події, які можуть включати HTTP-запити, зміни у Cloud Storage тощо.
Найбільша відмінність App Engine полягає в тому, що функції розраховуються за 100 мілісекунд, тоді як екземпляри App Engine вимикаються лише через 15 хвилин бездіяльності. Ще одна перевага полягає в тому, що хмарні функції виконуються негайно, тоді як для виклику App Engine може знадобитися новий екземпляр, а холодний запуск нового екземпляра може зайняти кілька секунд або довше (залежно від часу виконання та вашого коду).
Це робить хмарні функції ідеальними для (a) рідкісних дзвінків - не потрібно підтримувати екземпляр в прямому ефірі на випадок, якщо щось трапляється, (b) швидко змінюється навантаження, де екземпляри часто крутяться і вимикаються, і, можливо, більше випадків використання.
Основна відмінність полягає в тому, що Google App Engine ( GAE ) - це платформа як послуга ( PaaS ), тоді як Google Compute Engine ( GCE ) - інфраструктура як послуга ( IaaS ) .
Щоб запустити свою програму в GAE, вам просто потрібно написати свій код і розгорнути його в GAE, жодного іншого головного болю. Оскільки GAE є повністю масштабованим, він автоматично набирає більше примірників у випадку, якщо трафік збільшується, та зменшує кількість випадків, коли трафік зменшується. З вас буде стягнуто кошти за реально використані вами ресурси , я маю на увазі, що з вас буде виставлено рахунок за часові години , перенесені дані , сховище тощо. Але обмеження полягає в тому, що ви можете створити свою програму лише в Python, PHP, Java, NodeJS, .NET, Ruby та ** Go .
З іншого боку, GCE надає вам повну інфраструктуру у вигляді віртуальної машини . Ви маєте повний контроль над середовищем та часом виконання цих віртуальних машин, оскільки ви можете написати або встановити будь-яку програму там. Насправді GCE - це спосіб практично використовувати Центри обробки даних Google. У GCE вам доведеться вручну налаштувати свою інфраструктуру для управління масштабованістю за допомогою Load Balancer .
І GAE, і GCE є частиною хмарної платформи Google .
Оновлення: у березні 2014 року Google оголосив про нову послугу під назвою App Engine під назвою Керована віртуальна машина . Керовані віртуальні машини пропонують додаткам двигуна додатків трохи більшу гнучкість у порівнянні з платформою додатків, процесором та пам'яттю. Як і GCE, ви можете створити користувальницьке середовище виконання у цих віртуальних машинах для додатків із двигуном додатків. Фактично керовані віртуальні машини App Engine в деякій мірі розмивають межу між IAAS та PAAS.
Простіше кажучи: обчислювальний движок дає вам сервер, за який ви маєте повний контроль / відповідальність. У вас є прямий доступ до операційної системи, і ви встановлюєте все необхідне програмне забезпечення, яке, як правило, веб-сервер, база даних тощо ...
У двигуні додатків ви не керуєте операційною системою жодного із програм, що лежать в основі. Ви завантажуєте лише код (Java, PHP, Python або Go) та voila - він просто працює ...
Двигун додатків економить тонни головного болю, особливо для недосвідчених людей, але у нього є два суттєвих недоліки: 1. дорожче (але у нього є вільна квота, у якої не обчислюється двигун) 2. у вас менше контролю, тому певні речі просто не можливо, або можливо лише одним певним чином (наприклад, збереження та запис файлів).
Або зробити це ще простіше (оскільки часом ми не можемо розмежувати стандарт GAE та GAE Flex):
Compute Engine аналогічний віртуальному ПК, на якому, наприклад, ви розгорнете невеликий веб-сайт + базу даних. Ви керуєте всім, включаючи управління встановленими дисководами. Якщо ви розгортаєте веб-сайт, ви відповідаєте за налаштування DNS тощо.
Google App Engine (Стандартний) - це як папка, що містить лише читання, в яку ви завантажуєте код для виконання та не переживайте про інше (так: лише для читання - для вас встановлений фіксований набір бібліотек, і ви не можете розгорнути Треті партійні бібліотеки за бажанням). DNS / субдомени тощо набагато простіше зробити карту.
Google App Engine (гнучкий) насправді схожа на цілу файлову систему (не просто заблоковану папку), де у вас більше енергії, ніж у стандартного двигуна, наприклад, ви маєте дозволи на читання / запис, (але менше порівняно з Compute Engine ). У стандарті GAE у вас встановлений фіксований набір бібліотек, і ви не можете розгорнути сторонні бібліотеки за бажанням. У гнучкому середовищі ви можете встановити будь-яку бібліотеку, від якої залежить ваш додаток, включаючи користувацькі середовища збирання (наприклад, Python 3).
Хоча GAE Standard дуже громіздкий для вирішення (хоча Google робить це звуком просто), він дуже добре масштабується, коли піддається тиску. Це громіздко, тому що вам потрібно перевірити та забезпечити сумісність із заблокованим середовищем та переконатися, що будь-яка стороння бібліотека, яку ви використовуєте, не використовує жодної іншої сторонньої бібліотеки, про яку ви не знаєте, яка може не працювати за стандартом GAE. На практиці це потребує більше часу, але в довгостроковій перспективі може бути кориснішим для простого розгортання.
На додаток до приміток App Engine vs Compute Engine, наведеного вище, список містить також порівняння з Google Kubernete Engine та деякі замітки, засновані на досвіді роботи із широким спектром програм від малого до великого. Докладніше див. У документації Google Cloud Platform на високому рівні з описом функцій в App Engine Standard та Flex на сторінці Вибір середовища App Engine . Ще одне порівняння розгортання App Engine і Kubernetes дивіться у публікації від Daz Wilkin App Engine Flex або Kubernetes Engine .
Стандарт двигуна додатків
Плюси
Мінуси
Додаток Flex Flex
Плюси
Мінуси
Google Kubernetes Engine
Плюси
Мінуси
Обчислювальний двигун
Плюси
Мінуси
Як уже було пояснено, Google Compute Engine (GCE) - це інфраструктура як послуга (IaaS), тоді як Google App Engine (GAE) - платформа як послуга (PaaS). Ви можете перевірити наступну діаграму, щоб краще зрозуміти різницю (Взято з та краще пояснено тут ) -
Google Compute Engine
GCE - важлива послуга, що надається з хмарної платформи Google (GCP), оскільки більшість служб GCP використовують екземпляри GCE (VM) під управлінням шаром (не впевнений, який з них немає). Сюди входять App Engine, Cloud Functions, Kubernetes Engine (Раніший двигун контейнерів), Cloud SQL тощо. Примірники GCE є найбільш налаштованою одиницею там, і тому їх слід використовувати лише тоді, коли ваша програма не може працювати в будь-яких інших службах GCP. Більшу частину часу люди використовують GCE для передачі своїх програм On-Prem до GCP, оскільки це вимагає мінімальних змін. Пізніше вони можуть вибрати інші послуги GCP для окремого компонента своїх додатків.
Google App Engine
GAE - це перша послуга, запропонована GCP (задовго до того, як Google прийшов у хмарний бізнес). Він автоматично масштабує від 0 до необмежених випадків (він використовує GCE під ним). Він постачається з 2 ароматами Стандартне середовище та Гнучка середовище.
Стандартне середовище дійсно швидко, зменшується до 0 примірників, коли ніхто не використовує ваш додаток, масштабується вгору і вниз за секунди, і спеціальні служби та бібліотеки Google мають кешування, аутентифікацію тощо. Застереження із середовищем Standard - це те, що воно дуже обмежує оскільки він працює в пісочниці. Вам потрібно використовувати керовані режими виконання лише для конкретних мов програмування. Останні доповнення: Node.js (8.x) та Python 3.x. Старіші версії доступні для Go, PHP, Python 2.7, Java тощо.
Гнучка середовище є більш відкритою, оскільки дозволяє використовувати власні режими виконання, оскільки вони використовують докер-контейнери. Таким чином, якщо ваш час роботи недоступний у передбачені умови виконання, ви завжди можете створити свій власний докер-файл для середовища виконання. Застереження з цим є, що для цього потрібно мати принаймні 1 екземпляр, навіть якщо ніхто не використовує ваш додаток, плюс масштабування вгору та вниз вимагає декількох хвилин.
Не плутайте GAE гнучкий з Kubernetes Engine, оскільки пізніше використовується фактичний Kubernetes і надає набагато більше налаштувань та функцій. GAE Flex корисний, коли потрібно контейнери без громадянства, і ваша програма покладається лише на протоколи HTTP або HTTPS. Для інших протоколів єдиний вибір - Kubernetes Engine (GKE) або GCE. Перевірте іншу відповідь для кращого пояснення.
App Engine надає розробникам можливість контролювати сердечники Google Compute Engine, а також надавати передній частині веб-сторінок для додатків обробки даних Google Compute Engine.
З іншого боку, Compute Engine пропонує пряме і повне управління операційною системою ваших віртуальних машин. Щоб представити свою програму, вам знадобляться ресурси, і Google Cloud Storage ідеально підходить для зберігання ваших активів і даних, для чого б вони не використовувалися. Ви отримуєте швидкий доступ до даних за допомогою хостингу по всьому світу. Надійність гарантується в режимі 99,95%, а Google також забезпечує можливість резервного копіювання та відновлення ваших даних, вірте чи ні, зберігання не обмежене.
Ви можете керувати своїми активами за допомогою Cloud Cloud Storage, зберігаючи, отримуючи їх, показуючи та видаляючи їх. Ви також можете швидко читати та записувати на плоскі таблиці даних, які зберігаються у Cloud Storage. Наступним у лінійці Google Cloud є BigQuery. За допомогою BigQuery ви можете проаналізувати величезну кількість даних, ми говоримо мільйони записів протягом декількох секунд. Доступ обробляється через простий інтерфейс або інтерфейс представницького стану, або інтерфейс REST.
Зберігання даних, як ви можете підозрювати, не є проблемою, а масштаби становлять сотні туберкульозу. BigQuery доступний через безліч клієнтських бібліотек, у тому числі для Java, .NET, Python, Go, Ruby, PHP та Javascript. Доступний SQL-синтаксис під назвою NoSQL, доступ до якого можна отримати через ці бібліотеки клієнтів або через веб-інтерфейс користувача. Нарешті, поговоримо про параметри бази даних Google Cloud, Cloud SQL та Cloud Datastore.
Є основна різниця. Cloud SQL призначений для реляційних баз даних, насамперед MySQL, тоді як Cloud Datastore - для нереляційних баз даних, що використовують noSQL. За допомогою Cloud SQL ви можете вибрати хостинг у США, Європі чи Азії зі 100 ГБ пам’яті та 16 ГБ оперативної пам’яті на екземпляр бази даних.
Cloud Datastore доступний безкоштовно до 50 К інструкцій з читання / запису на місяць та 1 ГБ даних, що зберігаються також на місяць. Однак ви перевищуєте плату за перевищення цих квот. App Engine також може працювати з іншими менш відомими, більш цілеспрямованими учасниками платформи Google Cloud, включаючи Cloud Endpoints для створення програмних пакетів API, API прогнозування Google для аналізу даних та прогнозування тенденцій або API Google Translate для багатомовного виведення.
Незважаючи на те, що ви можете самостійно заробляти за допомогою App Engine, це потенційно зростає, коли ви враховуєте його здатність легко та ефективно працювати з іншими службами платформи Google Cloud.
Я поясню це таким чином, що для мене мав сенс:
Compute Engine : Якщо ви самостійно працюєте або маєте ІТ-команду, і ви просто хочете взяти напрокат комп'ютер на хмарі, який має конкретну ОС (наприклад, Linux), ви перейдете до Compute Engine. Ви повинні зробити все самостійно.
App Engine : Якщо ви (наприклад) програміст python і хочете орендувати попередньо налаштований комп’ютер у хмарі, на якому є Linux із запущеним веб-сервером та найновішим python 3 з необхідними модулями та деякими модулями для інтеграції інші зовнішні служби, ви перейдете на App Engine.
Контейнер без сервера (Cloud Run) : якщо ви хочете розгорнути точне зображення вашого локального середовища налаштування (наприклад: python 3.7 + flask + sklearn), але ви не хочете мати справу з сервером, масштабуванням тощо. Ви створюєте контейнер на локальній машині (через докер), а потім розгорніть її в Google Run.
Мікросервіс без сервера (хмарні функції) : якщо ви хочете написати купу API (функцій), які виконують певну роботу, ви перейдете до функцій Google Cloud Cloud. Ви просто зосереджуєтесь на тих конкретних функціях, решта роботи (сервер, обслуговування, масштабування тощо) робиться за вас, щоб викрити свої функції як мікросервіси.
У міру заглиблення ви втрачаєте деяку гнучкість, але вас не турбують зайві технічні аспекти. Ви також платите трохи більше, але економите час та кошти (ІТ-частина): хтось інший (google) робить це за вас.
Якщо ви хочете не піклуватися про балансування навантаження, масштабування тощо, важливо розділити додаток на купу веб-служб "без громадянства", які записують що-небудь постійне в окреме сховище (сховище бази даних або блоків). Тоді ви дізнаєтесь, наскільки приголомшливими є функції Cloud Run та Cloud Cloud.
Особисто я знайшов Google Cloud Run дивовижним рішенням, абсолютною свободою в розвитку (доки без громадянства), виставив його як веб-сервіс, докеріть своє рішення, розгорніть його за допомогою Cloud Run. Нехай Google буде вашим ІТ та DevOps, вам не потрібно дбати про масштабування та обслуговування.
Я спробував всі інші варіанти, і кожен з них підходить для різних цілей, але Google Run просто приголомшливий. Для мене це справжній сервер без втрати гнучкості в розвитку.
Віртуальні машини (ВМ), розміщені в хмарі. До хмари їх часто називали віртуальними приватними серверами (VPS). Ви б використовували це так само, як і фізичний сервер, де ви встановлюєте та налаштовуєте операційну систему, встановлюєте додаток, встановлюєте базу даних, постійно оновлюєте ОС тощо. Це відоме як Інфраструктура- послуга (IaaS).
Віртуальні комп'ютерні файли найбільш корисні, коли у вашому центрі даних працює наявна програма, що працює на VM або сервері, і ви хочете легко перенести її на GCP.
App Engine розміщує і працює з вашим кодом, не вимагаючи, щоб ви мали справу з операційною системою, мережами та багатьма іншими речами, з якими вам доведеться керувати фізичним сервером або VM. Розглядайте це як час виконання, який може автоматично розгортати, версію та масштабувати вашу програму. Це називається платформа як послуга (PaaS).
App Engine є найбільш корисним, коли потрібно автоматичне розгортання та автоматичне масштабування програми. Якщо ваша програма не вимагає налаштування спеціальної ОС, App Engine часто вигідніше, ніж налаштовувати та керувати ВМ вручну.