DNS и CDN обычно вспоминают в двух ситуациях: когда сайт начал ложиться под нагрузкой и когда бизнес собрался расти в новые регионы. Но вопрос «внедрять или нет» стоит не всегда — важнее понимать, в какой момент компания реально с этим сталкивается и что при этом происходит. Доклад рассматривает тему с позиции механики и экономики (включая импортозамещение): когда с внешними DNS и CDN в принципе стоит начинать работать, а когда можно обойтись без них.
Исходная ситуация
Есть простая компания «Очень горячая еда». Сначала это один киоск с шаурмой, потом два, потом три. Затем выясняется, что в киоск можно поставить ноутбук и продавать кратно больше. Из онлайна — около 100 DAU (ежедневных активных пользователей), продукция представлена в Адлере. Инфраструктура минимальная: сайт с меню, картинками, авторизацией, корзиной и чекаутом, размещённый на обычном хостинг-провайдере, который берёт на себя весь головняк по DNS. CDN на этом этапе не нужен: стоит одна машина с картинками, и всё с неё нормально отдаётся. Потом происходит то, что предсказать было невозможно, — COVID-19. Пользователей внезапно становится не сто, запрос огромный, а оказаться у палатки люди не могут. Онлайн быстро набирает репутацию, внимания к сайту становится много, и сайт периодически ложится. Несчастная машина греется и страдает, не все могут увидеть картинку с шаурмой и заказать. Вдобавок бизнес планирует экспансию: раз есть спрос, надо присутствовать не только в Адлере, но и в Петербурге, Москве и далее. В Питере, правда, шаверма, а не шаурма, — там продукт локально адаптируется и разворачивается отдельный инстанс.
Как работает DNS
Со стороны клиента всё просто. Человек обращается через маршрутизатор в интернет с запросом «хочу сайт», и запрос идёт по цепочке серверов сверху вниз: корневая зона, зона домена верхнего уровня (например, .pro), затем нужный домен вроде gitnet.pro. Обратно возвращается адрес машины, с которой клиент забирает информацию.
Пока компания живёт в маленьком локальном инстансе и услуги DNS оказывает местный хостинг-провайдер, проблем с DNS нет. Они начинаются дальше. С корневой зоной все DNS-провайдеры работают одинаково: доступа к ней у них нет, она управляется международной организацией. Поэтому важно, где находятся авторитативные серверы, сколько их и как они отдают информацию. Далее под внешним DNS понимается именно система авторитативных серверов, хранящих данные.
Как работает CDN
Пример проще показать на другой компании. Человек делает проект «Букашка ТВ» и заливает туда смешные видео. Пока пользователей немного — сотня человек спокойно смотрит, проблем нет. Но один из друзей уезжает во Владивосток, оказывается далеко от источника, и ролики грузятся долго. А потом на сервис натыкается блогер с аудиторией около ста тысяч человек: стандартно порядка 10% заходят посмотреть, и пользователей внезапно становится десять тысяч. Сервер с роликами перегревается и падает: полосы до сервера, скорее всего, хватает, а вот сам сервер страдает.
Далее под CDN понимается система edge-серверов, на которой кэшируется контент. Это, как правило, географически распределённая коммерческая сеть, где под контент выделяется целый сервер или кластер. Контент реплицируется: загружен на источник — появился везде, удалён — стёрся отовсюду. Оплата идёт за трафик, возможны дополнительные опции вроде сжатия контента по пути. Благодаря распределённости пользователь во Владивостоке смотрит видео без задержек, а при всплеске от блогера нагрузка размазывается по сети, и сервис не падает. Масштабирование гибкое, обычно по модели pay-as-you-go: при подключённой монетизации сервис фактически сам оплачивает свой CDN.
Итого: DNS — это система внешних авторитативных серверов, CDN — система edge-серверов по краям сети, которые хранят, резервируют и передают контент.
От бизнес-задач к сетевым требованиям
Бизнес видит проблему просто: ничего не работает, невозможно заказать еду, плюс готовится инстанс для Петербурга. Сетевой инженер преобразует это в требования:
1.
Высокая доступность. Сайт не должен лежать, картинки должны быть всегда доступны.
2.
Учёт географически распределённой аудитории.
3.
Защита от DDoS хотя бы в базовом виде, расширенная маршрутизация. Сайт уже не на одной машине, и пользователь должен попадать на ближайшую доступную
Справляться приходится с высокими нагрузками, медленной загрузкой и высокими затратами на пропускную способность. Если рефлекторно ставить всё больше машин с контентом и строить над ними маршрутизацию, не посчитав экономику, в какой-то момент можно уйти в огромные расходы. Особенно на старте экспансии, когда «больше» — пока абстракция и реальные объёмы измерить нельзя. В этот момент важно потратить как можно меньше, не уйдя в лишние расходы.
Когда нужен внешний DNS и когда — CDN
Глобальная аудитория:
Решается и DNS, и CDN. Авторитативные серверы должны быть распределены и направлять пользователя на ближайшую работающую машину: скорость загрузки напрямую влияет на удержание — не открылось за пару секунд, человек ушёл к конкуренту. CDN приближает статику к пользователю и снимает нагрузку с инфраструктуры.
Частые DDoS-атаки:
Нужны и DNS, и CDN, но с оговоркой: не все CDN умеют размазывать нагрузку по сети, это стоит уточнять сразу. Важный дисклеймер: внешние CDN и DNS не являются полноценной DDoS-защитой. При целенаправленных атаках нужны отдельные решения.
Медленная загрузка:
На неё внешний DNS влияет не всегда; дольше всего обычно грузится статика. При большом объёме тяжёлого статического контента (картинки, видео, JSON) задачу оптимально решает CDN: закэширует и будет отдавать быстрее.
Высокие требования к аптайму:
Нужны и DNS, и CDN. С CDN понятно. DNS решает случай, когда сервер выключен из сети, но всё ещё считается оптимальным для кластера пользователей. Внешний DNS обычно имеет DNSSEC и DNS failover: делает лёгкие проверки ко всем машинам и при отказе одной автоматически меняет список машин и приоритетов.
Геобалансировка:
Помимо геораспределения бывает балансировка по весу: машины разной мощности выдерживают разный RPS, и можно статически задавать, сколько запросов приземляется на какую. По сути внешние DNS и CDN — это хорошо настроенный Nginx, заточенный под разные виды балансировки.
Последовательность и виды бизнеса
Начинать стоит с внешнего DNS: так быстро видно, в чём проблема — велик ли time to first byte до сайта, а контент грузится уже позже. Если после этого сайт доступен, атак меньше, но статика по-прежнему грузится долго и падает ретеншн, — подключается CDN. Последовательность важна: бизнес любит гипотезы, а проверять их одновременно нежелательно; к тому же «и то, и другое сразу» тяжелее продать наверх. По видам бизнеса:
Локальному сервису с малой нагрузкой можно обходиться без внешних DNS и CDN.
Стартапу с растущим трафиком сначала нужен DNS, затем CDN.
Интернет-магазинам с клиентами сразу по всей РФ, СНГ или миру DNS и CDN нужны на старте — и здесь особенно важна модель pay-as-you-go, чтобы не переплачивать за простаивающие инсталляции.
Симптомы и масштабирование
Для сетевого специалиста есть характерные сигналы.
По DNS:
обрывы, медленный TTL и атаки, из-за которых падает аптайм, — повод брать отдельный DNS у полноценного провайдера, а не у хостинга.
По CDN:
высокий time to first byte, рост задержки доставки при масштабировании и появление международной аудитории.
Критичность зависит от объёма статики: сайт-книжка — не критично, сплошные картинки — важнее, видеохостинг — максимально.
При масштабировании требований становится больше:
географически распределённый DNS
приземляющий регионы на нужные машины
более полноценная DDoS-защита
на самом крупном уровне — полное кэширование, защита и оптимизация
DNS до большого числа пользователей нужен только при проблемах с аптаймом, поэтому включать его просто так не стоит, хотя задуматься о нём заранее — хороший инженерный тон.
Собственные DNS и CDN и экономика
О собственных DNS и CDN стоит думать на дальнейших стадиях — у компаний с миллионом пользователей и больше, где pay-as-you-go перестаёт быть выгодным, и у компаний с высокими внутренними требованиями (госпроекты, крупный B2B), где выгоднее самим хранить и обрабатывать всё с точки зрения резервирования, затрат и безопасности. Чаще всего это приходит от бизнеса как требование, которое не выполняется ни одним провайдером.
По затратам
Капитальные — серверы, сети, ПО, оплачиваются условно один раз; у внешнего сервиса это фактически pay-as-you-go — сколько трафика израсходовано, столько и оплачено. Операционные затраты на администрирование и защиту с внешним сервисом обычно прописаны в SLA. Собственную инфраструктуру масштабировать дорого, но слово «дорого» применимо примерно до ста тысяч пользователей. Когда ежемесячная плата за трафик становится сопоставимой с собственной инсталляцией, стоит думать о переходе на неё.
Финал
Внешние DNS и CDN — не разовое «внедрение по умолчанию», а инструменты, которые подключаются под конкретную проблему и в определённый момент роста. Логика простая: локальному сервису они не нужны; при росте нагрузки и проблемах с доступностью начинают с DNS, а при медленной статике добавляют CDN; бизнесу с изначально глобальной аудиторией — оба сразу и обязательно по модели pay-as-you-go. На больших объёмах и при жёстких внутренних требованиях экономика разворачивается в сторону собственной инфраструктуры. Ключевой принцип — не наращивать машины и сервисы рефлекторно, а считать экономику и подключать ровно то, что решает текущую проблему. А для аудитории в РФ и СНГ российские провайдеры дают меньшие задержки, устойчивость к санкциям и соответствие требованиям регуляторов — при растущем, хоть и пока не полном, функционале.