Привет, Хабр!
Я полгода в одиночку пилю VantageDNS, privacy-focused recursive DNS с фильтрацией. Аналог NextDNS, юрисдикция EU. Ниже честный построчный разбор того, во что мне на самом деле обходится сеть из 8 нод по миру и контрол-плейн. Не маркетинговое «около ста евро», а реальная цифра, которая каждый месяц списывается с карты: €46.27.
В конце таблица расходов и прикидка, сколько платных юзеров надо, чтобы это перестало быть хобби.
Зачем вообще делать DNS
Сначала пара слов про рынок, чтобы понятно было, зачем вписываться в нишу, где уже сидят Cloudflare, Quad9 и пара крупных нишевых игроков.
NextDNS, по слухам и косвенным признакам, делает что-то порядка $90M ARR. AdGuard публично рассказывает про десятки миллионов устройств. Control D растёт. Ниша рабочая, и она не про «изобрести DoH», а про продукт: дашборд, фильтрлисты, родительский контроль, отчёты. DNS как протокол скучный, скучный продукт вокруг внезапно нет.
Я не пытаюсь стать NextDNS. У них 50+ PoPs, команда, маркетинговый бюджет и пять лет форы. Я делаю узкую штуку: EU-only юрисдикция (Финляндия), прозрачный прайс, XMR-биллинг для параноиков, и человеческую поддержку, потому что я её сам и закрываю по ночам. Это нишевый продукт для людей, которым важен пункт «данные не уезжают в США», а не пункт «P50 в Сан-Паулу 8 мс».
И вот тут начинается экономика.
Архитектура из 8 нод — почему 8, а не 50
Первая реакция на «делаю DNS-сервис» обычно: «тебе нужен anycast и сорок локаций, иначе latency пострадает». Это правда для Cloudflare и для NextDNS. Для маленького EU-нишевого провайдера нет.
Я посчитал. P50 для DoH-резолвера в EU при двух-трёх нодах в Европе укладывается в 25-30 мс для 95% юзеров. Дальше каждая дополнительная нода даёт убывающую отдачу: добавить Варшаву к Хельсинки и Милану это улучшение на 5-8 мс для польских юзеров и ноль для всех остальных. Для рекурсивного резолвера, где сам резолв и так стоит 20-100 мс из-за upstream-цепочки, эти 5 мс на edge вообще не видны.
Поэтому 8 нод выглядят так:
EU + neighbours ┌──────────────────────────────────────────┐ │ Helsinki (FI) ── Reykjavík (IS) │ │ │ │ │ │ └──── Milan (IT) ────┘ │ │ │ │ │ Bratislava (SK) │ │ │ │ │ Almaty (KZ) │ └──────────────────────────────────────────┘ Far edge ┌──────────────────────────────────────────┐ │ Tokyo (JP) São Paulo (BR) │ │ Auckland (NZ) │ └──────────────────────────────────────────┘
Пять нод покрывают EU и ближние страны, три закрывают Asia/Pacific и Южную Америку с приличным latency. Север (Reykjavík) и юг (São Paulo) — для тех редких юзеров, кому реально 5000 км до ближайшей точки.
Anycast я сознательно не делаю. Это политическое решение: anycast требует своей AS, BGP-провайдера и партнёрств, которые в итоге размывают позиционирование «EU jurisdiction». Когда твой anycast-префикс анонсится из Майами и Сингапура, говорить «мы не отдаём данные в США» становится сложнее. Geo-DNS на dns.vantagedns.com с приоритетом по latency для моего масштаба работает прилично, и я полностью контролирую, куда юзер попадёт.
Как выбирал провайдеров
Я смотрел на четыре параметра: цена за месяц, наличие нужной локации, качество сети (потери, jitter, IPv6), и сколько времени уходит на первый деплой. Имена провайдеров не называю — это рекомендация и реклама, а я предпочитаю писать про принципы. Тех, кто реально хочет, я отправляю на reddit-thread r/webhosting за месяц, и они находят сами.
Принципы такие.
Один европейский low-cost VPS-провайдер с филиалами в нужных мне странах закрыл шесть из восьми моих локаций. Базовый план на 1 vCPU и 1 GB RAM достаточен для edge-ноды: vdns-edge Go-бинарь в нагруженный час съедает 100-200 MB RAM и долю одного ядра. DNS workload это много мелких пакетов, CPU тратится на крипто (TLS handshake) и распарсивание DNS-сообщений, оба этих этапа неприлично дешёвы на современных AMD-ядрах. €1.20 в месяц с включёнными несколькими терабайтами трафика — нормально.
Две оставшиеся локации (Бразилия и Новая Зеландия) пришлось взять у того же провайдера в их региональных филиалах, потому что мой основной хостер туда не дотягивается. Тарифы те же — €1.20.
Что я не стал делать.
Не стал брать «энтерпрайз»-сегмент (AWS, GCP, Azure). И не из-за «дорого вообще», а из-за конкретной строки в их прайсинге, о которой расскажу ниже.
Не стал делать anycast у апстрим-провайдеров. Получить свою AS и анонсировать /24 в BGP — это €500-2000 единовременно и €100-300 в месяц за «BGP-friendly» хостинг. И самое важное — это размывает юрисдикцию: твой anycast-префикс физически анонсится из Майами, и аргумент «EU-only» становится наполовину сказкой.
Не стал брать dedicated-серверы в EU за €40 для edge-нод. На edge dedicated не нужен: workload помещается в 1 GB RAM, диск не нужен, всё in-memory. Dedicated имеет смысл только для control plane, где живёт Postgres и ClickHouse. Туда я взял один VPS пожирнее, об этом ниже.
И вот тут начинается главный разговор — про egress.
Egress costs — самая частая ловушка
Это пункт, на котором ломаются все, кто впервые считает «дешёвую инфру за $5» и потом получает счёт на $300.
DNS-резолвер на каждый запрос делает upstream-обращения, отвечает клиенту, шипит query log в control plane. На ноде с приличной нагрузкой это легко 1-3 TB исходящего трафика в месяц. И вот тарифы:
Класс провайдера | Inclusive egress | После лимита |
|---|---|---|
Low-cost EU VPS (Hetzner, OVH, Aeza-class, …) | 5-20 TB | €1-3/TB |
DigitalOcean / Vultr / Linode | 2-5 TB | $10/TB |
AWS EC2 (US-east) | 100 GB на аккаунт |
|
GCP Compute | 200 GB | $0.085-0.12/GB |
Azure | 100 GB | $0.087/GB |
Возьмите ноду на AWS за «$3.50 в месяц» с 1 TB inclusive (это Lightsail, у EC2 ещё хуже). Налейте на неё 2 TB реального DNS-трафика. Получите счёт $3.50 + $90 = $93.50. У low-cost EU-VPS за тот же трафик будет €1.20 + €0 = €1.20.
Это главный гэп между «дешёвой инфрой за пять долларов» и «реальностью за двести». Все облачные гиганты зарабатывают на egress, и DNS один из худших workload’ов для них из-за высокого отношения трафика к CPU. Если кто-то предлагает вам делать DNS на AWS plain-instance или на GCP, посмотрите на его счёт через три месяца, он будет интересный.
Все нормальные low-cost VPS-провайдеры (европейские и не очень) дают inclusive egress, которого хватает с запасом. Это не случайность, это бизнес-модель: они продают железо, а не трафик.
Реальная разбивка: €46.27 в месяц
Ниже построчный счёт, который мне приходит каждый месяц. Без приукрашиваний и без «ну плюс-минус полтинник».
Item | €/мес | Note |
|---|---|---|
8× edge-нода (FI, IS, IT, SK, KZ, JP, BR, NZ) | 9.60 | 8 × €1.20, 1 vCPU / 1 GB RAM / inclusive-egress |
Control plane VPS (4 vCPU / 8 GB / NVMe) | 14.95 | Postgres + ClickHouse + API + Redis + BTCPay |
Brevo (transactional email) | 14.50 | до 20k писем/мес |
Geo-DNS / health-check провайдер | 3.50 | latency-routing на |
Backup storage (S3-compatible, 100 GB) | 1.72 | дамп Postgres + ClickHouse parts |
Domains (vantagedns.com + .net + .org amortized) | 2.00 | ~$24/год / 12 |
Итого | 46.27 |
Округлять не буду: €46.27 в месяц. Цифра, которая реально списывается с карты.
ClickHouse retention сейчас держит ~30 GB на 30-дневном окне (free план 24 часа, paid до 30 дней). Postgres ~3 GB. Redis 100 MB. Control plane VPS с 8 GB RAM и NVMe это всё спокойно тянет с запасом года на полтора при текущей траектории роста. Когда упрусь — мигрирую на dedicated за ~€40, при текущем росте это вопрос 12-18 месяцев.
TLS Let’s Encrypt, бесплатно. MoneroPay для XMR-биллинга и BTCPay self-hosted прямо на control plane, доплачивать никому не надо. Prometheus + Grafana для мониторинга там же. Это всё не отдельные строчки в счёте, а cgroups внутри одного VPS.
Edge-ноды друг с другом и с core общаются через gRPC over TLS на отдельном control-channel домене. Никакого VPN-mesh: лишний слой инкапсуляции, лишний latency, лишняя точка отказа. У восьми нод mesh решительно не нужен.
Что НЕ входит в эти €46
Дальше то, что добавляется к инфре, но обычно не считается «инфраструктурой»:
Item | €/мес | Note |
|---|---|---|
Sentry (Hobby tier) | 0 | пока бесплатный, апгрейд когда упрёмся |
GitHub (Pro) | 4 | private repos и Actions minutes |
Plausible Analytics | 9 | self-hosted был, оказалось проще платить |
Бухгалтерия (Holvi business account) | 13 | Finnish OSS, обязательно |
Юридическое (амортизация регистрации Toiminimi и юриста на старте) | 15 | разовые ~€500, размазал на 3 года |
Резерв на VAT MOSS отчёты | 0 | сам делаю в OSS Portal |
Итого дополнительно | 41 |
Реальная стоимость продукта в месяц получается €87.27. Половину это инфра, половину — софт и операционная обвязка вокруг бизнеса. Когда я сам считал в первый раз, я ожидал, что инфра будет доминантной строкой. По факту инфра меньше, чем GitHub + Plausible + бухгалтерия.
И ещё одна строка, которую считать или нет, личный выбор: мой собственный труд. Если бы я кодил это за рыночную ставку, продукт стоил бы тысяч пятнадцать евро в месяц только за разработку. Без флагов тестирую на себе, что довольно унизительно, но для оценки break-even это не считаем, иначе индихакерство не имеет смысла никогда.
Сколько надо платных юзеров чтобы выйти в плюс
Pro-план VantageDNS стоит €25/мес. После комиссий процессинга (Stripe ~5% effective с учётом международных карт и FX, XMR через MoneroPay ~0.5%) до меня доходит примерно €23 с подписки в среднем по плате.
Вот как выглядит экономика по ступенькам:
Платных | Gross/мес | После комиссий | После налогов (24% Finnish corp + VAT учтён) | Статус |
|---|---|---|---|---|
3 | €75 | €69 | €52 | инфра окупилась |
5 | €125 | €115 | €87 | инфра + софт |
12 | €300 | €276 | €210 | плюс бухгалтерия и легал |
30 | €750 | €690 | €524 | можно купить кофе |
60 | €1500 | €1380 | €1048 | пол-зарплаты сисадмина |
150 | €3750 | €3450 | €2622 | можно жить |
300 | €7500 | €6900 | €5244 | пора нанимать поддержку |
Три платника и сервера платят сами за себя. Двенадцать и я закрываю всю операционную обвязку. Тридцать и я хотя бы оправдываю время. Чтобы добраться до тридцати платников, по статистике NextDNS-клонов нужно где-то 1500-3000 free signups: конверсия free→paid обычно 1-3% на DNS-продуктах. Это много меньше, чем у обычного SaaS, потому что бесплатный план у DNS-провайдеров уже закрывает 90% потребностей частного юзера.
Поэтому маркетинговый прицел не «получить тысячу платных за месяц», а «получить пять тысяч free за год и конвертить медленно, через product-led рост».
Чему научился за полгода
Несколько вещей, которые я хотел бы сказать самому себе пол-года назад.
Не оптимизируй на старте. Разница между €46 и €30 на инфре это 16 евро. За эти 16 евро я бы не нанял даже один час разработчика. Час на торг с провайдером, час на выбор более дешёвого тарифа, час на миграцию, и я уже потратил больше, чем сэкономил за год. На €46 я думаю о продукте. На €30 я думал бы о провайдерах.
Один провайдер с филиалами лучше зоопарка. Я мог бы натащить ноды у пяти разных хостеров «чтобы не было single point of failure». Я не стал. Один провайдер это один биллинг, один аккаунт, один тикет-трекер для саппорта, и одни SSH-ключи, которые ротировать. Single point of failure я закрываю не «вторым хостером», а тем, что edge stateless: если нода умерла, geo-DNS уводит юзеров на соседнюю, на восстановление новой ноды у меня уходит ~12 минут с Ansible-плейбуком.
Egress это главный killer. Если кто-то говорит «у меня DNS на AWS», спросите, сколько он платит за трафик. Если он не знает, подождите пару месяцев и спросите ещё раз. Реальность, как водится, побьёт его палкой по голове.
На control plane дисковый I/O важнее CPU. ClickHouse при retention 30 дней даже на скромной нагрузке хочет приличный NVMe, а на shared SSD будет страдать. Когда выбираете VPS под control plane, не оптимизируйте на RAM, оптимизируйте на NVMe и io-priority.
Геораспределение не самоцель. Три ноды в EU + четыре по миру лучше пятидесяти размазанных, когда у тебя ноль юзеров в Бразилии. Каждая лишняя нода это деплои, мониторинг, certs, патчинг. И когда у тебя 200 платников, ты не можешь себе позволить тратить день на ноду, которая обслуживает четырёх юзеров.
По софт-стеку правило простое: экономь на софте, не на железе. Self-hosted Plausible я держал три месяца, потом понял, что €9 в месяц за SaaS-версию я отбиваю одной ночью без Grafana-алертов от Plausible-контейнера. Sentry, бесплатный tier пока хватает. ClickHouse, open source, ставлю сам, не плачу ClickHouse Cloud €200/мес. Где можно поставить open source и забыть, ставь. Где open source требует постоянного внимания (Plausible, Grafana Cloud), плати.
Что дальше
План на следующие полгода:
При 200 paying users мигрировать control plane с VPS на dedicated. Postgres + ClickHouse начнут уставать на 8 GB RAM при таком количестве записей в audit log. Цель — dedicated за ~€40/мес.
Добавить Mumbai или Bangalore. Asia-Pacific сейчас прикрыт Токио и Окленд, для индийских юзеров это всё ещё далеко.
Вторая control plane нода в режиме hot standby, репликация Postgres + ClickHouse. Это +€15/мес, но единая точка отказа на одном VPS начинает беспокоить уже сейчас.
Может быть anycast и BGP это отдельная боль. Но если проект вырастет, рано или поздно anycast станет дешевле, чем поддерживать ручной geo-routing.
Без пафоса
Никакого «exciting times» и «the future looks bright». Просто €46 на инфру, €87 с операционной обвязкой, 8 нод, три платника чтобы окупиться, тридцать чтобы оправдать время.
Если делаете что-то похожее, pro tip всего один: считайте egress до того, как выбираете хостинг. Всё остальное мелочи на фоне счёта от AWS за исходящий трафик.
И ещё. Любой нормальный европейский low-cost VPS-провайдер с филиалами и inclusive-трафиком закроет вам 90% случаев за десятку в месяц. Имена не подсказываю принципиально: я не амбассадор. Найти не сложно — берёте субреддит r/webhosting, листаете месяц назад, в каждом втором треде спорят про конкретно ваш кейс.
Ссылки
vantagedns.com/try, попробовать бесплатно
vantagedns.com/press-kit, пресс-кит, если пишете
