Google App Engine

Google App Engine - сервіс хостингу сайтів і web-додатків на серверах Google з безкоштовним ім'ям <імя_сайта>. appspot.com, або з власним ім'ям, задіяним [1] за допомогою служб Google.

App Engine представлена ​​в квітні 2008, знаходиться в режимі тестування, доступні як безкоштовні акаунти: [2] "... до 1 Гб дискового простору, 10 Гб вхідного трафіку в день, 10 Гб вихідного трафіку в день, 200 мільйонів гігаціклов CPU в день і 2000 операцій відправлення електронної пошти в день", [ 3] так і можливість придбання додаткових ресурсів [4].

Додатки, що розгортаються на базі App Engine, повинні бути написані на Python, Java або Go. Середа виконання Python [5] включає в себе повну реалізацію можливостей самого Python, більшість функцій стандартної бібліотеки мови, обмежену версію Django, і т. д.

Пропонується набір API для сервісів сховища, datastore API ( BigTable), [6] акаунтів Google, [7] завантаження даних по URL, [8] електронної пошти [9] і т. д.

Надана можливість використовувати планувальник завдань cron як для додатків реалізованих на Python, так і на Java. Дозволено планування не більше 20-ти завдань. [10] [11]

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

Платформа Google конкурує з аналогічними сервісами від Amazon, які надають можливості розміщувати файли і веб-додатки, використовуючи свою інфраструктуру.


1. Відмінності від традиційної моделі хостингу додатків

На відміну від багатьох звичайних розміщень додатків на віртуальних машинах, таких як Amazon EC2, платформа App Engine тісно інтегрована з додатками і накладає на розробників деякі обмеження. Конкуруючі середовища дозволяють оперувати безліччю програмного забезпечення, створеного під * NIX системами, в той час як App Engine вимагає від розробника обов'язкового використання мов програмування Python, Java або Go (останній - з травня 2011) і збереження інформації у власному сховищі (Datastore) - підмножині пропрієтарної бази даних BigTable (en), яка є ноу-хау компанії Google.

Хоча більшість з розроблених на мові Python додатків можливо запустити без змін під App Engine (виключаючи ті, які вимагають доступу до низькорівневих функцій системи або доступу до мережі), використання сховища зажадає значних сил від розробників на адаптацію додатків. На відміну від популярних СУБД MySQL і PostgreSQL, сховище не є реляційною базою даних, зокрема не підтримує схему і не вимагає нормалізації даних. Архітектура платформи підтримує масштабування без зміни коду. Реалізація підтримки реляційної логіки привела б до значного уповільнення роботи. Нереляціоннимі характер сховища вимагає від розробників використання нетрадиційної архітектури зберігання і обробки даних. Наприклад, замість нормалізованого зберігання даних у двох або кількох таблицях з наступним об'єднанням у запиті ( join), логічно пов'язані дані рекомендується зберігати в одній таблиці.

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


2. Обмеження

Середа виконання платформи Google App Engine дозволяє розробнику контролювати лише частину параметрів операційної системи, що може представляти проблему для розробки додатків.

Немає доступу на запис у файлову систему сервера. Єдиний спосіб зберігати дані - внутрішнє сховище, нереляціоннимі, високомасштабіруемая база даних. Сховище відрізняється від реляційних СУБД MySQL і PostgreSQL, які використовуються на більшості сайтів.

Системи управління сесіями, які використовують файлову систему, не будуть працювати. Google надає альтернативний варіант - Memcache API. Є можливість організувати авторизацію користувачів через акаунти Google.

Google широко використовує у своїх додатках технологію MapReduce, парадигма паралельних обчислень, проведених на безлічі вузлів кластера, її підтримка, ймовірно, буде додана до можливостей платформи. [12]

Тепер App Engine має підтримку SQL з Google Cloud SQL [13]


3. Приклад самого маленького додатка

Сайт helloworld.appspot.com з однієї сторінки "index.html" вимагає [14] завантаження [15] на сервери Google App Engine двох файлів: [16]

  • ... / Helloworld / app. yaml - конфігураційний файл програми helloworld в його кореневому каталозі
 application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: / static_files: static / index.html upload: static / index.html 
  • ... / Helloworld / static / index. html
 <  html  > <  h1  >  Hello World!  <  /  h1  > <  /  html  > 

Примітки

  1. Використання Google App Engine разом зі своїм доменом - www.googleappengine.ru / articles / domains.html
  2. Що таке Google App Engine? - code.google.com / intl / ru / appengine / docs / whatisgoogleappengine.html. Читальний - www.webcitation.org/66ARnM0Em з першоджерела 15 березня 2012.
  3. Умови надання сервісу Google App Engine - www.googleappengine.ru / terms.html
  4. Умови і тарифи придбання додаткових ресурсів - code.google.com / appengine / docs / billing.html
  5. Середа виконання мови Python - www.googleappengine.ru/docs/python/
  6. Datastore API (робота зі сховищем) - www.googleappengine.ru/docs/datastore/
  7. Users API (інтерфейс авторизації користувачів) - www.googleappengine.ru/docs/users/
  8. URL Fetch API (інтерфейс завантаження URL) - www.googleappengine.ru/docs/urlfetch/
  9. Mail API (відправка пошти) - www.googleappengine.ru/docs/mail/
  10. Завдання, заплановані за допомогою Cron для Python - code.google.com / intl / ru / appengine / docs / python / config / cron.html
  11. Завдання, заплановані за допомогою Cron для Java - code.google.com / intl / ru / appengine / docs / java / config / cron.html
  12. Проект MapReduce для AppEngine - code.google.com / p / httpmr /
  13. Google Cloud SQL Приклад додатку - code.google.com / p / cloudsql /
  14. Налаштування додатка. Обробники статичних файлів - www.googleappengine.ru / docs / configuringanapp.html # Static_File_Handlers
  15. Публікація додатка - www.googleappengine.ru / docs / appcfgpy.html
  16. Безкоштовний хостинг в стилі Google App Engine - techwork.ru/2008/08/06/free-webhosting-google-app-engine-style /