Google App Engine: гідності та недоліки

Вивчивши інформацію в інтернеті про 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. Читаємо документацію - змінюємо мислення. Якщо ваші запити виконуються повільно, значить, швидше за все, ви використовуєте інструмент не вірно. Подивіться приклади, продумайте архітектуру ще раз.

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

Крос-пост з сайту: www.pleso.net/ru/publications/2008/04/17/google-app-engine, автор — scater

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

community.livejournal.com/evan_tech/248465.html

www.niallkennedy.com/blog/2008/04/google-app-engine.html

www.tomstechblog.com/post/2008/04/Google-App-Engine-Free-and-still-barely-worth-it.aspx