Если вы работаете над проектом, который должен достичь большого масштаба, необходимо сбалансировать несколько проблем. Какие предположения мы делаем и как их подтвердить? Как быстро выйти на рынок? Будет ли наш дизайн поддерживать ожидаемый масштаб?
Один из вопросов масштабирования — стоимость инфраструктуры. Облачные провайдеры позволяют создавать тысячи процессоров и размещать терабайты данных одним щелчком мыши. Но это стоит дорого, и то, что незначительно для нескольких тысяч пользователей, может стать огромной дырой в бюджете, когда вы выйдете на миллионы пользователей.
В этой статье я перечислю некоторые справочные цифры, которые полезно иметь в виду при рассмотрении архитектуры. Эти цифры не предназначены для точной оценки бюджета. Они помогают определить, есть ли смысл у вашего дизайна или он выйдет за рамки того, что вы можете себе позволить. Поэтому рассмотрим порядки величин и относительные значения, а не абсолютные значения.
Также учтите, что ваша компания может получать скидки от AWS, и это может иметь огромное значение.
Вычисления
Какова нынче стоимость CPU? Через замечательный интерфейс ec2instances.info я получил медианные цены vCPU.
Вы можете получить исходные данные с репозитория Github. Я их скопировал и обработал питоновским скриптом, который тоже взял на Github. Все цены указаны для региона eu-west-1.
| Медианная месячная цена | |
|---|---|
| 1 современный vCPU (4 AWS ECUs) | $58/месяц |
| С 1 годом конвертируемой резервации | $43/месяц |
| С 3 годами конвертируемой резервации | $30/месяц |
| Со спотовой ценой (ориентировочно) | $30/месяц |
Я оценил спотовые цены по словам различных пользователей. Так как цены меняются в течение дня, я не смог найти надёжный источник данных.
AWS представляет вычислительную мощность своих машин в Elastic Compute Units, а 4 ECU более-менее соответствуют мощности современного процессора. Таким образом, цены выше показаны для одного процессора или ядра, а не одного инстанса.
Вот цена 1 ECU в долларах в час во всех типах инстансов, которые я оценил:

И вот как цены по запросу сравниваются с одно- и трёхлетним бронированием (авансовые платежи):

Хранение
Итак, вы хотите низкую задержку, высокую пропускную способность и планируете хранить всё в Redis? Тогда поверх этих расходов на CPU нужно будет заплатить за RAM.
Я использовал тот же подход для получения медианной цены 1 ГБ оперативной памяти на EC2. Elasticache примерно в два раза дороже on-demand, но цены довольно быстро падают в зарезервированных инстансах.
| Медианная месячная цена | |
|---|---|
| 1 ГБ RAM | $10/месяц |
| 1 ГБ RAM при годичном резервирования | $8/месяц |
| 1 ГБ RAM при трёхлетнем резервировании | $5/месяц |
| SSD | $0,11/месяц |
| HDD | $0,05/месяц |
| S3 | $0,02/месяц |
| S3 Glacier | $0,004/месяц |
Хотя это чистая стоимость хранения, также нужно посмотреть на шаблоны использования ваших данных. Сколько процессора нужно для круглосуточной работы в памяти 24/7?
То же самое для S3: сколько вы будете платить за запросы на чтение/запись? Я видел рабочие нагрузки, где стоимость хранения на S3 была незначительной, но стоимость записи большого количества объектов в S3 заставила команду написать собственную файловую систему поверх S3.
Передача
Несколько комментариев на HackerNews указали, что я упустил расходы на передачу. Действительно, если вы предоставляете данные конечным пользователям или нужна межрегиональная репликация, нужно учитывать эти затраты.
| Тип передачи данных | Стоимость передачи 1 ГБ |
|---|---|
| EU/US регион в любой другой регион | $0,02/ГБ |
| APAC регион в любой другой регион | $0,09/ГБ |
| EU/US регион в Интернет | $0,05/ГБ |
| APAC регион в Интернет | $0,08/ГБ |
| Между двумя AZ одного региона | $0,01/ГБ |
| Внутри одной AZ | Бесплатно |

