
Вступление:
Наиболее интересная часть разработки обычно приходится на первые 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 |
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 тысяч в день | -- | -- |
Краткое сравнение платных ресурсов:
Когда с моими проектами случится хабраэффект =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 (GAE)
Плюсы
- Для GAE быстро и легко разрабатывать
- Не требует усилий по обслуживанию
- Очень щедро выделены ежедневные бесплатные ресурсы
- Вполне разумные цены при превышении квот
- Лёгкое и быстрое выкладывание
Минусы
- Некоторые приложения будет невозможно реализовать
- Контролируемое окружение не позволяет использовать некоторые стандартные библиотеки/фреймворки
- Не поддерживаются реляционные базы данных
- Может потребоваться дополнительная работа при миграции с GAE (если понадобится)
Amazon Web Services (AWS)
Плюсы
- Очень гибкая система, можно сделать всё, что захочешь
- Есть полный контроль над машиной
- Простая структура оплаты, меньше квот, за которыми надо следить
- Можно использовать любую БД, какую захочешь, есть шелл, ftp — всё, что придумаешь
- Если захочется, можно запускать приложение на любом сервере за пределами AWS
Минусы
- Высокая кривая обучения
- Уйма возможностей оставлена на разработчика и вы должны сами со всем разбираться
- Сделать простенькое веб-приложение занимает гораздо больше времени
- Цены не такие либеральные, как в GAE
- Куча забот по поддержке серверов
Вывод:
Честно говоря, я думаю, что это сравнение было немного нечестным. Мои потребности сильно отличаются от потребностей типичного бизнеса, когда ищут максимальную гибкость и могут нанять инженеров на полный рабочий день, чтобы они изучили всё от и до, а заодно поддерживали сервера. Мне же нужна платформа, на которой я смогу быстренько реализовать пришедшие мне в голову идеи, не сильно переживая по поводу больших цен, и на данный момент Google App Engine подходит лучше, чем Amazon Web Services. GAE без сомнения накладывает больше ограничений и кое в чём он хуже, чем AWS, но я думаю, что я вполне способен работать в этих рамках и сделать высококачественный продукт. Так что я выбрал Google App Engine в качестве своей платформы облачных вычислений — и посмотрим, что из этого выйдет.

Победитель: Google App Engine
Ссылки:
- http://consultingblogs.emc.com/jaddy/archive/2010/04/09/google-app-engine-amazon-web-services-and-the-cloud.aspx
- http://stackoverflow.com/questions/791447/windows-azure-vs-amazon-ec2-vs-google-app-engine
- http://www.ardentlord.com/apps/blog/show/829881-spring-3-0-on-google-app-engine
- http://www.acrhodes.com/2010/02/spring-3-0-with-google-app-engine/
- http://www.royans.net/arch/google-app-engine-java-edition/
- http://code.google.com/p/appscale/
- http://ru.wikipedia.org/wiki/Google_App_Engine
- http://code.google.com/appengine/
- http://aws.amazon.com/