Разработка SaaS-платформы
SaaS (Software as a Service) — модель доставки программного обеспечения, при которой приложение работает в облаке, а пользователи платят за доступ по подписке. Технически это означает: мультитенантность, управление биллингом, self-service онбординг, автоматические обновления и SLA.
Архитектурные решения мультитенантности
Pool model (shared everything): все тенанты в одной БД, изолированы полем tenant_id. Минусы: риск утечки данных при ошибке в запросе, сложнее выполнять требования клиентов по изоляции данных.
Silo model (isolated): каждый тенант — отдельная БД или экземпляр. Максимальная изоляция, но дорого масштабировать до тысяч клиентов.
Bridge model: общая инфраструктура, но отдельная PostgreSQL schema per tenant. Баланс между изоляцией и стоимостью.
Выбор зависит от рынка: enterprise-SaaS (банки, здравоохранение) требует silo, SMB-SaaS выгоднее держать в pool model.
Биллинг и управление подписками
Самостоятельно реализовывать биллинг — плохая идея. Стандартный выбор:
Stripe Billing: подписки, пробные периоды, apricot usage-based billing, автоматические неудачные платежи (dunning), промокоды, налоги (Stripe Tax).
// Создание подписки
const subscription = await stripe.subscriptions.create({
customer: 'cus_xxx',
items: [{ price: 'price_pro_monthly' }],
trial_period_days: 14,
metadata: { tenant_id: 'tenant_123' }
});
Paddle: альтернатива с функцией Merchant of Record — Paddle берёт на себя расчёт и уплату НДС в разных странах. Удобно для B2C SaaS, выходящего на международный рынок.
Chargebee / Recurly: более продвинутые инструменты для сложных pricing-моделей (seats, usage, flat + overage).
Pricing-модели
| Модель | Описание | Примеры |
|---|---|---|
| Flat rate | Фиксированная цена за план | Basecamp |
| Per seat | Цена × количество пользователей | Notion, Figma |
| Usage-based | Платишь за потребление | AWS, Twilio |
| Tiered | Разные блоки по цене | Mailchimp |
| Freemium | Базовый бесплатный план | Slack, Zoom |
Hybrid-модель (базовая подписка + overage за превышение лимитов) — наиболее популярна для SaaS с переменным потреблением (API calls, хранилище, пользователи).
Self-service онбординг
После регистрации пользователь должен начать получать ценность без участия продажника. Типовой onboarding:
- Регистрация → создание workspace (тенанта)
- Verification email → подтверждение
- Onboarding wizard: настройка профиля, первый объект (проект/команда/документ)
- Feature discovery: tooltips, empty states с CTA
- Activation event: первое целевое действие, после которого пользователь «активирован»
Activation event определяется аналитикой: какое действие коррелирует с retention на 30-й день.
Feature Flags и планы
Функциональность разграничивается по планам через feature flags:
// Laravel example
if ($tenant->plan->hasFeature('advanced_analytics')) {
// показываем раздел аналитики
}
Флаги хранятся в таблице plan_features с перечнем доступных возможностей для каждого плана. Можно также использовать LaunchDarkly или Unleash для более сложных A/B-тестов и gradual rollout.
Метрики SaaS
Ключевые метрики для мониторинга:
- MRR / ARR — ежемесячный/годовой регулярный доход
- Churn rate — процент клиентов, отменивших подписку
- LTV / CAC ratio — соотношение жизненной ценности к стоимости привлечения
- NPS — Net Promoter Score
- Time to value — время от регистрации до activation event
Технический стек
| Компонент | Технологии |
|---|---|
| Backend | Laravel (PHP), Django (Python), Nest.js (Node.js) |
| Frontend | Next.js, Nuxt.js |
| БД | PostgreSQL с RLS / schema-per-tenant |
| Биллинг | Stripe Billing, Paddle |
| Feature flags | LaunchDarkly, Unleash, самописный |
| Аналитика продукта | Mixpanel, Amplitude, PostHog |
| Очереди | Redis + Sidekiq/Horizon/BullMQ |
| Инфраструктура | AWS / GCP + Terraform |
Сроки
MVP SaaS (auth, мультитенантность, один core feature, подписки через Stripe, self-service onboarding): 3–5 месяцев. Полноценная платформа с usage-based billing, командами, расширенной аналитикой, API для интеграций: 6–12 месяцев.







