Типичная цена AWS для примера стека MERN

Раньше я избегал таких облачных хостинговых платформ, как AWS, по нескольким причинам. Один из них - ценообразование. Стоимость каждого элемента устанавливается отдельно, что затрудняет понимание общей картины, когда вы только начинаете работать с AWS. Некоторые цены могут быть более сложными, если вы не понимаете всех условий AWS.

В этой статье мы рассмотрим необходимые сервисы для стека MERN и то, как мы можем оптимизировать их затраты.

Расчет стоимости может быть непростым. К счастью, есть инструменты, чтобы упростить это, и мы рассмотрим их. При использовании AWS вы не знаете, сколько вам придется заплатить, пока не получите счет. Платежи производятся автоматически с помощью кредитных карт. Одна только мысль пугает, когда не знаешь, чего ожидать!

Большой опыт работы с AWS и понимание того, сколько что-то обычно стоит, значительно упрощают задачу. В этой статье мы рассмотрим типичные цены на различные предложения AWS, чтобы вы могли составить представление о том, сколько будет стоить конкретная архитектура.

Чем больше у вас опыта работы с AWS, тем удобнее будет ценообразование. Однако это не исключает риска дополнительных сборов. Давайте погрузимся.

Понимание терминологии

Одним из препятствий для начинающих AWS является понимание всех конкретных имен. Вам нужен зарезервированный инстанс, инстанс по требованию или спотовый инстанс? А как насчет плана сбережений?

Это может расстраивать понимание того, сколько вы на самом деле в конечном итоге заплатите и что вам понадобится. В идеале у вас должен быть некоторый опыт работы с предложениями AWS, так как это значительно упростит задачу. Тем не менее, мы рассмотрим наиболее часто используемые услуги и суммируем цены.

Обратите внимание, что цены постоянно колеблются. Обсуждаемые здесь цены относятся к региону eu-west-1 на июнь 2021 года, однако в каждом регионе свои цены.

Цены на общие сервисы AWS

Прежде чем продолжить, давайте представим, что мы хотим реализовать типичный стек MERN для малых и средних предприятий. Нам понадобятся как минимум следующие предметы:

  • Экземпляр MongoDB или Amazon DynamoDB
  • Вычислительный экземпляр для размещения нашей серверной службы, которая в данном случае будет службой NodeJS Express.
  • Место для хранения наших статических активов для нашего интерфейса React
  • CDN (сеть доставки контента), чтобы иметь стабильную скорость, независимо от того, где находится наш пользователь, и в качестве бонуса оптимизировать наши затраты на хранение статических файлов.

В целях моделирования мы также предположим, что можем оплатить услуги авансом за 1 год.

Вычислительные инстансы: EC2 (эластичное вычислительное облако)

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

Прежде чем мы продолжим, нам нужно понять различные типы доступных вычислительных экземпляров. Они бывают четырех видов. Зарезервированные, спотовые, по требованию и с сохранением планов. Если вы уже знаете различия, можете пропустить этот раздел.

Экземпляры EC2 по требованию. Это экземпляры, которые можно включить в любое время. Вы оплачиваете стоимость часа. Если вы остановите экземпляр, вам больше не придется платить за экземпляр, хотя вам все равно придется платить за его хранение. Это один из самых дорогих типов инстансов, поскольку он обеспечивает большую гибкость. Если задуматься, это невероятно удобно по сравнению с установкой физического сервера. Ваш сервер может быть запущен в течение минуты!

Зарезервированные инстансы EC2: до 75% скидки на инстансы по требованию.
Это инстансы, которые вы резервируете на определенный срок, от 6 месяцев до 3 лет. Вы можете выбрать полную предоплату или частичную оплату. Резервирование на долгое время с предоплатой намного дешевле, чем обычные инстансы по требованию.

