Amazon EC2

Поигрался немного с Amazon EC2. Крутая штука. Но для персонального использования в качестве хостинга дороговато выходит: в простейшем варианте (1.7 Гб оперативки, 160 Гб диска, 1-1.2 ГГц Xeon в эквиваленте) обойдется от 75$ в месяц в зависимости от объема траффика. Но если сравнивать с ценами (не только российскими, кстати) на VPS средней и высокой мощности, то EC2 выглядит сильно привлекательней.

Среди плюсов по сравнению с обычными VPS стоит отметить:

  • Огромный выбор образов операционнок, в том числе и со всякими опциями типа “плюс  nginx, плюс php”. Равно как и возможность легким движением руки создать свой образ с нужным софтом и настройками.
  • Практически мгновенное создание сервера и его запуск.
  • Настраиваем на сервере всё, что нужно – и делаем из него образ. Дальше в случае факапа восстанавливается моментально. Стоимость хранения образа и траффика – копейки.
  • Удобно для проверки чего-либо и тестирования: создали сервер, поигрались, выключили. Заплатили только за использованое время, с точностью до часа. Рабочий день – 8 часов – стоит в простейшем варианте 80 центов.
  • Не надо париться с предоплатой. Амазон спишет бабло с карточки первого числа следующего месяца.
  • Заметно больше оперативной памяти, диска и CPU по сравнению с аналогичными по цене VPS.

Недостатки:

  • Ненадежность хранения данных в локальном сторадже сервера. Выключение сервера, ошибки софта или железа приводят к потере данных. Для критичных данных надо использовать Amazon S3 или своё хранилище. Что требует дополнительной разрабоки. Вроде как эта проблема также решается с помощью Amazon EBS (Elastic Block Store), который в том числе умеет делать снэпшоты в S3, но лично мне не понятно “на пальцах”, 1 млн. i/o запросов (которые стоят 10 центов)  – это много или мало?
  • Не понятна скорость работы как локального стораджа, так и EBS. От чего она зависит и её стабильность. Отсюда, среди прочего, следует применимость EC2 в качестве хостинга для нагруженных веб-приложений и баз данных.

Полезность  EC2 навскидку видится в следующем:

  • Можно быстро создать сервер с нужной ОС для тестирование чего угодно. Протестировать и выключить сервер.
  • Если периодически требуются заметные вычислительные мощности для обсчета чего-либо (например, парсинг больших логов), можно создать сервер (или несколько), посчитать что нужно, убить сервер. Легко поддается автоматизации.
  • Создание и тестирование прототипов расределенных систем. Наделали сколько нужно серверов нужной мощности, поставили тестируемый софт, посмотрели как оно всё живет. А потом уже отправились в магазин покупать нужное количество дорогих железных серверов. 
  • Масштабируемые системы. Ну тут всё понятно. Создаем сколько нужно серверов из образа. Наверное удобно держать нужное количество серверов в зависимости от времени суток: в пике нагрузки – побольше, ночью – поменьше.
  • Продажа готовых приложений. Развернули образ, подправили конфиг, отдали клиенту. Дальше можно самим брать бабло с клиента за использование EC2 (фактически получается модный SaaS), а можно продать целиком образ внутри EC2, вроде как Амазон это умеет.