# Amazon EC2

Linode -- отличный хостинг! Но когда держишь только статические сайты, начинаешь понимать, что стоимость в 20$ довольно существенная сумма. В очередной раз начал искать более дешевую альтернативу. при этом основным требованием было наличие SSH-доступа к серверу, так как публикация у меня проходит через использование rsync, а копировать по ftp уже не могу, отвык, слишком долго.

Начал искать **VPS** по меньшим ценам. Обратил внимание на облачный хостинг, *Selectel* и *Clodo*. Про тестирование производительности данных хостеров я писал в статье [Облачный хостинг][2]. Больше всего привлек мое внимание Selectel, но остановило от его использование то, что когда я пробовал его использовать, возникли проблемы с сетью, некоторые регионы для моей машины были недоступны.

В очередной раз обратил внимание на *Amazon* с его сервисом **EC2**. Так как *Amazon* использую уже давно и как сетевой диск и как хранилище данных для своих сайтов, знаю о том, что сервис очень надежный и качество его работы просто на высоте.

Останавливали только цены на аренду машин в EC2 ([Price][3]). Тариф *Micro* от 2.5 центов за час работы, тариф *Small* от 9.5 центов за час работы. Я рассматривал только вариант размещения в Европе, для обеспечения лучшей доступности сайта на территории России. То есть фактически за микро-машину нужно было заплатить порядка 20$ за месяц непрерывной работы, а за стандартную машину порядка 70$. О какой экономии может идти речь, если получается гораздо дороже? На этом остановимся чуть позже.

## Производительность

Для начала я решил провести тесты производительности машин на *Amazon*. Для чего создавал типовые конфигурации машин, устанавливал на них Nginx, проводил тест отдачи статического контента и затем проводил тест машины с использованием утилиты [UnixBench][4].

Если честно, тесты оказались "пустыми" и неутешительными. Пустыми, просто потому, что я вдруг осознал, что тест UnixBench, проведенный на веб-сервере не может показать ничего, что влияет на его работу. Цифры совершенно ничего не говорили. А неутешительными, просто потому, что *Amazon* показал очень скромные результаты.

1. *Micro* 32-bit показала результат в **63.1** балла [ec2-micro.bench][5]
2. *Micro* 64-bit показала результат в **85.1** балла [ec2-micro.ubuntu-64.bench][6]
3. *Small* 32-bit показала результат в **102.7** балла [ec2-small.fedora.bench][7], на debian результат чуть выше -- **118.3** балла [ec2-small.debian.bench][8]
4. Естественно, провел тест и Linode, результат оказался **1068.3** баллов [linode.bench][9].

Результаты не сопоставимы, разница в десятки раз! Но на деле заметно ли это? Совершенно нет. Что работать удаленно по SSH на сервере, что тест отдачи статики, показали очень быструю работу серверов *Amazon*, что же показывает тогда unixbench?? Вопрос пока остается открытым.

Кстати, при проведенном тесте производительности отдачи статики, сервера *Micro* и *Small* показали примерно одинаковый результат в **3000** запросов в секунду. Довольно не плохо, особенно, если учитывать, что сервер *Linode* показывал результат в **6000** запросов в секунду.

## Стоимость

20$ отдавать за менее мощный сервер? И это еще без учета стоимости трафика и оплаты использования EBS-тома? Складывается такое ощущение, что автор запутался и зашел немного не туда... Искал дешевле, а в итоге получается более дорогой вариант за менее мощную машину, в чем смысл??

Давайте еще раз посмотрим на [стоимость][3]? На странице приводиться специальный раздел, который называется *Reserved Instances*, это абонентская плата за год или три года сразу, резервирующая машинные ресурсы по значительно более низким ценам, чем обычно. К примеру, оплатив один год использования *Micro*-машины за 54$, стоимость одного часа опускается до 1 цента, то есть снижается в 2.5 раза!

Сделаем небольшой расчет. За основу возьмем *Reserved Instances* на три года за 84$ и будем использовать машину 100% времени.  Единовременно придется отдать порядка 84x30=2520 руб. Делим на 36 месяцев и получаем 70 рублей в месяц. В месяце обычно берут 750 часов, по одному центу за час работы, получаем 7.5$ или 225.0 руб. То есть без учета стоимости трафика и использования EBS-тома выходит 295 руб. в месяц. Что уже более чем в два раза ниже стоимости сервера на Linode!

## Тонкости

