VPS для стартапа: MVP без облачных счетов

Для бизнеса
VPS для стартапа: MVP без облачных счетов

VPS для стартапа — это способ запустить MVP за фиксированные 450–1500 ₽ в месяц вместо облачного счёта, который растёт с каждым включённым сервисом и удивляет в конце месяца. На этапе проверки гипотезы вам не нужны автоскейлинг, managed-базы и балансировщики — нужен один надёжный сервер для MVP, на котором крутятся backend, база данных и очередь. В этой статье посчитаем экономику VPS против облака, соберём типовой стек через docker-compose и разберём, как масштабироваться, когда пользователи наконец придут, — без переезда и потери данных.

Экономика: VPS против облака для MVP

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

  • виртуальная машина — отдельно, и цена за vCPU/RAM заметно выше, чем у VPS-провайдеров;
  • управляемая база данных — отдельная строка, часто сопоставимая с самой VM;
  • балансировщик нагрузки — отдельно, даже если балансировать пока нечего;
  • исходящий трафик — тарифицируется за гигабайт и на растущем проекте превращается в заметную статью;
  • снапшоты, мониторинг, публичный IP — по мелочи, но тоже в счёт.

В результате скромная конфигурация «VM + managed-БД + балансировщик» в популярных облаках выходит в 5–15 тысяч рублей в месяц. Для сравнения: VPS Pro у Cheap-Host — 12 vCPU, 16 ГБ RAM, 128 ГБ NVMe — стоит 750 ₽/мес, причём трафик безлимитный и IPv4 уже включён. Разница на год — порядка 100 тысяч рублей, которые стартапу на pre-seed есть куда потратить. Подробное сравнение с калькуляцией по конкретным облакам — в статье VPS или облако: считаем реальные расходы.

КритерийVPSОблако
Цена за месяц (MVP-конфигурация)450–1500 ₽, фиксированно5 000–15 000 ₽, зависит от потребления
ТрафикБезлимитныйОплата за исходящий ГБ
Предсказуемость счётаПолнаяТребует контроля и алертов на биллинг
Сложность стартаОдин сервер, один compose-файлVPC, IAM, security groups, консоль
АвтомасштабированиеНет (вертикальный апгрейд)Да

Честная оговорка: если ваш продукт с первого дня рассчитан на резкие пики нагрузки (билеты на события, вирусные механики) — эластичность облака может окупиться. Для остальных 90% MVP один VPS с запасом по ресурсам — рациональный выбор.

Какой сервер нужен MVP: считаем ресурсы

Типовой MVP — это backend (Node.js, Python, Go, PHP), PostgreSQL или MySQL, Redis для кеша и сессий, Nginx как reverse-proxy. Такому стеку с запасом хватает 8–16 ГБ RAM:

  • Start (450 ₽/мес, 6 vCPU, 8 ГБ, 96 ГБ NVMe) — лендинг + API + база, первые сотни пользователей в день;
  • Pro (750 ₽/мес, 12 vCPU, 16 ГБ, 128 ГБ NVMe) — основной продукт + staging-окружение на том же сервере, тысячи пользователей в день;
  • Ultra (1500 ₽/мес, 20 vCPU, 32 ГБ, 192 ГБ NVMe) — когда появились фоновые воркеры, аналитика и заметный трафик.

Два требования к серверу принципиальны. Первое — KVM-виртуализация: ресурсы выделены вам, а не делятся с соседями «по настроению», и Docker работает без ограничений. Второе — NVMe-диск: база данных упирается в диск раньше, чем в CPU, и разница между SATA SSD и NVMe на запросах со случайным чтением ощущается как разница между «страница открывается» и «страница думает». Ещё один практический плюс: сервер у Cheap-Host выдаётся за 45–60 секунд — можно развернуть продакшен в день, когда MVP готов, а не планировать инфраструктуру заранее.

Стек MVP одним файлом: docker-compose

Docker Compose — золотой стандарт инфраструктуры раннего стартапа: весь продакшен описан одним YAML-файлом, который лежит в git рядом с кодом. Новый сервер разворачивается за минуты, локальное окружение разработчика идентично боевому.

Установка Docker на Ubuntu 24.04:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

Типовой docker-compose.yml для MVP (backend + PostgreSQL + Redis):

services:
  app:
    build: .
    restart: unless-stopped
    env_file: .env
    depends_on:
      - db
      - redis
    ports:
      - "127.0.0.1:3000:3000"

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_DB: app
      POSTGRES_USER: app
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    volumes:
      - redisdata:/data

volumes:
  pgdata:
  redisdata:

Запуск всего стека — одна команда:

docker compose up -d

Обратите внимание на два решения. Порт приложения привязан к 127.0.0.1 — наружу его отдаёт только Nginx с SSL-сертификатом, база и Redis вообще не видны из интернета. Данные лежат в именованных томах pgdata и redisdata — контейнеры можно пересоздавать при каждом деплое, данные это не затрагивает. Базовые приёмы работы с контейнерами разобраны в статьях про Docker на VPS и Docker Compose на практике.

Поверх стека остаётся поставить Nginx и бесплатный сертификат Let's Encrypt — это ещё 15 минут по инструкции из статьи про SSL-сертификат Let's Encrypt.

Минимальный порядок вместо DevOps-отдела

Стартапу на этапе MVP не нужен Kubernetes и выделенный DevOps. Нужны четыре привычки, каждая — на полчаса настройки:

  1. Деплой скриптом, а не руками. Даже простой deploy.sh с git pull && docker compose up -d --build лучше SSH-сессии с ручными командами. Следующий шаг — CI/CD через GitHub Actions.
  2. Бэкап базы каждый день. Cron-задача с pg_dump и отправкой дампа во внешнее хранилище. Строка в crontab:
   0 3 * * * docker compose -f /srv/app/docker-compose.yml exec -T db pg_dump -U app app | gzip > /backup/db-$(date +\%F).sql.gz
  1. Базовая защита сервера: вход только по SSH-ключам, файрвол UFW с открытыми 80/443 и SSH, fail2ban. Полный чек-лист — в статье Безопасность VPS: чек-лист из 15 пунктов.
  2. Мониторинг доступности. Хотя бы внешний пинг-сервис с уведомлением в Telegram: узнавать о падении продукта от инвестора — плохой сценарий.

Рост без переезда: апгрейд и разнесение ролей

Главный страх основателя — «а вдруг выстрелит, и всё ляжет». План масштабирования на VPS выглядит так:

Этап 1. Вертикальный апгрейд. Первый ответ на рост нагрузки — больше ресурсов той же машине. У Cheap-Host апгрейд CPU, RAM и диска выполняется без потери данных: IP-адрес, файлы и настройки остаются на месте, docker-compose даже не заметит изменений. Путь Start → Pro → Ultra покрывает рост от первых пользователей до десятков тысяч визитов в день.

Этап 2. Разнесение ролей. Когда один сервер перестаёт справляться, стек естественно делится: база данных переезжает на отдельный VPS, сервер приложения остаётся на своём. Благодаря Docker переезд — это pg_dump, восстановление на новой машине и правка одной строки с адресом БД в .env.

Этап 3. Горизонтальное масштабирование. Несколько серверов приложения за балансировщиком, реплики базы, вынесенные воркеры. К этому моменту у вас есть выручка и команда — и решения уровня инфраструктуры SaaS-проекта принимаются уже осознанно, а не авансом.

Ключевая мысль: не стройте третий этап, пока живёте на первом. Каждый месяц преждевременной «энтерпрайз-инфраструктуры» — это деньги и время, отнятые у продукта.

FAQ

Почему не начать сразу в облаке, раз все стартапы так делают?

Облако выигрывает при непредсказуемой нагрузке и нужде в автоскейлинге. У MVP нагрузка почти нулевая, а платить приходится за каждый компонент: VM, managed-базу, балансировщик, трафик. Сопоставимая конфигурация в облаке стоит в разы дороже фиксированных 750 ₽/мес за VPS.

Хватит ли одного VPS для запуска MVP?

Да. Backend, база, Redis и reverse-proxy спокойно живут на одном сервере с 16 ГБ RAM и обслуживают тысячи пользователей в день. До первых серьёзных инвестиций вы в один VPS с 12 vCPU не упрётесь.

Что делать, когда проект вырастет из тарифа?

Сначала вертикальный апгрейд — у Cheap-Host ресурсы увеличиваются без потери данных. Затем разнесение ролей: база на отдельный VPS, второй сервер приложения. Docker-стек переносится за минуты.

Как не потерять данные при переезде или сбое?

Данные — только в Docker-томах, ежедневный pg_dump — во внешнее хранилище по стратегии 3-2-1. Тогда восстановление — это развёртывание compose-файла и загрузка последнего дампа.

Нужен ли стартапу DevOps-инженер на этом этапе?

Нет. Стек из docker-compose, Nginx и certbot настраивает любой backend-разработчик за день. Kubernetes и выделенный DevOps понадобятся, когда серверов станет больше пяти.

Вывод

Инфраструктура стартапа на этапе MVP — это один VPS, один compose-файл в git, ежедневный бэкап и SSL. Такая схема запускается за день, стоит как пара чашек кофе в месяц и спокойно доживает до первых тысяч пользователей, после чего апгрейдится без переезда. Если вы готовы запускать MVP — у Cheap-Host тариф Pro от 750 ₽/мес: 12 vCPU, 16 ГБ RAM, NVMe, KVM, безлимитный трафик и выдача сервера за 45–60 секунд. Тарифы и заказ — на cheap-host.onl; оплатить можно СБП, картой «Мир» или криптовалютой.

Читайте также