Этим летом я увлекся бессерверной темой и даже решил полностью переписать один из своих любимых проектов на бессерверную технологию.
Быстро были найдены движок для сайта с поддержкой бессерверных вычислений и поставщик слоя кэширования — NextJS (с развертыванием на Vercel) и Upstash с оплатой за каждую отдельную операцию и байт в хранилище.
Камнем преткновения стал выбор провайдера для DBaaS. Мне хотелось реализовать всё так, чтобы в проекте было две разные базы данных — для разработки и для производства, а запускать базу разработки на локальной машине мне не хотелось.
Поверхностное знакомство с провайдерами DBaaS показало, что за дополнительную базу данных придется заплатить в два раза больше, несмотря на то, что использоваться она будет, дай Бог, пару раз в неделю.
И я начал смотреть отчеты и презентации на YouTube, и именно в этот момент я открыл для себя PlanetScale.
Коротко о бессерверном режиме
Прежде чем углубиться в эту статью, я настоятельно рекомендую прочитать эти замечательные статьи о том, что такое бессерверная технология:- Короткая статья о бессерверных технологиях в стиле вопросов и ответов.
Интересное о Serverless: статьи на хабре о приложении, инструментах, кейсах и инструкциях для первого свидания
- Чуть длиннее статья от Selectel Бессерверное использование в стойках
Бессерверный провайдер все сделает за вас, вам останется только написать код для ваших приложений.
Так что же такое PlanetScale? Прежде всего, это компания-разработчик Vitess — ПО с открытым исходным кодом для кластеризации баз данных с целью вертикального масштабирования.
На секунду на YouTube используют Vitess, о чем господин Сугу рассказывал 7 лет назад. PlanetScale решила, что пора двигаться дальше, и начала упрощать жизнь не только гигантам из Кремниевой долины, но и рядовому разработчику из глубинки.
Так родился PlanetScale.com — веб-приложение, с помощью которого вы можете в один клик создать собственную бессерверную базу данных MySQL на базе Vitess и начать работать с ней прямо сейчас.
Что особенного в PlanetScale?
Схему базы данных изменить невозможно.Не волнуйтесь, это относится только к производственным базам данных.
А в PlanetScale базу данных обычно называют веткой.
Вы уже догадываетесь, к чему это приведет? Вы абсолютно правы, это всё напоминает git, где пушить изменения в ветку master запрещено и единственный способ внести изменения — открыть пул-реквест (deploy request).
Для этого вы создаете новую ветку разработки, которая представляет собой полную копию основной базы данных, вносите необходимые изменения в схему и все — PlanetScale автоматически определит, какие именно изменения были внесены, и визуализирует их на веб-панели в форму SQL. Запрос на развертывание выглядит следующим образом.
Внешний вид страницы запроса на развертывание Здесь нет ничего нового — автор изменений, краткое изложение этих самых изменений, количество одобрений, проверка на конфликты и т. д. Всё это позволяет проводить миграции схем в стиле git, не опасаясь перед этим нанести вред рабочей базе данных.
вы готовы к этому.
PlanetScale также может развернуть как основную базу данных, так и филиалы в разных регионах.
Их пока немного - US West (LA), US East (NY), EU West (Дублин, Ирландия), но этот вопрос открыт и прямо сейчас вы можете оставить заявку на добавление нужного вам региона (из список регионов, поддерживаемых Amazon AWS) в разделе обсуждения на GitHub планетарный масштаб/бета .
А для каждой вашей базы данных и всех ее филиалов предоставляется ежедневное резервное копирование без дополнительной оплаты за хранение резервных копий с возможностью изменения расписания и продолжительности хранения снимков.
В чем подвох?
Вы не можете использовать внешний ключ, потому что они сделать задачу шардинга крайне нетривиальной и неоправданно сложной .Если вы используете ORM при работе с базой данных, разница останется незаметной.
Поскольку Foreign Key — это ограничение на уровне самой базы данных, его можно дублировать на уровне ORM (что, собственно, и реализовано в Sequelize, TypeORM и Prisma, например, самых популярных ORM для NodeJS).
Больше проблем это не вызовет, но гарантийный слой в случае чего сохранится.
Короче говоря, не для любителей чистых SQL-запросов.
Сколько это стоит?
Как и любой другой бессерверный сервис, PlanetScale использует модель «оплата по факту»: чем больше ресурсов используется, тем больший счет вы получите в конце месяца.Если ресурсы не используются, то платить ни за что не нужно.
Ценовая политика следующая:
Тариф для разработчиков | Тариф скейлера | |
Максимальное количество баз данных | 3 | ∞ |
Стоимость хранилища объемом 1 ГБ | $0 | $1.25 |
Стоимость 100 миллионов прочтений | $0 | $15 |
Стоимость 10 миллионов записей | $0 | $15 |
Последующие базы данных будут тарифицироваться по тарифу Scaler. Тарификация осуществляется за каждый байт или операцию записи/чтения.
Это означает, что при цене за чтение в 0,00000015 доллара и квоте в 50 миллионов чтений вы заплатите ровно 7,25 доллара.
Объем использованной квоты и цена за ее использование будут доступны Вам в конце расчетного периода в счете.
Напоследок советую посмотреть презентацию интеграции PlanetScale с Vercel. Там руководитель отдела разработки PlanetScale рассказывает о сервисе и отвечает на вопросы, которые ему задавали в чате (во время презентации и вопросов-ответов он отвечал буквально на все заданные и витающие в воздухе вопросы).
Интересный факт: PlanetScale работает на PlanetScale :) Теги: #Хранение данных #Администрирование баз данных #Бессерверное #sql #масштабирование #Vitess #MySQL #шардинг #Системы контроля версий #PlanetScale
-
Компьютеры В Немецком Музее
19 Oct, 24 -
Подкаст Appleinsider [12]
19 Oct, 24 -
Возрождение Легенды – Зоркий-4
19 Oct, 24 -
Прямая Линия С Путиным На [email protected]
19 Oct, 24