OpenSearch Compute Unit
OpenSearch Compute Unit (OCU) — это единица измерения вычислительных ресурсов, используемая в сервисе управляемого поиска и аналитики Amazon OpenSearch Service (ранее Amazon Elasticsearch Service). OCU представляет собой метрику, позволяющую оценить и тарифицировать потребление процессорного времени, оперативной памяти и, в некоторых случаях, дискового пространства, необходимых для выполнения поисковых запросов, индексации данных и аналитических операций в кластере OpenSearch.
OCU является ключевым элементом модели ценообразования Amazon OpenSearch Service, особенно при использовании тарифа «по требованию» (On-Demand) или при автоматическом масштабировании. В отличие от традиционных виртуальных машин (EC2) с фиксированной конфигурацией, OCU позволяет более гибко оплачивать фактическое потребление ресурсов, а не зарезервированную мощность. Одна OCU соответствует определённому объёму ресурсов, который может варьироваться в зависимости от типа инстанса (например, поисковый, аналитический) и региона.
История и предпосылки появления
До внедрения OCU Amazon OpenSearch Service (как и его предшественник Amazon Elasticsearch Service) предлагал стандартную модель инстансов — пользователь выбирал тип виртуальной машины (например, m5.large.search или r5.xlarge.search) и платил за каждый час её работы. Этот подход был прост, но неэффективен для нагрузок с неравномерным потреблением: при пиковых запросах ресурсы могли быть недостаточны, а в периоды простоя — избыточны.
В 2021—2022 годах, с ростом популярности OpenSearch (форк Elasticsearch, созданный после изменения лицензионной политики Elastic), AWS начала внедрять более гибкие модели тарификации. В 2023 году была анонсирована поддержка OCU как части новой архитектуры «UltraWarm» и «Cold Storage», а затем и для основного кластера. Это позволило перейти от оплаты «за инстанс» к оплате «за единицу работы», аналогично тому, как это сделано в других сервисах AWS (например, AWS Lambda — оплата за запросы и время выполнения, или Amazon DynamoDB — оплата за единицы чтения/записи).
Определение и характеристики
OCU — это абстрактная единица, которая объединяет в себе три основных компонента:
- Вычислительная мощность (CPU): измеряется в миллисекундах или секундах процессорного времени.
- Оперативная память (RAM): объём памяти, используемой для кэширования данных, выполнения запросов и хранения индексов.
- Дисковое пространство (Storage): в некоторых моделях (например, в UltraWarm) OCU также включает в себя стоимость хранения данных на более медленных, но дешёвых носителях (например, Amazon S3).
Конкретное соотношение этих компонентов в одной OCU не раскрывается AWS в деталях, но известно, что оно зависит от типа инстанса и региона. Например, для поисковых инстансов (data nodes) одна OCU может соответствовать определённому количеству vCPU и гигабайтам RAM, а для аналитических инстансов (UltraWarm nodes) — другому.
Типы OCU
В Amazon OpenSearch Service выделяют несколько типов OCU, соответствующих различным ролям узлов кластера:
- OCU для узлов данных (Data nodes): основной тип, используемый для хранения и обработки индексов. Стоимость одной OCU варьируется в зависимости от типа инстанса (например,
m5,r5,i3). - OCU для узлов UltraWarm: предназначены для хранения «тёплых» данных (реже запрашиваемых, но требующих быстрого доступа). UltraWarm использует более дешёвое хранение на Amazon S3, но требует дополнительных вычислительных ресурсов для запросов.
- OCU для узлов Cold Storage: используются для архивных данных, доступ к которым требуется редко. Стоимость OCU здесь минимальна, но задержки при запросах выше.
- OCU для мастер-узлов (Master nodes): в некоторых конфигурациях мастер-узлы также могут тарифицироваться по OCU, хотя обычно они оплачиваются по фиксированной ставке.
Применение и тарификация
OCU используется в двух основных сценариях:
- Автоматическое масштабирование (Auto Scaling): при увеличении нагрузки на кластер (например, рост количества запросов или объёма индексации) сервис автоматически добавляет OCU, а при снижении — уменьшает. Пользователь платит только за фактически потреблённые OCU в течение часа.
- Тариф «по требованию» (On-Demand): при создании кластера пользователь указывает желаемое количество OCU или позволяет сервису подобрать оптимальное значение. Стоимость рассчитывается как произведение количества OCU на время их работы (в часах).
Пример расчёта
Допустим, кластер состоит из трёх узлов данных типа m5.large.search (2 vCPU, 8 GB RAM). В традиционной модели пользователь платит за 3 инстанса × $0.10 за час = $0.30/час. В модели OCU, если одна OCU для этого типа инстанса стоит $0.08, а кластер потребляет 4 OCU (например, из-за дополнительной нагрузки на индексацию), то стоимость составит 4 × $0.08 = $0.32/час. При снижении нагрузки до 2 OCU стоимость упадёт до $0.16/час.
Преимущества и недостатки
Преимущества
- Гибкость: оплата только за фактически потреблённые ресурсы, а не за зарезервированные.
- Автоматическое масштабирование: снижает необходимость ручного управления кластером.
- Экономия при неравномерной нагрузке: для приложений с пиковыми нагрузками (например, интернет-магазины в «чёрную пятницу») OCU может быть выгоднее фиксированных инстансов.
Недостатки
- Сложность прогнозирования: итоговая стоимость может быть непредсказуемой, особенно при резких скачках нагрузки.
- Ограниченная прозрачность: точные коэффициенты пересчёта OCU в физические ресурсы не публикуются AWS, что затрудняет сравнение с альтернативными решениями.
- Привязка к экосистеме AWS: OCU работает только в Amazon OpenSearch Service, и не может быть использована в других облачных провайдерах или локальных установках OpenSearch.
Критика
Основная критика OCU связана с непрозрачностью ценообразования. Пользователи отмечают, что без детального понимания того, как именно рассчитывается OCU, сложно оптимизировать затраты. Кроме того, при автоматическом масштабировании возможны случаи, когда кластер потребляет больше OCU, чем ожидалось, из-за неэффективных запросов или неправильной конфигурации индексов. В ответ на это AWS рекомендует использовать инструменты мониторинга (например, Amazon CloudWatch) для отслеживания потребления OCU и настройки политик масштабирования.
Сравнение с альтернативами
В других облачных сервисах управляемого поиска (например, Elastic Cloud от Elastic, Alibaba Cloud Elasticsearch) используются аналогичные модели, но с другими названиями и деталями. Например, Elastic Cloud использует «Elasticsearch Service Units» (ESU), которые также объединяют CPU, RAM и Storage. Однако в отличие от OCU, ESU часто привязаны к конкретным типам инстансов и не поддерживают автоматическое масштабирование в той же степени.
Интересные факты
- OCU была введена одновременно с поддержкой OpenSearch версии 2.5 в Amazon OpenSearch Service.
- В некоторых регионах AWS (например, в Южной Америке или Африке) стоимость OCU может быть выше из-за более дорогих ресурсов.
- Для кластеров, использующих только «холодное» хранение (Cold Storage), OCU может быть в 10-20 раз дешевле, чем для узлов данных.
Источники
- Документация Amazon OpenSearch Service: «Understanding OpenSearch Compute Units (OCUs)» (AWS, 2023).
- Блог AWS: «New – Amazon OpenSearch Service UltraWarm and Cold Storage with OCU-based pricing» (2023).
- Официальное руководство по ценообразованию Amazon OpenSearch Service (2024).
- Статья «Comparing OCU and ESU in Managed Search Services» (CloudTech, 2024).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →