Google App Engine це платформа пропонована компанією Google для веб-розробників. Не буде перебільшенням, сказати, що проблема зростання і розумної економії на масштабованості і продуктивності стоїть перед розробниками з самого початку роботи над проектом. З одного боку, величезна кількість стартапів, розробники яких навіть приблизно не можуть уявити собі характер і обсяг навантажень на сайт, а бажаючи мати певний запас продуктивності оптимізація, часто, починається з перших рядків коду. З іншого боку, треба сказати що додатки, які повинні легко масштабироваться мають досить складну архітектуру всередині, і написання такого коду, теж вельми специфічне. Відділ потрібно згадати те, що підтримка такої, горизонтально масштабарованной, інфраструктури в робочому стані, досить клопітка і дороге захід. В індустрії створення високонавантажених додатків, безумовним флагманом, є Google. Свій досвід вони пропонують розробникам у вигляді Google App Engine .
Для тих, хто зовсім нічого не чув про GAE, рекомендую ознайомиться зі статтями про швидкий старт з GAE , Модель і контролер .
Поговоримо трохи про достоїнства платформи:
- в першу чергу, це, звичайно масштабованість «з коробки», про яку абсолютно не треба піклується. Гарантований uptime 99.9%, ніяких бекапів, реплікації і інших мук в високонавантажених додатках.
- всі розробники, як один, захоплюються тим як добре документований GAE, і тим як просто зробити свій перше hello world
- прозора інтеграція з аккаунтом Google і численними сервісами
- підтримка Java і Python «з коробки» і величезна кількість скриптових мовою «з під Java»
- зручний сервер для розробки і проста утиліта деплоя
- величезну кількість open source проектів є гарною підмогою в розробці на GAE
Як завжди в бочці меду, виявиться ложка дьогтю.
- огранічеіе на розмір файлу: 1 мегабайт
- ще одне цікаве обмеження, - на запит, не більше мільйона циклів CPU на запит. У вас немає нікаккіх інсрументом, що дозволяють оцінити, профілювати ці самі цикли, і на локальному сервері цього обмеження немає. Таким чином, приготуйтеся до того що ваше складний додаток почне розвалюватися після деплоя, ймовірно, випадковим чином.
- дуже повільне локальне сховище даних, хоча на сервері, після деплоя робота зі сховищем теж неоднозначна, плюс на роботу зі сховищем також накладаються обмеження і квоти
- завантажувач (bulk uploader) досить повільний і часто генерує 500ю помилку.
- треба говорити - але у вас немає рутових прав
- докладніше про обмеження можна почитати тут
Виходячи з цього перерахованого вище, я думаю ідеальне застосування для GAE це маленькі стартапи, нездатні спланувати трафік на свої додатки і побудувати дорогу інфраструктуру, здатну витримати «наплив», в разі успіху. Це можуть бути всілякі віджети, програми для соціальних мереж, ігри, з нересурсоємних серверної логікою.
Деякі висновки, про те як використовувати GAE більш ефективно:
- переносите логіку і функціонал на клієнт, - всякого роду логіка на JS, Flash, Flex, Silverlight, etc
- використовуйте memcache для кешування запитів до сховища
- використовуйте sharded counters для статистики
- відсилання листів забирає багато CPU, краще використовувати tasks або cron
- використовуйте кілька GAE додатків, для різних потреб, замість одного великого. Це має сенс для збільшення квот і поділу статистики.
- використовуйте пакетне збереження і вилучення даних зі сховища
Comments
comments
