Заголовок этого поста — прямая отсылка к диаграмме «Времена задержек, которые должен знать каждый программист». В настоящее время есть несколько версий этой диаграммы, и трудно установить оригинального автора. Некоторые говорят, что это Джефф Дин.

Если вы работаете над проектом, который должен достичь большого масштаба, необходимо сбалансировать несколько проблем. Какие предположения мы делаем и как их подтвердить? Как быстро выйти на рынок? Будет ли наш дизайн поддерживать ожидаемый масштаб?

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

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

Также учтите, что ваша компания может получать скидки от 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 Бесплатно

Комментарии (1)


  1. darken99
    18.06.2019 14:08

    Вы посчитали среднюю температуру по больнице включая морг (с)


    1. Цена CPU ничего не дает, т.к. есть еще много других параметров
      t3.nano имеющий 1 vCPU будет стоить $4.38 в месяц без каких-либо резерваций, а он же, но Spot смешные $1.224 в месяц
    2. Историю прайса на споты можно посмотреть тут — кнопка "Pricing History" в меню сверху
    3. Для подбора правильного инстанса по базовым параметрам CPU, MEM лучше пользоваться калькулятором