Откуда взялся PlanetScale
Представьте: ваша MySQL-база разрослась до десятков терабайт, реплики не справляются с нагрузкой, а шардинг вручную вызывает холодный пот у всей команды. Именно с этой болью столкнулись в YouTube ещё в конце 2000-х. Решением стал Vitess — опенсорсный слой масштабирования для MySQL, который до сих пор обслуживает миллиарды запросов в Google.
PlanetScale взял Vitess, завернул его в элегантный serverless-интерфейс и сделал доступным каждому разработчику. Результат? MySQL, который не падает под нагрузкой, умеет ветвиться как Git и масштабируется горизонтально без единого изменения в коде.
Ветвление баз данных: главная фишка
Самая яркая особенность PlanetScale — branching. Работает точно как Git-ветки, только для схемы данных:
- Создаёте ветку от продакшен-базы
- Вносите изменения схемы (добавляете колонки, таблицы, индексы)
- Открываете deploy request — аналог pull request, но для базы данных
- Команда ревьюит изменения
- Мёржите — и схема обновляется без даунтайма
Никаких страшных миграций в 3 часа ночи. Никаких ALTER TABLE, блокирующих продакшен на часы. PlanetScale применяет изменения онлайн, не блокируя чтение и запись.
Более того, каждую ветку можно подключить к staging-окружению и тестировать на реальных данных. Схема базы становится такой же управляемой, как и код приложения.
Технология под капотом
Основа PlanetScale — это Vitess. За этим словом стоит мощная архитектура:
- Автоматический шардинг. Данные равномерно распределяются по множеству физических нод
- Connection pooling. Тысячи подключений от приложения схлопываются в десятки на уровне базы
- Отказоустойчивость. Выход из строя одной ноды не влияет на доступность
- Online DDL. Изменения схемы применяются без блокировок
Для разработчика всё это выглядит как обычный MySQL — те же драйверы, те же SQL-запросы. Разница лишь в том, что база не ложится под нагрузкой.
Developer Experience
PlanetScale питает почти маниакальную страсть к качеству DX. CLI-инструмент pscale позвояет управлять базами из терминала: создавать ветки, открывать деплой-реквесты, подключаться к базе одной командой.
Встроенная консоль в веб-интерфейсе позволяет выполнять запросы прямо в браузере, с автодополнением и подсветкой синтаксиса. Аналитика запросов показывает, какие SELECT/INSERT/UPDATE потребляют больше всего ресурсов — бесценно для оптимизации.
Отдельного упоминания заслуживает интеграция с ORM. Prisma, Drizzle, Knex — все работают из коробки, без танцев с бубном.
Ценообразование
PlanetScale предлагает несколько тарифов, начиная с бесплатного Hobby-плана, который включает 1 млрд строк читаемых в месяц и 10 млн записанных — достаточно для большинства пет-проджектов и небольших приложений.
Платные планы стартуют от $39/месяц и растут по мере увеличения нагрузки. Модель основана на объёме прочитанных/записанных строк и хранилище — предсказуемо и прозрачно.
Важный нюанс: PlanetScale — это serverless. Нет никаких «инстансов», которые нужно выбирать и оплачивать. Платформа сама выделяет ресурсы по мере необходимости.
Когда PlanetScale — правильный выбор
- Вы работаете с MySQL и планируете расти
- Вам нужен процесс ревью изменений схемы (database CI/CD)
- Вы устали от даунтаймов при миграциях
- Вы цените DX и хотите, чтобы база данных была удовольствием, а не болью
Когда стоит посмотреть в сторону
- Вам критично важен полный контроль над инфраструктурой (self-hosted — не про PlanetScale)
- Вы используете хранимые процедуры, триггеры, внешние ключи — PlanetScale не поддерживает foreign keys (это осознанное решение, связанное с шардингом)
- Ваш бюджет строго ограничен, а нагрузка высока — serverless может оказаться дороже зарезервированных инстансов
Вердикт
PlanetScale — это редкий случай, когда продукт действительно привносит что-то новое в устоявшуюся технологию. MySQL с возможностями Git для схемы данных — звучит как фантазия, но работает именно так. Если вы когда-либо просыпались в холодном поту перед запуском миграции в продакшен — PlanetScale определённо заслуживает вашего внимания.