Спотовые инстансы EC2: скидка до 90% на инстансы по требованию.
Этот тип экземпляра более сложный. Он работает аналогично фондовому рынку. Чем больше инстансов EC2 используется другими людьми, тем дороже будет инстанс EC2. Однако чем меньше инстансов EC2 работает на AWS, тем дешевле это будет. Это идеально подходит для некритических рабочих нагрузок, которые можно запускать по отдельности в любой момент времени. Это может быть очень дешево, дешевле, чем любой другой тип инстансов. Вы можете установить максимальную цену, которую хотели бы заплатить, и Amazon запустит сервер, как только экземпляр будет доступен по этой или более низкой цене. Это означает, что Amazon может запускать и прекращать ваш сервис в любое время. Это можно использовать для сервисов обработки, которые можно запускать в произвольное время. Это не сработает для веб-серверов, где требуется круглосуточная безотказная работа.

В этом примере приложения предположим, что T3 small соответствует нашим потребностям. Это составляет 107 долларов в год. В месяц это будет 8,91 доллара США.

Базы данных: DynamoDB

DynamoDB, полностью управляемая база данных NoSQL от Amazon, бывает двух типов. Предоставлено и по запросу. Как и в случае с EC2, использование ресурсов по требованию будет дороже, чем предоставление ресурсов.

В этом случае подготовленный тип относится к использованию предсказуемого количества операций чтения / записи в базе данных.

Чтобы дать вам представление о ценах на DynamoDB по требованию:

Запросы на запись: 1,4135 доллара за миллион запросов на запись
Запросы на чтение: 0,283 доллара за миллион запросов на чтение

Вам также придется платить за фактическое хранилище базы данных помимо запросов. Первые 25 ГБ в месяц бесплатны. Вам придется заплатить 0,283 доллара США за каждый дополнительный ГБ-месяц.

Кроме того, существует больше вариантов цен на резервные копии и так далее.

При быстром моделировании, если у нас будет 3,5 миллиона операций записи и 3,5 миллиона операций чтения в базе данных объемом 20 ГБ, это составит около 5,33 доллара США в месяц.

Базы данных: MongoDB

Для AWS также доступно полностью управляемое решение MongoDB под названием MongoDB Atlas. Согласно их странице с ценами, экземпляр MongoDB с 2 ГБ ОЗУ будет стоить около 57 долларов США в месяц, хотя более дешевый экземпляр также может соответствовать вашим потребностям.

Хранение статических файлов: S3 (простая служба хранения)

Стоимость статического файлового хранилища Amazon для базовых ситуаций довольно проста. Однако, если вы хотите сэкономить деньги и оптимизировать свои расходы, это может стать немного сложнее. Конкретный тип ценообразования может быть установлен для отдельных файлов.

S3 Standard. Это стандартная цена на данные, которые в случае сбоя будут реплицированы в нескольких зонах службы AWS. Это рекомендуется для стандартных и активно используемых файлов.

S3 нечастый доступ (IA): в этом ценовом классе стоимость хранения файлов невысока, однако получение файла обходится дороже. Это идеально подходит для редко используемых файлов. Файлы по-прежнему будут реплицироваться в разные зоны для избыточности. Получение файлов по-прежнему происходит быстро.

S3 Glacier: похож на S3 IA, но с еще более дешевыми ценами на хранение и более высокой скоростью извлечения. Это идеально подходит для архивирования файлов, например, для юридических обязательств по хранению определенных файлов. Поиск файлов происходит медленнее, от минут до часов.

S3 Deep Archive: похож на S3 Glacier, но дешевле и с более медленным извлечением, обычно в течение нескольких часов.

Интеллектуальное многоуровневое хранение S3: этот уровень позволяет AWS автоматически выбирать наиболее подходящий уровень для ваших файлов в попытке оптимизировать расходы. При этом взимается дополнительная плата за мониторинг хранилища.

В качестве примера возьмем хранилище S3 объемом 1 ГБ. Для нашего приложения React это не должно превышать 1 ГБ. Текущая цена Amazon на S3 Standard составляет 0,023 доллара за гигабайт в месяц. Кроме того, стоимость операции с файлами S3 составляет 0,005 доллара США за 1000 операций.

