Google App Engine: переваги і недоліки

Опубліковано Андрій Скалюк - 17.04.2008, 00:08
Теги: google python Опубліковано Андрій Скалюк - 17

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

Професійний розробник підбирає інструмент під завдання і вирішує її засобами, які є в наявності.

Це стосується як вибору мови Python, так і платформи в цілому. Я особисто є Python і Django розробником вже більше року і можу судити про їх переваги та недоліки. Python і Django показали себе в якості відмінних коштів для створення web-додатків. Використовувати їх чи ні - справа кожного. На мою думку, Google підібрав і надав достатньо коштів для повноцінної web-розробки. Чому обрано саме Python, я думаю, зрозуміло всім - корпорація має широкий досвід роботи з даною мовою. А також не слід забувати, що Guido van Rossum - член команди розробників.

Зустрілася публікація, в якій рішення від Google порівнюють з хостингом на "ваш улюблений мова + MySQL". Сумніваюся, що Google раптом вирішив перекваліфікуватися в хостінговую компанію середнього штибу. Google App Engine - це не free-хостинг для вашого улюбленого блогу, це масштабована середовище для високо-навантажених додатків, які працюють з великими наборами даних. Саме в такій ситуації вона буде вам корисна, хоча ви і можете її використовувати, як завгодно. Потрібно розуміти, як позиціонується продукт і як правильно необхідно його використовувати. Наведу як приклад питання про довільних запитах. Для кожного вашого запиту середовище вимагає створення індексу. Робить вона це абсолютно вірно (і часто автоматично). Хоча це і обмежує можливості "пограти" з даними, але реальний додаток завжди працює з лімітованим переліком запитів до бази. Воно завжди виробляє одні й ті ж запити, тільки з різними параметрами. Оптимізація під саме ваші запити - це правильне рішення і це дуже добре, що саме середовище підштовхує вас до цього. Таким чином, дана технологія вимагає розуміння свого призначення.

Перелік дійсних обмежень:

  • обсяг статичних файлів лімітований 1 MB. App Engine не підтримує часткові запити контенту.
  • неможливо використовувати comet-технології (server push).
  • програма не ідентифікується унікально по ip-адресою. Скрутно для взаємодії із зовнішніми сервісами. Додаток може страждати від поганих сусідів на цьому ж сервісі.
  • немає підтримки SSL. Відсутність унікального IP-адреси ускладнює авторизацію, але порт 443 відкритий для запитів. Ви можете покладатися на сервіси Google для довіряємо логінів.

Перелік вирішуваних обмежень:

  • немає можливості використовувати cron jobs. Вирішується виносом на поза і викликом спеціальних URL-ів вашого застосування.
  • немає обробки зображень. Чи не працює Python Imaging Library, оскільки частина бібліотеки написано на C. Пишіть власний процесинг зображень на чистому python.
  • зав'язка на Google Accounts. Кожен раз при логін в ваш додаток, користувачі будуть знати про вашому виборі Google App Engine. Не бачу в цьому особливих проблем. Позитивний момент - краще рекламне позиціонування в AdSence.
  • повільне сканування таблиць. BigTable - це не MySQL. Читаємо документацію - міняємо мислення. Якщо ваші запити виконуються повільно, значить, швидше за все, ви використовуєте інструмент не вірно. Подивіться приклади, продумайте архітектуру ще раз.
  • потрібно на постійній взаємодії з хостом. Є тільки один спосіб запустити код з усіма особливостями середовища - це завантажити його на сервер. Це створює незручності, оскільки ви не можете "підняти" проект локально.

Інтернет-джерела:

http://community.livejournal.com/evan_tech/248465.html
http://www.niallkennedy.com/blog/2008/04/google-app-engine.html
http://www.tomstechblog.com/post/2008/04/Google-App-Engine-Free-and-still-barely-worth-it.aspx