Skip to main content
EngineeringStartup Engineering

Почему мы используем Supabase как наш основной бэкенд (и когда мы этого не делаем)

Mortgy
4 min read

Каждый новый проект начинается с одного вопроса: какой бэкенд? В течение последнего года наш ответ по умолчанию — Supabase — и это сэкономило нашим клиентам сотни часов и тысячи долларов. Но это не всегда правильный ответ. Вот наша схема принятия решений.

Что Supabase дает вам бесплатно

Supabase — это open-source альтернатива Firebase, построенная на PostgreSQL. Из коробки вы получаете: аутентификацию (email, OAuth, magic links, телефон), полноценную базу данных PostgreSQL с REST и GraphQL API, автоматически сгенерированными из вашей схемы, real-time подписки через WebSockets, файловое хранилище с CDN, edge-функции для serverless логики и Row Level Security для детального управления доступом.

Для типичного MVP это покрывает 80-90% потребностей вашего бэкенда без написания единой строки серверного кода. Ваш фронтенд напрямую взаимодействует с Supabase через их SDK (доступны для JavaScript, Flutter, Swift, Kotlin и Python). Аутентификация, операции CRUD, загрузка файлов и real-time обновления работают сразу же.

PostgreSQL как основа — это ключевое отличие от Firebase. Вы получаете правильное моделирование реляционных данных, сложные запросы с JOINs, полнотекстовый поиск, JSON колонки и всю экосистему расширений PostgreSQL (PostGIS для геопространственных данных, pgvector для AI embeddings, pg_cron для планируемых задач). Когда ваше приложение растет, вы не застреваете в проприетарной базе данных.

Реальная экономия затрат: тематическое исследование

Для FinFlow (нашего тематического исследования приложения личных финансов) использование Supabase сэкономило примерно 3 недели времени разработки по сравнению с построением собственного Node.js бэкенда. Аутентификация заняла бы 3-4 дня. Scaffolding REST API еще 2-3 дня. Real-time подписки 2-3 дня. Конфигурация файлового хранилища и CDN 1-2 дня. Row Level Security потребовал бы построения собственного middleware слоя.

По части хостинга, бесплатный уровень Supabase комфортно покрывает большинство MVP (500MB базы данных, 1GB хранилища, 50,000 ежемесячных активных пользователей). Plan Pro за $25/месяц справляется с production приложениями в значительном масштабе. Сравните это с запуском собственного PostgreSQL экземпляра, сервиса аутентификации, хранилища файлов и WebSocket сервера — вы смотрите на минимум $100-300/месяц только на затраты инфраструктуры.

Безопасность на уровне строк: функция, которую большинство команд недоиспользуют

Row Level Security (RLS) — убийственная функция Supabase, которую большинство команд либо игнорируют, либо реализуют неправильно. RLS позволяет определять политики доступа на уровне базы данных — пользователи могут только читать или писать строки, которые соответствуют их идентификации. Это означает, что ваш API не может случайно утечь данные, даже если в коде фронтенда есть ошибка.

Мы применяем строгое правило для каждого проекта Supabase: RLS должна быть включена на каждой таблице с первого дня, с явными политиками для каждой операции. Без исключений. Это добавляет 15-20 минут настройки на таблицу, но исключает целый класс уязвимостей безопасности. Мы видели приложения конкурентов, выпущенные с отключенным RLS — что означало, что любой аутентифицированный пользователь мог читать данные любого другого пользователя. Не совершайте эту ошибку.

Когда Supabase — не лучший выбор

Supabase — не универсальное решение. Мы обращаемся к пользовательским бэкендам в этих случаях: сложная бизнес-логика, которая не укладывается аккуратно в политики базы данных (многоэтапные рабочие процессы, паттерны saga), приложения, которым нужна интеграция с несколькими внешними API в организованных последовательностях, системы, требующие event sourcing или паттернов CQRS, и приложения с интенсивной фоновой обработкой (транскодирование видео, пакетные выводы ML).

Для этих случаев мы обычно создаем Node.js API с Prisma ORM, по-прежнему используя PostgreSQL в качестве базы данных. Слой данных остается тем же — мы просто добавляем сверху надлежащий слой приложения. Иногда мы используем гибридный подход: Supabase для аутентификации и реал-тайма, с пользовательским API для сложной бизнес-логики.

Наш шаблон проекта Supabase

Мы создали внутренний шаблон проекта Supabase, который используем для каждого нового проекта. Он включает: стандартную конфигурацию аутентификации с электронной почтой и Google OAuth, базовую миграцию с общими таблицами (profiles, settings, audit_log), политики RLS для всех таблиц, edge-функции для обработки вебхуков Stripe и отправки электронных писем, и скрипт seed для данных разработки.

Этот шаблон позволяет нам за примерно 30 минут создать работающее приложение с аутентификацией и надлежащей безопасностью. Если вы оцениваете Supabase для своего следующего проекта и хотите увидеть, как выглядит настройка производственного уровня, свяжитесь с нами — мы с удовольствием проведем вас через наш подход.

Mortgy

Founder & CEO