Короткий ответ
Имя типа инстанса обычно кодирует семейство (назначение: general purpose, compute-optimized, memory-optimized и т. п.), поколение оборудования и размер, пропорциональный количеству vCPU и памяти; точные цифры нужно сверять с документацией провайдера, так как соотношение CPU/RAM отличается у разных семейств.
Как это работает подробнее
буква/слово в начале указывает на оптимизацию (например, «c» — compute-optimized, «r»/«memory» — memory-optimized, «m»/«standard» — сбалансированный), число после — поколение, последняя часть — размер (large, xlarge, 2xlarge), с удвоением ресурсов на каждый шаг размера.
Пример кода
example.txt
m5.large: 2 vCPU, 8 GB RAM (general purpose)
c5.large: 2 vCPU, 4 GB RAM (compute optimized)
r5.large: 2 vCPU, 16 GB RAM (memory optimized)Что использовать на практике
- Рекомендация. перед выбором размера смотрят фактическую утилизацию CPU/памяти текущей нагрузки и выбирают семейство под профиль, а не берут «самый большой на всякий случай».
- Проверка. для одного и того же числа vCPU выбор семейства должен менять доступную память согласно профилю нагрузки, что видно в выводе
aws ec2 describe-instance-types.
Подводные камни
- Риск. выбирать инстанс только по числу vCPU, не учитывая объём памяти и сетевую производительность
- Риск. держать production на устаревшем поколении инстансов
- Риск. масштабировать вертикально, когда нужнее горизонтальное масштабирование.