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. Нужны четыре привычки, каждая — на полчаса настройки:
- Деплой скриптом, а не руками. Даже простой
deploy.shсgit pull && docker compose up -d --buildлучше SSH-сессии с ручными командами. Следующий шаг — CI/CD через GitHub Actions. - Бэкап базы каждый день. 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
- Базовая защита сервера: вход только по SSH-ключам, файрвол UFW с открытыми 80/443 и SSH, fail2ban. Полный чек-лист — в статье Безопасность VPS: чек-лист из 15 пунктов.
- Мониторинг доступности. Хотя бы внешний пинг-сервис с уведомлением в 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; оплатить можно СБП, картой «Мир» или криптовалютой.