Pull to refresh

Google App Engine (GAE) против Amazon Web Services (AWS)

Reading time7 min
Views11K
Original author: David J Siu

Вступление:


Наиболее интересная часть разработки обычно приходится на первые 33% жизненного цикла проекта. А самое интересное — это создание чернового прототипа, демонстрирующего вашу идею. После этого момента возбуждение начинает постепенно снижаться по мере того, как вы начинаете высматривать, что бы подштопать, и стараетесь сделать ваше приложение достаточно масштабируемым, чтобы оно могло выдержать свою успешность. В настоящее время я — актёр-одиночка, так что с одной стороны у меня нет ресурсов, чтобы самому возиться с железом, а с другой — у моих проектов нет потребности в дата-центрах.

Цель моего анализа — сравнить двух основных игроков в мире облачных вычислений, Google App Engine (GAE) и Amazon Web Services (AWS). Оба неслабо разогнались за последние годы, но кто из них больше мне подойдёт? Давайте разбираться.

Требования:


Поддержка Java
  • Я писал на яве больше десяти лет (чёрт, ну я и старик), так что я чувствую себя довольно уверенно и замутить проектик мне быстрее всего на яве, а не на каком-либо другом языке. Я баловался и с Ruby, PHP и Python-ом, но это всё не моё.
Возможность лёгкой и быстрой разработки
  • Я не хочу ходить по граблям, чтобы что-нибудь сделать. Дайте мне некоторое количество инструментов, решающих большинство проблем, встречающихся каждому веб-разработчику — и больше мне ничего не надо.
Стандартность и уверенность в будущем
  • Вы никогда не знаете, какой проект взлетит ракетой и станет всеобщим хитом. Чтобы не тратить время попусту, платформа должна быть такой, чтобы вы могли добавить функциональности не надрываясь при этом. Также платформа должна позволять лёгкий переезд на другую платформу для облачных вычислений — если это потребуется. Я не хочу оказаться запертым на древней, закрытой, проприетарной системе, с которой не могу выбраться.
Высокая доступность и лёгкость в обслуживании
  • Последнее, что мне нужно — это чтобы меня будили ночью из-за того, что сервер не работает. Сервис, который я выберу, должен гарантированно работать и быть отказоустойчивым. Если проблемы всё-таки возникнут — они должны решаться легко и быстро, требуя от меня как можно меньше усилий.
Лёгкость выкладывания сборок
  • Одна из основных проблем в индустрии — это выкладывание сборок. Число проблем, создаваемых плохой системой управления обновлениями, может просто ошеломлять. Также нельзя недооценивать количество времени и ресурсов, пожираемых этими операциями. Я не хочу часами высиживать над скриптами, чтобы просто выложить код на несколько десятков серверов.
Лёгкость масштабирования
  • Я мыслю ПО-КРУПНОМУ. Система должна уметь динамически подстраиваться под любое увеличение требований к ресурсам. Должен быть лёгкий способ увеличить хранилище и процессорные ресурсы — и без программирования. Система должна уметь работать как с одним пользователем, так и с миллионами, без каких-либо проблем.
Гибкость
  • Я собираюсь воплотить кучу идей в некотором количестве надеюсь хороших продуктов и я не хочу быть ограничен в своих возможностях. Так как я ещё не знаю, что именно я буду делать, то система должна позволять абсолютно всё, чтобы моя креативность расцвела пышным цветом. Я буду использовать столько новых технологий, сколько смогу, и эти инструменты не должны иметь никаких проблем при работе на платформе облачных вычислений.
Дешевизна
  • Эй, я здесь деньги пытаюсь заработать. Я хочу получить так много, как только возможно, и я согласен платить справедливую цену за услуги, которые использую, но облачные вычисления должны быть осмысленны с финансовой точки зрения. Если же я не заработаю денег, то мне хотелось бы избежать банкротства, пока я пытаюсь улучшить мир.

Краткое сравнение соответствия требования:


