Aurora Serverless
Aurora Serverless — это бессерверная конфигурация развёртывания реляционной базы данных Amazon Aurora, предоставляемая в рамках облачного сервиса Amazon Relational Database Service (Amazon RDS). Данная конфигурация автоматически масштабирует вычислительные ресурсы (процессор и память) в зависимости от фактической нагрузки на базу данных, а также автоматически приостанавливает работу базы данных в периоды отсутствия активности, что позволяет снизить затраты по сравнению с традиционными выделенными инстансами.
История и предпосылки создания
Aurora Serverless была анонсирована Amazon Web Services (AWS) в 2017 году на конференции re:Invent и стала доступна в 2018 году. Основной предпосылкой её появления стала потребность в снижении стоимости эксплуатации баз данных для приложений с переменной или непредсказуемой нагрузкой. Традиционные инстансы Amazon RDS требуют предварительного выбора фиксированного объёма вычислительных ресурсов (vCPU и памяти), что приводит к переплате в периоды простоя или недогрузки. Бессерверная модель позволяет платить только за потреблённые ресурсы, измеряемые в единицах ACU (Aurora Capacity Units).
Архитектура и принцип работы
Вычислительный слой и слой хранения
Aurora Serverless, как и обычная Amazon Aurora, основана на разделении вычислительного слоя и слоя хранения. Вычислительный слой представляет собой пул виртуальных машин, управляемый AWS, который динамически выделяется и освобождается. Слой хранения использует распределённую, самовосстанавливающуюся файловую систему, реплицирующую данные в нескольких зонах доступности (Availability Zones) одного региона AWS.
Единицы ACU (Aurora Capacity Units)
Производительность базы данных измеряется в ACU. Одна ACU представляет собой комбинацию определённого объёма памяти (2 гигабайта) и соответствующего процессорного ресурса. Минимальная и максимальная ёмкость базы данных задаётся пользователем в диапазоне от 0,5 ACU до 128 ACU (для версии MySQL) или до 256 ACU (для версии PostgreSQL). Масштабирование происходит дискретно, ступенями, без изменения IP-адреса конечной точки подключения.
Автоматическое масштабирование
AWS мониторит нагрузку на базу данных (загрузку процессора, количество соединений, операции ввода/вывода). При превышении заданных пороговых значений система инициирует процесс масштабирования. Этот процесс включает в себя:
- Создание нового экземпляра с большей (или меньшей) ёмкостью ACU.
- Переключение трафика на новый экземпляр.
- Удаление старого экземпляра.
Период масштабирования обычно занимает от нескольких секунд до минуты. Во время этого процесса существующие соединения могут быть разорваны, хотя AWS стремится минимизировать время простоя.
Автоматическая приостановка
Ключевая особенность Aurora Serverless v1 (первое поколение) — возможность автоматической приостановки базы данных после заданного периода бездействия (по умолчанию 5 минут). При приостановке база данных выгружается из памяти, и плата за вычислительные ресурсы не взимается. При поступлении нового запроса на подключение база данных автоматически возобновляет работу (холодный старт), который может занять от нескольких секунд до минуты. В Aurora Serverless v2 эта функция отсутствует: база данных не приостанавливается полностью, а масштабируется до минимально заданной ёмкости.
Версии и поколения
Aurora Serverless v1
Первое поколение, выпущенное в 2018 году. Поддерживает базы данных на основе движков Amazon Aurora MySQL 5.6 и 5.7, а также Amazon Aurora PostgreSQL 10. Основные ограничения v1:
- Отсутствие поддержки некоторых функций, доступных в обычных инстансах Aurora (например, глобальные базы данных, определённые типы реплик).
- Обязательное использование виртуального частного облака (VPC).
- Ограниченный диапазон ACU (до 128 ACU).
- Масштабирование может приводить к кратковременным разрывам соединений.
Aurora Serverless v2
Второе поколение, анонсированное в 2021 году и ставшее общедоступным в 2022 году. Оно устраняет многие ограничения v1 и приближается по функциональности к обычным инстансам Aurora. Ключевые улучшения:
- Поддержка всех функций Aurora, включая глобальные базы данных, мультирегиональные развёртывания, реплики чтения и обратную совместимость с обычными инстансами.
- Масштабирование в миллисекундах, без разрыва соединений.
- Более широкий диапазон ACU (от 0,5 до 256 ACU).
- Возможность использования в кластерах, где часть инстансов — обычные (Provisioned), а часть — бессерверные.
- Поддержка Amazon Aurora MySQL 8.0 и Amazon Aurora PostgreSQL 13, 14, 15 и 16.
Применение
Aurora Serverless применяется в сценариях, где нагрузка на базу данных неравномерна, непредсказуема или имеет длительные периоды простоя. Типичные случаи использования:
- Разработка и тестирование: базы данных для сред разработки, которые используются только в рабочее время и могут быть приостановлены на ночь и выходные.
- Приложения с переменной нагрузкой: интернет-магазины, SaaS-платформы, где количество пользователей резко меняется в зависимости от времени суток или сезона.
- Периодические отчёты и пакетная обработка: базы данных, задействованные только во время выполнения ежемесячных или квартальных отчётов.
- Приложения с низкой или нулевой нагрузкой в ночное время: внутренние корпоративные системы, используемые только в часы работы офиса.
- Прототипирование и стартапы: возможность быстро развернуть базу данных без предварительного планирования ёмкости и с минимальными затратами на начальном этапе.
Преимущества и недостатки
Преимущества
- Снижение затрат: оплата только за фактически потреблённые вычислительные ресурсы (ACU-часы) и объём хранения. Отсутствие платы за простаивающие ресурсы.
- Автоматическое масштабирование: не требуется ручного вмешательства для увеличения или уменьшения производительности.
- Простота управления: не нужно выбирать тип и размер инстанса, управлять кластером реплик.
- Высокая доступность: наследует отказоустойчивость Amazon Aurora, включая автоматическое восстановление при сбоях.
Недостатки и ограничения
- Задержки при масштабировании: в v1 масштабирование может вызывать кратковременные разрывы соединений; в v2 задержка минимальна, но не нулевая.
- Холодный старт: в v1 при возобновлении из приостановленного состояния может наблюдаться задержка до минуты.
- Ограничения по функциональности (v1): отсутствие некоторых продвинутых функций, доступных в обычных инстансах.
- Стоимость при высокой нагрузке: при постоянной высокой нагрузке стоимость использования Aurora Serverless может быть выше, чем стоимость выделенного инстанса аналогичной производительности.
- Зависимость от региона: доступность сервиса может различаться в разных регионах AWS.
Сравнение с другими сервисами AWS
| Характеристика | Aurora Serverless v1/v2 | Обычный инстанс Aurora (Provisioned) | Amazon RDS (MySQL/PostgreSQL) |
|---|---|---|---|
| Масштабирование | Автоматическое, в пределах заданного диапазона ACU | Ручное или по расписанию (через Auto Scaling) | Ручное |
| Оплата | За ACU-часы + хранение | За час работы инстанса + хранение | За час работы инстанса + хранение |
| Приостановка | Да (v1) / Нет (v2) | Нет | Нет |
| Управление | Минимальное | Среднее | Высокое |
| Производительность | От 0,5 до 256 ACU | Фиксированная (от db.r5.large до db.r5.24xlarge) | Фиксированная |
| Сложность настройки | Низкая | Средняя | Высокая |
Интересные факты
- Aurora Serverless v2 может масштабироваться до 256 ACU, что эквивалентно примерно 512 гигабайтам памяти и значительной процессорной мощности.
- Сервис поддерживает автоматические резервные копии, восстановление на любой момент времени (Point-in-Time Recovery) и шифрование данных в покое и при передаче.
- Aurora Serverless часто используется в архитектурах событийно-ориентированных приложений, где база данных активируется только при поступлении события.
Источники
- Документация Amazon Aurora Serverless на сайте Amazon Web Services.
- Официальный блог Amazon Web Services (AWS News Blog) — анонсы Aurora Serverless v1 и v2.
- Материалы конференции AWS re:Invent 2017 и 2021 годов.
- Руководство по миграции с Aurora Serverless v1 на v2 от Amazon Web Services.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →