Розміщення веб-додатків на Amazon Web Services. Дешево. Чи це можливо?

Напевно всі чули про Amazon Web Services (AWS). А деякі навіть завітали на сторінку Pricing. І помітили, що ціни там помітно вище, ніж на 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? Ось які причини бачу я:

 

  1. Велика кількість корисних сервісів.
  2. Free Tier.

 

Про друге і піде мова в цій статті.

 

На сторінці з цінами є посилання на сторінку з рівнем безкоштовного користування, яка говорить що багатьма сервісами можна користуватися безкоштовно протягом 1 року.

 

 

Цього цілком достатньо щоб цілий рік тримати безкоштовно повноцінний сайт або бекенд мобільного програми / ігри або чогось ще. До того ж:

 

  • Можна завести довільну кількість акаунтів (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К повідомлень в місяць.
  • Функція як послуга (Lambda) — 1M запитів в місяць.
  • NoSQL база даних (DynamoDB) — 25 ГБ сховища, 200M запитів в місяць.
  • Засіб реалізації API (API Gateway) — 1M викликів API в місяць, працює у зв’язці з Lambda.
  • Моніторинг (CloudWatch) — 10 попереджень по 10 метрик.

 

Не відноситься до Free Tier, але теж безкоштовно:

 

  • Certificate Manager — дозволяє безкоштовно створювати SSL-сертифікати для ваших доменів, які можна використовувати в Load Balancer, CloudFront і інших сервісах Amazon. Але його не вийде використовувати безпосередньо на віртуальних серверах.
Читайте також  Пишемо завантажувач ПЛІС в LabVIEW. Частина 2

 

Як стежити за витратами

 

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

 

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

 

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

 

Скріншот сторінки CloudWatch з налаштованими попередженнями:

 

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

 

 

З особистого досвіду: одного разу на своєму сервері підняв CORS-проксі crossorigin.me і один товариш (не буду говорити як він дізнався про існування проксі) почав качати через нього YouTube. Я це виявив, коли він встиг накачати на $17, після чого я зупинив проксі.

 

Реальний приклад

 

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

 

Скріншот рахунки за серпень:

 

Підсумок. AWS, при належної акуратності і уважності, дозволяє значно заощадити на початковому етапі розвитку проекту.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *