Перейти к основному содержимому

Обзор развертывания

Комплексное руководство по развертыванию платформы Arisweb Marketplace.

Архитектура развертывания

Основные компоненты

Frontend (React App)

  • Хостинг: Vercel / Netlify
  • CDN: CloudFlare
  • Домены: Управляются через DNS провайдера
  • SSL: Автоматически через Let's Encrypt

Backend (Supabase)

  • Database: PostgreSQL в Supabase Cloud
  • Auth: Supabase Auth с JWT
  • Storage: Supabase Storage для файлов
  • Edge Functions: Serverless функции в Supabase

Дополнительные сервисы

  • Email: Resend для уведомлений
  • Payments: YuKassa для платежей
  • Analytics: Google Analytics / Яндекс.Метрика
  • Monitoring: Supabase Dashboard + Sentry

Варианты развертывания

1. Облачное развертывание (Рекомендуется)

Преимущества:

  • Быстрое развертывание
  • Автоматическое масштабирование
  • Встроенный мониторинг
  • Высокая доступность

Компоненты:

Frontend: Vercel
Backend: Supabase Cloud
CDN: CloudFlare
Email: Resend
Payments: YuKassa

2. Гибридное развертывание

Использование:

  • Frontend в облаке
  • Backend на собственных серверах
  • Файлы в облачном хранилище

Подходит для:

  • Компаний с требованиями к резидентности данных
  • Кастомизированных инсталляций

3. On-Premise (Локальное развертывание)

Требования:

  • Собственная инфраструктура
  • Команда DevOps
  • Повышенные требования к безопасности

Компоненты:

  • Docker Compose для оркестрации
  • PostgreSQL кластер
  • Nginx для балансировки
  • Redis для кэширования

Требования к инфраструктуре

Минимальные требования

Для тестирования

  • CPU: 2 vCPU
  • RAM: 4 GB
  • Диск: 50 GB SSD
  • Трафик: 100 GB/месяц

Для продакшена (до 1000 пользователей)

  • CPU: 4 vCPU
  • RAM: 8 GB
  • Диск: 200 GB SSD
  • Трафик: 1 TB/месяц
  • База данных: отдельный сервер

Рекомендуемые требования

Для крупных маркетплейсов (5000+ пользователей)

  • CPU: 8+ vCPU
  • RAM: 16+ GB
  • Диск: 500+ GB SSD
  • Трафик: 5+ TB/месяц
  • CDN: обязательно
  • Load Balancer: необходим

Переменные окружения

Обязательные переменные

# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

# Платежи
YUKASSA_SECRET_KEY=your-yukassa-secret

# Email
RESEND_API_KEY=your-resend-api-key

# Мониторинг (опционально)
SENTRY_DSN=your-sentry-dsn

Настройки по окружениям

Development

NODE_ENV=development
LOG_LEVEL=debug
ENABLE_ANALYTICS=false

Staging

NODE_ENV=staging
LOG_LEVEL=info
ENABLE_ANALYTICS=true

Production

NODE_ENV=production
LOG_LEVEL=error
ENABLE_ANALYTICS=true
ENABLE_MONITORING=true

Процесс развертывания

1. Подготовка

Создание Supabase проекта

  1. Регистрация в Supabase
  2. Создание нового проекта
  3. Настройка RLS политик
  4. Импорт схемы базы данных
  5. Настройка Storage buckets

Настройка внешних сервисов

  1. YuKassa: регистрация и получение ключей
  2. Resend: создание аккаунта и API ключа
  3. CloudFlare: настройка DNS и CDN
  4. Google Analytics: создание property

2. Конфигурация

Базы данных

-- Выполнить миграции
\i database/migrations/001_initial_schema.sql
\i database/migrations/002_add_rls_policies.sql
\i database/migrations/003_create_functions.sql

-- Создать начальные данные
INSERT INTO public.tenants (name, domain, status)
VALUES ('Demo Marketplace', 'demo.example.com', 'active');

Edge Functions

# Развертывание функций
supabase functions deploy marketplace-auth-register
supabase functions deploy marketplace-auth-login
supabase functions deploy send-registration-email
supabase functions deploy yukassa-webhook

3. Frontend развертывание

Vercel (рекомендуется)

# Подключение к Git
vercel --prod

# Или через GUI
# 1. Импорт из GitHub
# 2. Настройка переменных окружения
# 3. Автодеплой

Netlify

# Через CLI
netlify deploy --prod --dir=dist

# Или через GUI
# 1. Подключение репозитория
# 2. Настройка build команд
# 3. Конфигурация redirects

4. Настройка доменов

Основной домен

# DNS записи
A example.com 192.0.2.1
CNAME www.example.com example.com
CNAME admin.example.com admin-app.vercel.app

Маркетплейсы пользователей

# Wildcard поддомен
CNAME *.servicium.ru proxy.servicium.ru

Мониторинг и логирование

Supabase Dashboard

  • Метрики базы данных
  • Логи Edge Functions
  • Статистика Auth
  • Storage usage

Внешний мониторинг

Uptime мониторинг

# uptimerobot.com конфигурация
monitors:
- name: "Main App"
url: "https://arisweb-marketplace.ru"
interval: 300

- name: "API Health"
url: "https://api.arisweb-marketplace.ru/health"
interval: 60

Application мониторинг (Sentry)

import * as Sentry from "@sentry/react";

Sentry.init({
dsn: process.env.REACT_APP_SENTRY_DSN,
environment: process.env.NODE_ENV,
tracesSampleRate: 1.0,
});

Логирование

Структурированные логи

const logger = {
info: (message: string, meta?: object) => {
console.log(JSON.stringify({
level: 'info',
message,
timestamp: new Date().toISOString(),
...meta
}));
},
error: (message: string, error?: Error) => {
console.error(JSON.stringify({
level: 'error',
message,
stack: error?.stack,
timestamp: new Date().toISOString()
}));
}
};

Безопасность

SSL/TLS

  • Обязательное использование HTTPS
  • Автоматическое обновление сертификатов
  • Strong TLS конфигурация

Заголовки безопасности

add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

Резервное копирование

Автоматические бэкапы Supabase

  • Ежедневные бэкапы (7 дней хранения)
  • Point-in-time восстановление
  • Cross-region репликация

Дополнительные бэкапы

# Еженедельный экспорт
pg_dump $DATABASE_URL > backup_$(date +%Y%m%d).sql

Масштабирование

Горизонтальное масштабирование

  • Load balancer перед фронтендом
  • Множественные экземпляры API
  • CDN для статических ресурсов
  • Database read replicas

Вертикальное масштабирование

  • Увеличение ресурсов серверов
  • SSD диски для базы данных
  • Больше RAM для кэширования

Оптимизация производительности

  • Минификация и сжатие ресурсов
  • Lazy loading компонентов
  • Database индексы
  • Query оптимизация

Rollback стратегия

Быстрый откат

  1. Rollback через Vercel/Netlify GUI
  2. Восстановление из бэкапа БД
  3. Откат Edge Functions

Graceful downgrade

  1. Feature flags для отключения функций
  2. Maintenance mode
  3. Поэтапное восстановление

Чеклист развертывания

Перед запуском

  • Все переменные окружения настроены
  • SSL сертификаты установлены
  • Бэкапы настроены
  • Мониторинг работает
  • Load testing выполнен

После запуска

  • Smoke тесты прошли
  • Метрики корректны
  • Логи не содержат ошибок
  • Performance в норме
  • Пользователи могут зарегистрироваться

Troubleshooting

Частые проблемы

"Cannot connect to database"

  • Проверить строку подключения
  • Убедиться что БД доступна
  • Проверить RLS политики

"Edge Function timeout"

  • Оптимизировать код функции
  • Увеличить timeout лимит
  • Проверить внешние API

"High memory usage"

  • Анализ memory leaks
  • Оптимизация запросов
  • Увеличение лимитов