Давайте посмотрим, как GAE и AWS соответствуют некоторым из важных для меня требований:
Требование Google App Engine (GAE) Amazon Web Service (AWS) Победитель
Поддержка Java Да, ограниченная Да AWS
Лёгкая и быстрая разработка Да Нет GAE
Стандартность и уверенность в будущем Ограниченная Да AWS
Высокая доступность Да Да Ничья
Лёгкость в обслуживании Да Нет GAE
Лёгкость выкладывания сборок Да Да, с дополнительной работой GAE
Лёгкость масштабирования Да Да, можно сделать GAE
Гибкость Ограниченно Да AWS
Google App Engine очень хорошо соответствует большинству требований. GAE — это комплексная платформа, делающая разработку крайне быстрой и лёгкой, так как она предоставляет набор инструментов и средств управления, которые позволяют безболезненно создавать и выкладывать программы. В ней у вас есть готовые API для логина, хранения и индексации данных, отправки писем и даже для мемкешинга. Однако, из-за ограничений платформы GAE поддерживает только ограниченный набор явовских библиотек. Также, если вы захотите перенести ваше приложение с GAE в другое место, то это может оказаться довольно сложно, потому что вас заставляют использовать некоторые библиотеки, которые могут использоваться ТОЛЬКО в GAE. Однако есть платформа под названием AppScale, позволяющая запускать ваши GAE-приложения на Amazon Web Services — и это несколько уменьшает риск выбора GAE. Самая же большая проблема с GAE заключается в том, что так как это контролируемая среда, то есть целые тучи приложений, о которых вы можете забыть — и это может ограничить простор для творчества.

Amazon Web Services слегка отличается от Google App Engine, так как AWS — это скорее инфраструктура, а не платформа, и это означает, что у вас есть полный контроль над железом и всем, что на нём работает. Вы можете делать с машиной всё, что захотите, запускать любые программы и использовать любые библиотеки. Но «чем больше власть, тем больше ответственность» (как говорил дядя Бен в Человеке-пауке 2). Вы действительно можете выстрелить себе в ногу в AWS, так как вы предоставлены сами себе в том, что касается логина пользователей, базы данных или memcache. Возможность всё это сделать у вас есть, но кроме этого вы должны быть готовы всё это и поддерживать. Для Eclipse есть специальный плагин, упрощающий выкладывание сборок на AWS, но это всё равно очень сложно. Кривая обучения для AWS определённо проходит гораздо выше и потребуется потратить значительное количество времени, чтобы всё заработало.

Краткое сравнение бесплатных ресурсов:


Я хочу минимизировать стоимость вложений на данной стадии, так как я даже ещё не знаю, что буду разрабатывать. Давайте посмотрим, что я получу бесплатно!
Требование Google App Engine (GAE) Amazon Web Service (AWS) Победитель
Процессорное время: 6.5 CPU-часов в день ПЛАТНО! GAE
Запросы: 1.3 миллиона запросов в день -- --
Исходящий трафик: 1 Гб в день 1 Гб в месяц GAE
Входящий трафик: 1 Гб в день 1 Гб в месяц GAE
Дисковое пространство: 1 Гб ПЛАТНО! GAE
Количество индексов: 100 -- --
Запросы к хранилищу: 10 миллионов в день -- --
Запросы к почтовому API: 7 тысяч в день -- --
Получатели писем: 2 тысячи получателей в день -- --
Запросы URL-ов: 657 тысяч в день -- --
Сравнения не получилось. Google App Engine предоставляет гораздо больше бесплатных ежедневных ресурсов, чем Amazon Web Services. Большинство мелких приложений могут работать совершенно бесплатно на GAE, тогда как AWS заставит вас платить за любое количество посетителей. На GAE же ваше приложение может неплохо раскрутиться, прежде чем вам придётся увеличивать квоты. Однако есть одна вещь, которая мне нравится в AWS — это то, что они не следят за каждой мелочью, а просто сваливают всё в кучу и смотрят на процессорное время и трафик. А чем меньше количество отслеживаемых параметров, тем меньше вероятность, что что-то превысит квоту.

Краткое сравнение платных ресурсов:


Когда с моими проектами случится хабраэффект =D — мне надо будет приготовиться к худшему, а именно — к оплате за ресурсы, которые я использую. Я безусловно хочу самую низкую цену, так как я пытаюсь заработать деньги, а не потратить их.
Требование Google App Engine (GAE) Amazon Web Service (AWS) Победитель
Процессорное время: $0.10/CPU-час $0.085-$2.40/CPU-час GAE
Исходящий трафик: $0.12/Гб $0.08-$0.15/Гб GAE
Входящий трафик: $0.10/Гб $0.08-$0.15/Гб GAE
Дисковое пространство: $0.15 за Гб/мес $0.08-$0.15 за Гб/мес AWS
Получатели писем: $0.0001 за получателя -- --
Google App Engine опять вырывается вперёд в большинстве случаев — с очень умеренной ценой за процессорное время и трафик. Единственный пункт, где AWS выделяется, это потенциально более дешёвое дисковое пространство, но вам придётся записать больше 50 Тб, чтобы увидеть хоть какие-нибудь скидки.

Плюсы и минусы:


Google App Engine (GAE)

Плюсы
  • Для GAE быстро и легко разрабатывать
  • Не требует усилий по обслуживанию
  • Очень щедро выделены ежедневные бесплатные ресурсы
  • Вполне разумные цены при превышении квот
  • Лёгкое и быстрое выкладывание
Минусы
  • Некоторые приложения будет невозможно реализовать
  • Контролируемое окружение не позволяет использовать некоторые стандартные библиотеки/фреймворки
  • Не поддерживаются реляционные базы данных
  • Может потребоваться дополнительная работа при миграции с GAE (если понадобится)
Amazon Web Services (AWS)

Плюсы
  • Очень гибкая система, можно сделать всё, что захочешь
  • Есть полный контроль над машиной
  • Простая структура оплаты, меньше квот, за которыми надо следить
  • Можно использовать любую БД, какую захочешь, есть шелл, ftp — всё, что придумаешь
  • Если захочется, можно запускать приложение на любом сервере за пределами AWS
Минусы
  • Высокая кривая обучения
  • Уйма возможностей оставлена на разработчика и вы должны сами со всем разбираться
  • Сделать простенькое веб-приложение занимает гораздо больше времени
  • Цены не такие либеральные, как в GAE
  • Куча забот по поддержке серверов

Вывод:


Честно говоря, я думаю, что это сравнение было немного нечестным. Мои потребности сильно отличаются от потребностей типичного бизнеса, когда ищут максимальную гибкость и могут нанять инженеров на полный рабочий день, чтобы они изучили всё от и до, а заодно поддерживали сервера. Мне же нужна платформа, на которой я смогу быстренько реализовать пришедшие мне в голову идеи, не сильно переживая по поводу больших цен, и на данный момент Google App Engine подходит лучше, чем Amazon Web Services. GAE без сомнения накладывает больше ограничений и кое в чём он хуже, чем AWS, но я думаю, что я вполне способен работать в этих рамках и сделать высококачественный продукт. Так что я выбрал Google App Engine в качестве своей платформы облачных вычислений — и посмотрим, что из этого выйдет.


Победитель: Google App Engine


Ссылки:

  1. http://consultingblogs.emc.com/jaddy/archive/2010/04/09/google-app-engine-amazon-web-services-and-the-cloud.aspx
  2. http://stackoverflow.com/questions/791447/windows-azure-vs-amazon-ec2-vs-google-app-engine
  3. http://www.ardentlord.com/apps/blog/show/829881-spring-3-0-on-google-app-engine
  4. http://www.acrhodes.com/2010/02/spring-3-0-with-google-app-engine/
  5. http://www.royans.net/arch/google-app-engine-java-edition/
  6. http://code.google.com/p/appscale/
  7. http://ru.wikipedia.org/wiki/Google_App_Engine
  8. http://code.google.com/appengine/
  9. http://aws.amazon.com/
Tags:
Hubs:
+58
Comments59

Articles