Всё на AWS так или иначе крутится вокруг EC2 - Elastic Computing Cloud. По сути это обычная виртуалка, куда вы можете поставить Wordpress, VPN, GitLab и т.п. Эти виртуалки можно объединять в группы балансировки нагрузки, назначать им внешние IP, запускать по расписанию, использовать для Docker-контейнеров - возможностей море, но надо уметь всем этим добром рулить. В этом же разделе я рассмотрю и Elastic Block Storage (EBS) - неотъемлимую часть виртуалки, её файловую систему. К слову, управление томами хранения и их снимками порой не так очевидно, как хотелось бы.
Работа с EC2 начинается с покупки инстанса. Вариантов несколько, и в зависимости от его назначения можно неплохо сэкономить на этом шаге:
Instances - здесь находятся все инстансы, заказанные на неопределённое время. Плата взимается за час пользования, без каких-либо авансовых платежей. Для примера, стоимость c4.large будет $0.113/час. Это самый дорогой вариант размещения. Подойдёт для кратковременной нагрузки или экспериментов.
Spot Requests - торги, на которых вы сами выставляете желаемую цену за машину. Amazon’у не выгодно простаивающее железо, так что довольно часто он распродаёт излишки. Как только цена оказывается ниже вашего запрос - инстанс запускается; выше - инстанс останавливается. Текущие цены можно посмотреть здесь. Например, тот же самый c4.large на данный момент торгуется по $0.0197/час, то есть более чем в 5 раз дешевле.
Reserved Instances - зарезервированные на долгий срок (1 или 3 года) инстансы. Ваш выбор, когда определились с кол-вом машин для production, stage, CI/CD… Позволяют неплохо сэкономить - c4.large при аренде за год обойдётся всего в $0.075/час, а на 3 года - $0.055/час. Платить можно как сразу за весь период, так и 50%, и даже 0%. То есть вы можете сказать AWS, что намерены использовать такой инстанс весь срок, но выплачивать будете с рассрочкой на каждый месяц. Существует также понятие “конвертируемый 3-летний срок”, в течении которого вы можете изменять тип инстанса.
Scheduled Instances - инстансы, которые закупаются регулярно на непродолжительное время (но больше 100 часов в месяц). Стоят также, как и обычные инстансы по запросу, минимальный тип c4.large. Это относительно новый вариант аренды, так что я ещё не нашёл для него подходящий use case.
Dedicated Hosts - аренда отдельно стоящей физической машины. Очень дорого и имеет смысл только при заказе большого кол-ва однотипных инстансов для проекта, который требует отдельностоящего сервера. Например, c4 по требованию обойдётся в $2/час, но на него можно поместить 16 c4.large виртуалок, каждая из которых стоит $0.113/час, что в сумме будет $1.8/час.
В официальной документации неплохо расписаны все типы инстансов, так что я ограничусь краткими комментариями. Сводная таблица доступна здесь. * T2 (Test) - самые дешёвые и самые слабые инстансы, которые не сильно загружены. У них единственных есть понятие CPU Credit, о которых ниже я расскажу подробнее. Более того, такие инстансы доступны только при заказе по требованию (on-demand) или при резервировании.
M3/M4 (Memory) - акцент на кол-ве оперативной памяти Для M4 используются процессоры Broadwell и Haswell; для M3 - только Ivy Bridge.
C3/C4 (Computing) - акцент на вычислительной мощности. Поддерживает улучшенную сетевую конфигурацию.
X1 (eXtreme) - огромное кол-во оперативной памяти (от 976 Gb).
R3/R4 - удвоенное количество оперативной памяти относительно M-типов. Подходят для кластеров Hadoop или Spark, (и, внимание, SharePoint!)
P2 - инстансы с GPU для моделирования процессов и рендеринга.
G2 - инстансы с GPU для кодирования видео.
F1 - инстансы с FPGA.
I3 - акцент на I/O для системы хранения - NVMe SSD, начиная от 470Gb. Отлично подойдёт для баз данных, особенно NoSQL.
D2 - акцент на системе хранения, только на сей раз в сторону объёма.
Это понятие касается только t2.* машин. В то время, как все остальные инстансы работают с фиксированой частотой процессора, тестовые умеют накапливать условные единицы при простое и тратить при увеличении нагрузки. 1 CPU Credit равен 100% CPU в течение 1 минуты, либо 50% за 2 минуты, либо 25% за 4… Все кредиты теряются при выключении машины. <вставить таблицу на http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html#t2-instances-cpu-credits> В боевом режиме такие инстансы можно использовать только тогда, когда вы не планируете большой постоянной нагрузки, либо объединять их в Auto Scaling Group. В любом случае мониторинг на текущее количество CPU Credit не повредит, и если вы не можете даже подключиться к машине - в первую очередь проверьте их наличие. Перезагрузка поможет заново получить минимальный запас, чтобы хотя бы зайти на неё.