PlanetScale — Serverless SQL база данных для разработчиков

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Этим летом я по уши увяз в serverless-тематике и даже решил переписать один из своих pet-проектов целиком на serverless. Движок для сайта, поддерживающий бессерверные вычисления и вендор для кэширующей прослойки были найдены быстро - NextJS (с деплоем на Vercel) и Upstash с оплатой за каждую отдельную операцию и байт в хранилище. Камнем преткновения стал выбор провайдера для DBaaS. Мне бы хотелось реализовать всё таким образом, чтобы у проекта было две разных базы данных - для разработки и для production, и мне совсем не хотелось запускать базу данных для разработки на локальной машине. Поверхностное ознакомление с DBaaS провайдерами показало, что за дополнительную базу данных пришлось бы платить вдвое больше несмотря на то, что она использовалась бы дай Бог пару раз в неделю. И я ушёл в просмотр докладов и презентаций на YouTube и это именно тот момент когда я открыл для себя PlanetScale.

Serverless in a nutshell

Перед тем как окунаться в прочтение этой статьи, крайне рекомендую ознакомиться с замечательными статьями о том, что именно представляет собой serverless:

  • Краткая статья о serverless в стиле Q/A Интересное о Serverless: хабрастатьи о применении, инструментах, кейсах и инструкциях для первого свидания

  • Чуть более объёмная статья от Selectel Serverless по стоечкам

Если совсем-совсем коротко и простыми словами для конечного потребителя, то serverless целиком и полностью освобождает вас от необходимости администрировать инфраструктуру, платить за простой и нанимать аудиторов-безопасников. Serverless провайдер сделает всё за вас, вам остаётся лишь писать код для своих приложений.

Так что такое PlanetScale? В первую очередь это компания, разработавшая Vitess - программное обеспечение с открытым исходным кодом для кластеризации баз данных с целью их вертикального масштабирования. На секундочку, Vitess используют в YouTube, о чём господин Сугу рассказывал ещё 7 лет назад.

В PlanetScale решили, что пора двигаться дальше и принялись упрощать жизнь не только гигантам из Кремниевой Долины, но и обыкновенному разработчику из глубинки. Так появился PlanetScale.com - веб-приложение, где вы можете создать свою, основанную на Vitess, Serverless MySQL базу данных в один клик и начать работу с ней прямо сейчас.

А что особенного в PlanetScale?

Схему базы данных нельзя изменять. Не пугайтесь, это касается только production баз данных. А ещё в PlanetScale базу данных принято называть веткой (branch). Уже догадываетесь, к чему всё идёт? Вы совершенно правы, это всё напоминает git, где push изменений в мастер-ветку запрещён и единственный способ сделать изменение - это открыть pull request (deploy request). Для этого вы создаёте новую development ветку, которая является полной копией основной базы данных, производите необходимые изменения схемы и на этом всё - PlanetScale автоматически определит какие именно изменения были произведены и визуализирует их в веб-панели в виде SQL.

Deploy Request выглядит следующим образом.

Внешний вид страницы с Deploy Reqeust
Внешний вид страницы с Deploy Reqeust

Здесь ничего нового - автор изменений, summary этих самых изменений, количество апрувов, проверка на наличие конфликтов, etc. Всё это позволяет проводить миграции схемы в стиле git не опасаясь навредить production базе раньше чем вы готовы к этому.

Ещё PlanetScale умеет деплоить в разные регионы как основную базу данных, так и ветки. Пока что их немного - US West (LA), US East (NY), EU West (Dublin, Ireland), но этот вопрос открыт и прямо сейчас вы можете оставить запрос на добавление нужного вам региона (из списка регионов, поддерживаемых Amazon AWS) в разделе дискуссий на GitHub planetscale/beta.

А ещё для каждой вашей базы данных и всех её веток предусмотрено ежедневное резервное копирование без дополнительной платы за хранение бэкапов с возможностью изменять график и продолжительность хранения снимков.

В чём подвох?

Нельзя использовать Foreign Key поскольку они делают задачу шардинга крайне нетривиальной и неоправданно сложной. Если в работе с базой данных вы используете ORM, то разница останется незаметной. Поскольку Foreign Key это ограничение на уровне самой базы данных, то его можно продублировать и на уровне ORM (что, собственно говоря, и реализовано в Sequelize, TypeORM и Prisma, например - самых популярных ORM для NodeJS). Проблем от этого не прибавится, но гарантирующая прослойка останется в случае чего. Не для любителей чистых SQL запросов, короче говоря.

Сколько это стоит?

Как и любой другой serverless сервис, PlanetScale использует модель "pay as you go" - чем больше используется ресурсов, тем пожирнее счета вы получаете в конце месяца. Если ресурсы не используются, то и платить вам ни за что не надо. Ценовая политика такова:

Тариф Developer

Тариф Scaler

Максимальное количество баз данных

3

Стоимость хранилища объёмом 1GB

$0

$1.25

Стоимость 100 миллионов операций чтения

$0

$15

Стоимость 10 миллионов операций на запись

$0

$15

Важно! Тариф Developer действует лишь во время проведения бета-тестирования, в рамках которого вы можете создать 3 базы данных с безлимитным количеством операций на чтение и запись и 10 гигабайтами хранилища на каждую из баз данных. Последующие базы данных будут тарифицироваться согласно тарифа Scaler.

Тарификация производится за каждый байт или операцию записи/чтения. Это означает, что при цене за одну операцию чтения в $0.00000015 и использовании квоты в 50 млн. операций чтения вы заплатите ровно $7.25. Объём использованной квоты и цена за её использование будет доступна вам в конце расчётного периода в инвойсе.

Напоследок советую посмотреть презентацию интеграции PlanetScale с Vercel. Там Head of Engineering из PlanetScale рассказывает о сервисе и отвечает на вопросы, которые ему успели задать в чате (в ходе презентации и Q&A ответил буквально на все заданные и витающие в воздухе вопросы).

Интересный факт: PlanetScale работает на PlanetScale :)

Источник: https://habr.com/ru/post/574906/


Интересные статьи

Интересные статьи

Пост №4 для начинающих посвящен техническим приемам визуализации данных. Читать далее
Данная статья будет состоять из 3 частей (Теория/Методы и алгоритмы для решение задач/Разработка и реализация на Java) для описания полной картины. Первая статья будет включать только...
Статья предназначена скорее для людей, которые напрямую не участвуют в разработке, и удивляются, почему нужно столько людей и времени чисто на поддержку проекта, который вроде как стабильно работ...
Перевод подготовлен для студентов курса «Прикладная аналитика на R». Это была моя первая попытка выполнить кластеризацию клиентов на основе реальных данных, и она дала мне ценный опыт. В...
Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур дан...