Особенности serverless-режима YDB
Кратко:
- Serverless-режим YDB отличается от dedicated-режима.
- Serverless-режим позволяет развернуть базу данных без создания отдельных хостов и заказа дискового пространства.
- Бессерверный режим применим в различных сценариях, включая небольшие проекты и крупные проекты с неравномерной и плохо прогнозируемой нагрузкой.
- Оплата в бессерверном режиме зависит от фактических операций с базой и хранения данных и резервных копий.
- Serverless-режим позволяет превратить все расходы на инфраструктуру в переменные.
- Доступ к данным YDB в serverless-режиме возможен через консоль управления, YDB CLI, YDB SDK и Document API.
- В бессерверном режиме доступны документные таблицы, состоящие из набора элементов с атрибутами в виде пары ключ-значение.
Особенности serverless-режима YDB
Отличия от dedicated-режима YDB
В рамках курса «Хранение и анализ данных» вы уже разобрались с тем, как устроена YDB, научились проектировать новые базы данных, составлять запросы на языке YQL, проводить диагностику и создавать резервные копии БД.
В рамках данного курса мы подробнее остановимся на бессерверном (serverless) режиме и специфичных для него возможностях YDB. Давайте начнём с главных отличий этого режима от режима работы с выделенными ресурсами (dedicated).
Как вы уже знаете, в режиме с выделенными ресурсами вы самостоятельно задаёте число виртуальных хостов, их вычислительные ресурсы и параметры хранилища, а также настраиваете облачные сети.
Если нагрузка на вычислительные ресурсы растёт, а вы не добавляете их своевременно, скорость обработки запросов будет уменьшаться вплоть до отказа в обслуживании. Поэтому такой режим применим для случаев, когда у вас есть реалистичный прогноз пиковых нагрузок и вы готовы самостоятельно обслуживать созданную инфраструктуру. При этом оплата происходит за выделенные вычислительные ресурсы, объём хранилища и резервных копий и не зависит от числа операций с базой.
При использовании YDB в бессерверном режиме вы можете развернуть базу данных в обслуживаемой среде без создания отдельных хостов и заказа дискового пространства. Вам не нужно контролировать вычислительные ресурсы, сети и другие параметры. Все ресурсы, которые необходимы для работы базы, автоматически предоставляются сервисом и масштабируются в зависимости от нагрузки.
Бессерверный режим применим в различных сценариях. Это может быть небольшой проект, для которого не нужен отдельный сервер, или крупный проект с неравномерной и плохо прогнозируемой нагрузкой. В таком режиме вы платите за фактические операции с базой и за хранение данных и резервных копий.
Чтобы лучше понять отличия от dedicated-режима, давайте рассмотрим простую аналогию. Допустим, вы арендовали помещение под салон красоты и теперь платите ежемесячную фиксированную арендную плату владельцу. Такие расходы называются постоянными. К вам в салон приходят клиенты, каждый из них приносит некоторый доход, а вы тратите на его обслуживание расходные материалы — краску, лак…
Чтобы получить прибыль по результатам месяца, вам нужно обслужить некоторое минимальное количество клиентов. При этом арендная плата не зависит от того, сколько к вам пришло клиентов. А вот стоимость расходных материалов, наоборот, зависит от этого напрямую: чем меньше, тем меньше потрачено расходных материалов, чем их больше — тем больше потрачено. Такие расходы называются переменными.
Возможно, вы всё посчитали перед тем, как открывать салон, но вокруг постоянно могут происходить события, которые вы не могли предсказать или риск которых решили принять. Например, рядом может открыться ещё один салон или вас затопит сосед сверху. В результате количество обслуженных клиентов может резко снизиться или просто оказаться меньше, чем нужно, и вы начнёте терпеть убытки. Арендная плата за помещение при этом остаётся фиксированной вне зависимости от ваших сложностей.
Но проблема не только в том, что возможны непредсказуемые события. Она также и в том, что поток реальных клиентов никогда не бывает равномерным: ночью все спят, в выходные салон переполнен, а в будни клиенты есть только вечерами и немного с утра.
Получается, что арендованная площадь работает полностью только часть выходных дней, а в остальное время простаивает. Скорее всего, в выходные даже приходится отказывать каким-то клиентам в записи, что снижает доход, но в другое время салон пуст, и аренда большего помещения уже невозможна из-за недостатка общего количества клиентов.
То же самое происходит и с вычислительными ресурсами. Только «отказ в записи на причёску» в случае недостатка вычислительных ресурсов может превратиться в «отказ в обслуживании» и в общем случае недопустим. А это вынуждает вас арендовать мощности под пиковые нагрузки даже с некоторым запасом. Всё время между пиками эти ресурсы будут недогружены, но вы будете за них платить по фиксированной почасовой ставке.
Конечно, аренда облачных вычислительных ресурсов намного более гибкая, чем в примере выше. Она позволяет оперативно изменять ресурсы при необходимости, но это также требует оперативной реакции на окружающие события. Например, надо проанализировать, что в результате запуска рекламной кампании ресурсов перестало хватать, и вовремя их расширить, а после её окончания не забыть от лишних ресурсов отказаться.
Переход от аренды выделенных вычислительных ресурсов к serverless-сервисам позволяет превратить все ваши расходы на инфраструктуру в переменные! А это значит, что вы сможете прогнозировать расходы на обслуживание каждого клиента. Даже если клиентов не будет вообще, вы останетесь в нуле, но никогда не уйдёте в минус. И у вас никогда не будет недозагруженных ресурсов.
Способы доступа к данным YDB в serverless-режиме
У вас есть выбор, как проводить операции с базой данных YDB в serverless-режиме. Для работы с YDB-таблицами вы можете выполнять YQL-запросы через консоль управления или YDB CLI, а также из приложений с помощью YDB SDK.
При этом также доступен специфичный для serverless-режима Document API, полностью совместимый с AWS DynamoDB API. Это позволяет легко переносить существующие приложения из AWS или писать новые с использованием AWS SDK.
Как следствие этого, в бессерверном режиме доступен ещё один тип таблиц — документные. Они состоят из набора элементов, где каждый элемент — набор атрибутов в виде пары ключ-значение.
Вы можете работать с документными таблицами через HTTP-интерфейс (например, с использованием приложения cURL), с помощью AWS CLI и через AWS SDK.
В следующем уроке мы подробнее рассмотрим тарификацию YDB в бессерверном режиме. Это принципиально важная тема, которая влияет на проектирование базы данных и выбор функций для работы с ней.