При оформлении *Reserved Instances* я столкнулся с неприятным моментом. Еще во время экспериментов я создал машину, которую планировал использовать как основную. Естественно, что когда создавал ее, не обратил внимания на то, в какой зоне создается машина. Указывал только, что создавать машину в Ирландии. Когда оплачивал *Reserved Instances*, указал, что машина будет размещаться в Ирландии, вроде все нормально, все параметры совпадали. Однако по прошествии суток обратил внимание на то, что в *Account Activity* слишком быстро растет стоимость использования машины.

Обратился в *AWS Customer Service and Billing*, на удивление они отвечают довольно быстро, примерно в течение часа-двух после обращения. Отвечают очень подробно и обстоятельно. В результате небольшой переписки с ними выяснилось, что имеет значение не только то, в какой стране размещается машина, но и зона размещения. Оплаченная зона и зона размещения у меня не совпадали.

Пришлось переносить все данные на новую машину, что создал в нужной зоне и уничтожать ту, что работала. И в этом моменте я несколько поторопился, тем самым усложнив свою работу.

Еще одна тонкость заключается в том, что стоит только перезагрузить машину, как она получает новый ip-адрес. Для того, чтобы домен указывал на определенную машину, или целую сеть, на *Amazon* есть специальная услуга, называется *Elastic IPs*. Это резервирование определенного ip-адреса и возможность его назначения любой работающей машине. Организовано это для быстрого разворачивания новых сетей, подключения более мощных машин. Пользователи при этом не замечают перебоев в работе.

Сам процесс правильного переноса заключается в том, что пока продолжает работать текущая машина, создаем новую машину, полностью ее настраиваем, организуем копирование данных с работающей машины, проверяем ее работу и только после этого перебрасываем значение *Elastic IPs* на новую машину, то есть фактически переключаем домен на новую машину. После чего уже можно будет удалять ту машину, что работала до этого момента.

Я же поступил, как раньше, остановил текущую машину, создал новую, настраивал ее, заливал данные, назначал ip-адрес. Естественно, что все время, пока создавал и настраивал новую машину, мои сайты не работали. Но как говорится, "хорошая мысля приходит опосля". По крайней мере теперь буду знать эту особенность и в будущем уже поступлю иначе.

## Выводы

*Amazon* используют не только в качестве web-серверов, но и в качестве ферм обработки данных, требующих больших затрат процессорного времени или большого объема оперативной памяти. В данных задачах альтернативы *Amazon* до сих пор нет. Ни по ресурсам, ни по стоимости.

Если же использовать машину 100% времени, то и в данной ситуации можно добиться значительного снижения стоимости использования машины. Делая *Amazon* конкурентоспособным и в случае размещения веб-серверов.

Производительности *Micro* машины с 618 мегабайтами памяти и одним ядром процессора в 2.27GHz, которое выделяется не равномерно, а согласно нагрузке (подробно на странице [Micro Instances][10]), вполне достаточно для размещения многих статических сайтов, или размещения Wordpress-сайта. Встречал статьи о том, что на подобных машинах размещали Drupal и все работало довольно быстро.

Если же требуется больше памяти и гарантированное выделение процессора, то стоит обратить внимание на тариф *Small*. Да, он дороже, но процессор выделяется полностью и объем оперативной памяти уже составляет 1.7 гигабайта.

Стоимость использования довольно конкурентна, при этом есть возможность использования дополнительных возможностей, таких как слепки жесткого диска, подключение дополнительных машин и т.д.

А некоторые ведь используют машины *Amazon* в качестве своих рабочих машин. Включая их по утрам, работая удаленно и отключая вечером.

Вне зависимости от того, как вы собираетесь использовать сервера, предложение *Amazon* очень интересное и заслуживающее внимания!

[1]: http://www.linode.com "Linode"
[2]: /2011/03/27/cloud-hosting/ "Облачный хостинг"
[3]: http://aws.amazon.com/ec2/#pricing "Amazon EC2 Price"
[4]: http://code.google.com/p/byte-unixbench/ "UnixBench"
[5]: https://static.juev.org/2011/04/ec2-micro.bench.txt "ec2-micro.bench"
[6]: https://static.juev.org/2011/04/ec2-micro.ubuntu-64.bench.txt "ec2-micro.ubuntu-64.bench"
[7]: https://static.juev.org/2011/04/ec2-small.fedora.bench.txt "ec2-small.fedora.bench"
[8]: https://static.juev.org/2011/04/ec2-small.debian.bench.txt "ec2-small.debian.bench"
[9]: https://static.juev.org/2011/04/linode.bench.txt "linode.bench"
[10]: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?concepts_micro_instances.html "Micro Instances"