Если у нас есть 1 ГБ данных с 3 миллионами запросов в месяц, это будет стоить нам около 15 долларов США. Однако, добавив CDN перед нашим хранилищем S3, мы можем значительно снизить затраты на извлечение S3, поскольку часто используемые файлы будут кэшироваться в CDN, и их не нужно будет извлекать несколько раз.

С установкой CDN поверх нашей корзины S3 само ведро S3 должно стоить нам не более нескольких долларов для нашего стека MERN.

Сеть распространения контента: CloudFront

Далее мы хотим настроить сеть распространения контента, которая будет размещаться перед статическими файлами, такими как приложения и ресурсы React.

Сеть CDN, предоставляемая AWS, называется CloudFront. В зависимости от регионов, в которых вы настроили работу CloudFront, действуют разные цены. Давайте рассмотрим худший вариант - 0,12 доллара США за гигабайт. Далее идет цена за 10 000 запросов, в худшем случае это 0,022 доллара США. Для 1 миллиона запросов это составит 2,2 доллара в качестве стоимости запроса. Что касается выделенного ГБ, допустим, 20 ГБ, это снизится до 2,4 доллара США.

Также существует дополнительная плата за аннулирование, если вы хотите аннулировать кеш по требованию. Первые 1000 запросов об аннулировании в месяц подаются бесплатно. Для нашего небольшого приложения этого более чем достаточно.

Это снизится до 4,6 доллара США в месяц для нашего CDN.

Сводка цен для нашего стека MERN

Полная разбивка цен за месяц:

  • Вычислить: EC2 (зарезервировано): 8,91 долл. США
  • Статические файлы: Standard S3: 2 доллара США
  • База данных: DynamoDB: 5,3 доллара США
  • CDN: CloudFront: 4,6 доллара США
  • Итого: 20,81 доллара США

Это цена очень стабильной установки для приложения, которое будет использоваться. Для небольших приложений вы, безусловно, можете обойтись более дешевыми установками. Для начала обычно достаточно экземпляра T3.nano EC2, который в 3 раза дешевле, всего за 2,25 доллара США в месяц. В результате общая сумма упадет до 14,15 долларов США. При запуске другие затраты, такие как статические файлы, база данных и CDN, также будут ниже.

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

Инструменты расчета

Теперь у нас есть представление о различных вариантах стека MERN на AWS. Более точная оценка ваших затрат - это всегда хорошо. Существует несколько инструментов, позволяющих составить карту запрашиваемой архитектуры и оценить цены.

Официальный инструмент AWS - AWS Calculator. Другие веб-сайты предлагают аналогичные оценки, но при этом могут рисовать вашу архитектуру, например CloudCraft, у них есть прекрасный инструмент для создания трехмерных и двухмерных архитектурных диаграмм. В качестве бонуса при составлении схемы архитектуры дается оценка стоимости.

Услуги по выставлению счетов и тегам

Наконец, вы захотите узнать, куда уходят ваши деньги на платформе AWS. Для этого к большинству сервисов AWS можно добавить специальный тег. Мы можем создать тег project и присвоить ему имя нашего проекта. Таким образом, при использовании AWS Cost Explorer вы сможете увидеть разбивку цен на услугу и проект. Настоятельно рекомендуется правильно пометить ресурсы AWS.

Резюме

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

Перед началом вашего проекта было бы неплохо составить карту своей архитектуры и оценить ее стоимость с помощью таких инструментов, как Калькулятор AWS или CloudCraft.

Дальнейшее чтение

У AWS есть собственная страница по оптимизации затрат, которую я рекомендую прочитать.



Я также рекомендую прочитать статью Nutanix об оптимизации затрат на EC2, поскольку она очень ясна и содержит много деталей. EC2 - очень важная услуга в предложении AWS.



Больше контента на plainenglish.io