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