- PVSM.RU - https://www.pvsm.ru -

Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это?

Наверняка все слышали про Amazon Web Services (AWS). А некоторые даже заглянули на страницу Pricing [1]. И заметили, что цены там заметно выше, чем на DigitalOcean, Linode, Hetzner Cloud и др. Вот таблица для сравнения цен:

Тип RAM CPUs Диск Трафик Цена
DigitalOcean - 4 GB 2 vCPUs 80 GB 4 TB $20
Linode Linode 4GB 4 GB 2 vCPUs 80 GB 4 TB $20
AWS t2.medium 4 GB 2 vCPUs - - $40

Amazon берёт деньги за трафик, причём цены тоже не низкие:

Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это? - 1

Так для чего же тогда выбирать Amazon? Вот какие причины вижу я:

  1. Большое количество полезных сервисов.
  2. Free Tier.

О втором и пойдет речь в этой статье.

На странице с ценами есть ссылку на страницу с уровнем бесплатного пользования [2], которая гласит что многими сервисами можно пользоваться бесплатно в течении 1 года.

Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это? - 2

Этого вполне достаточно чтобы целый год держать бесплатно полноценный сайт или бекенд мобильного приложения / игры или чего-то ещё. К тому же:

  • Можно завести произвольное количество аккаунтов (Amazon этого не запрещает, гуглил по иностранным форумам), если ресурсов 1 аккаунта не хватает.
  • Можно настроить Auto Scaling Group, в которой будет 1 бесплатная VM, а при пиковых нагрузках будут добавляться платные с почасовой оплатой. Максимальное число VM задаёте вы сами.
  • После года можно завести новый аккаунт, перенести данные и пользоваться ещё год.
  • Год — это достаточно много для начинающего проекта, чтобы он загнулся или же наоборот, выстрелил.

Ценообразование на AWS очень коварное, поэтому советую привязать к аккаунту виртуальную карту. Даже на уровне бесплатного использования можно влететь на значительные суммы. Ниже я поделюсь своим опытом.

Ценообразование pay-as-you-go пугает, поскольку не можешь точно спрогнозировать расходы на конец месяца. Признаться, я бы не стал им пользоваться, если бы не опыт, полученный на работе, где за чужие деньги не страшно.

При работе с AWS нужно быть внимательным с момента регистрации. Из личного опыта: когда регистрировался первый раз, выбрал тариф Developer (ну я же разработчик, значит для меня) и не заметил, что у этого тарифа абонентская плата $20 в месяц.

Итак, что мы имеем бесплатно в течение года после регистрации:

  • 1 виртуальный сервер (EC2) — 1 vCPU, 1 ГБ RAM, 30 ГБ диск, 1 статический IP-адрес (t2.micro).
  • 1 сервер Redis или Memcached (ElastiCache) — 1 vCPU, 0,555 ГБ RAM (cache.t2.micro).
  • 1 сервер ElasticSearch — 1 vCPU, 2 ГБ RAM, 10 ГБ диск (t2.micro.elasticsearch).
  • 1 сервер MySQL, PostgreSQL или SQL Server (RDS) — 1 vCPU, 1 ГБ RAM, 20 ГБ диск (db.t2.micro).
  • 1 балансировщий нагрузки (Elastic Load Balancer) — 15 ГБ трафика в месяц.
  • Файловое хранилище (S3) — 5 ГБ, 20K запросов Get, 2K запросов Put в месяц.
  • CDN (CloudFront) — 50 ГБ исходящих данных, 2M запросов в месяц.

Бесплатно всегда:

  • Рассылка email-ов (SES) — 62К сообщений в месяц.
  • Функция как услуга [3] (Lambda) — 1M запросов в месяц.
  • NoSQL база данных (DynamoDB) — 25 ГБ хранилища, 200M запросов в месяц.
  • Средство реализации API (API Gateway) — 1M вызовов API в месяц, работает в связке с Lambda.
  • Мониторинг (CloudWatch) — 10 предупреждений по 10 метрикам.

Не относится к Free Tier, но тоже бесплатно:

  • Certificate Manager — позволяет бесплатно создавать SSL-сертификаты для ваших доменов, которые можно использовать в Load Balancer, CloudFront и других сервисах Amazon. Но его не получится использовать непосредственно на виртуальных серверах.

Как следить за затратами

После того как вы создали необходимые инстансы, загрузили данные, настроили CloudFront, полезно настроить CloudWatch и бюджет. Без этого можно получить неожиданный счёт в конце
месяца за трафик.

CloudWatch — это сервис для мониторинга различных метрик ваших серверов и используемых сервисов: загрузка процессора, число операций ввода/вывода и самое главное — трафика.

С помощью него можно настроить отправку предупреждения на почту или вызвать webhook (например, для отправки сообщения в Телеграм) если трафик превысил заданное значение за заданный период времени. Например, отправить сообщение в Телеграм если трафик CloudFront превысит 1 Гб за 5 минут. Минимальный доступный интервал времени — 1 минута.

Скриншот страницы CloudWatch с настроенными предупреждениями:
Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это? - 3

Бюджет позволяет задавать месячный лимит затрат, при превышении которого будет отпралено предупрежлении по аналогии с CloudWatch. Можно создать бесплатно до 3 бюджетов.

Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это? - 4

Из личного опыта: однажды на своём сервере поднял CORS-прокси crossorigin.me [4] и один товарищ (не буду говорить как он узнал о существовании прокси) начал качать через него YouTube. Я это обнаружил, когда он успел накачать на $17, после чего я остановил прокси.

Реальный пример

  • 1 балансировщик нагрузки
  • 1 виртуальный сервер
  • Образы сервера для балансировщика нагрузки ($0.33 в месяц)
  • 1 сервер Elasticsearch для логов
  • 1 сервер MySQL
  • 3 таблицы DynamoDB
  • 2 домена в Route 53 ($0.5 за каждый, итого $1 в месяц)
  • Статический сайт на S3 с кешированием в CloudFront
  • Gateway API + Lambda — API сервиса

Скриншот счёта за август:
Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это? - 5

Итог. AWS, при должной аккуратности и внимательности, позволяет значительно сэкономить на начальном этапе развития проекта.

Автор: Денис Гуков

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/amazon-web-services/291165

Ссылки в тексте:

[1] Pricing: https://aws.amazon.com/ru/pricing/services/

[2] уровнем бесплатного пользования: https://aws.amazon.com/ru/free/

[3] Функция как услуга: https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BA%D0%B0%D0%BA_%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B0

[4] crossorigin.me: https://corsproxy.github.io/

[5] Источник: https://habr.com/post/421991/?utm_source=habrahabr&utm_medium=rss&utm_campaign=421991