В этой статье
Локация — одно из немногих инфраструктурных решений, которые потом не исправишь более быстрым процессором. Расстояние между сервером и пользователями задает нижнюю границу задержки, которую не устранит никакое оборудование, а от страны, где находятся данные, зависит, какие правила к ним применяются. Разберемся, как учитывать и то и другое, — по той же формуле, что лежит в основе наших оценок задержки.
Физика: около 200 км за миллисекунду
В оптическом волокне свет распространяется со скоростью около двух третей от скорости в вакууме: примерно 200 000 км в секунду, или 200 км за миллисекунду. Запрос и ответ преодолевают расстояние дважды, поэтому каждые 1 000 км между вами и пользователями добавляют как минимум 10 мс ко времени прохождения сигнала туда и обратно (RTT).
Реальные маршруты длиннее, чем на карте. Кабели проложены вдоль побережий, железных и автомобильных дорог; трафик переходит из сети в сеть в определенных точках стыка; BGP выбирает маршруты исходя из коммерческих политик, а не географии. Маршрутизаторы добавляют немного задержки на каждом хопе. Поэтому в наших расчетах задержки расстояние по дуге большого круга умножается на 1,3 с поправкой на обходные маршруты, делится на 200 км/мс, результат удваивается для пути туда и обратно, и к нему прибавляется 2 мс на работу оборудования:
estimated RTT (ms) = 2 × (distance in km × 1.3 / 200) + 2| Откуда → куда | Расстояние по большому кругу | Минимум по волокну (по прямой) | Расчетное RTT |
|---|---|---|---|
| Торонто → Нью-Йорк | ≈ 550 км | 5,5 мс | ≈ 9 мс |
| Мадрид → Лондон | ≈ 1 260 км | 12,6 мс | ≈ 18 мс |
| Мумбаи → Сингапур | ≈ 3 900 км | 39 мс | ≈ 53 мс |
| Нью-Йорк → Лондон | ≈ 5 570 км | 55,7 мс | ≈ 74 мс |
| Сан-Паулу → Майами | ≈ 6 570 км | 65,7 мс | ≈ 87 мс |
| Сидней → Сингапур | ≈ 6 310 км | 63,1 мс | ≈ 84 мс |
| Сидней → Лос-Анджелес | ≈ 12 080 км | 120,8 мс | ≈ 159 мс |
| Франкфурт → Сингапур | ≈ 10 260 км | 102,6 мс | ≈ 135 мс |
Это оценки, а не результаты измерений: перегрузка или непрямой маршрут могут добавить гораздо больше, а обратный путь может отличаться от прямого.
Почему задержка (RTT) важнее пропускной способности
Большинство взаимодействий в интернете — это серия циклов «туда и обратно», и каждый из них упирается в скорость света:
- Установка соединения. Новое HTTPS-соединение поверх TCP тратит один цикл на TCP-рукопожатие, еще один — на рукопожатие TLS 1.3 и еще один — на сам запрос, и только потом приходит первый байт ответа. Три цикла при расчетных 20 мс занимают 60 мс, а при 150 мс — 450 мс.
- Медленный старт TCP. Новое соединение начинает с отправки примерно 10 пакетов (около 14 КБ) и с каждым циклом примерно удваивает этот объем. Чтобы передать так 1 МБ, нужно около семи циклов при любой скорости порта: примерно 140 мс при RTT 20 мс и больше секунды при 150 мс.
- Страницы и API. Страница, которая загружает сначала HTML, потом CSS, потом шрифты, выстраивает циклы в цепочку. API-клиент, который делает 20 последовательных вызовов, платит RTT 20 раз.
- Базы данных. Каждый запрос к базе обходится минимум в один цикл. Если для ответа на одно обращение приложение выполняет 30 запросов к базе друг за другом, на ожидание уходит 30 RTT: внутри одной локации, где цикл обычно занимает намного меньше миллисекунды, это пренебрежимо мало, а при 80 мс — 2,4 секунды.
- Игры. RTT — это тот самый пинг, который видят игроки. Тикрейт сервера определяет, как часто обновляется мир, а пинг — насколько устаревшим каждое обновление доходит до игрока.
Поэтому сервер рядом с пользователями часто ощущается быстрее, чем более мощный, но далекий.
Сначала пользователи, потом данные
- Определите, где ваши пользователи. По логам сервера сгруппируйте трафик или игроков по странам или агломерациям и присвойте каждой группе вес по тому, что важно для вас: выручке, числу активных игроков или договорным обязательствам.
- Оцените RTT от каждой группы до каждой подходящей локации с помощью проверки задержки и выберите локацию, при которой большинство пользователей с учетом весов укладывается в ваш целевой показатель.
- Размещайте вычисления рядом с данными. Если ваша база данных, объектное хранилище или сторонние API, к которым вы часто обращаетесь, находятся в одном регионе, размещайте там же и серверы приложений. Интенсивный обмен между приложением и базой обычно чувствительнее к задержке, чем трафик между пользователем и приложением.
- Разносите инфраструктуру по локациям, только если одна локация не может хорошо обслужить всех. Аудитории, рассредоточенной по Европе, Азии и обеим Америкам, обычно нужно больше одной локации.
Точки обмена трафиком и подводные кабели
Почему одни города становятся лучшими узлами связи, чем другие, объясняют два элемента общедоступной инфраструктуры.
Точки обмена трафиком (IXP) — это площадки, где сети передают трафик друг другу напрямую. Там, где встречается много сетей, пути между ними, как правило, короткие. Хорошо это видно на примере Европы: во Франкфурте находится DE-CIX, в Амстердаме — AMS-IX, в Лондоне — LINX, три из крупнейших точек обмена трафиком в мире.
Подводные кабели переносят почти весь трафик между континентами, а выходят на берег лишь в нескольких регионах:
- Нью-Йорк — классический регион выхода трансатлантических кабелей, ведущих в Великобританию и континентальную Европу.
- Майами — главные ворота между Северной Америкой, Карибским регионом и Латинской Америкой.
- Лос-Анджелес и остальное западное побережье США служат опорными точками многих транстихоокеанских маршрутов в Азию и Океанию.
- Сингапур связывает Юго-Восточную Азию с Индией, Австралией, Ближним Востоком и Европой.
- Токио находится на азиатском конце многих транстихоокеанских кабелей и служит главным узлом межсетевого обмена Японии; расчетная задержка до Сеула — 17 мс.
Сеть DediJet использует мультихоминг: каждая локация подключена к нескольким транзитным провайдерам по BGP через резервированные аплинки. И все же хорошая связность города не гарантирует короткого пути до каждого пользователя, поэтому измерения так важны.
Закон: где хранятся ваши данные
От локации сервера зависит и то, где физически находятся ваши данные, а это может иметь значение с точки зрения регулирования или договоров. Несколько фактов, от которых можно оттолкнуться в разговоре с юристами:
| Локации DediJet | Юрисдикция | Основное законодательство о защите данных |
|---|---|---|
| Франкфурт, Амстердам | Европейский союз (Германия, Нидерланды) | GDPR, а также национальные законы |
| Лондон | Великобритания | UK GDPR и Закон о защите данных (Data Protection Act) 2018 года |
| Нью-Йорк, Майами, Лос-Анджелес | США | Федеральные отраслевые нормы, например HIPAA для медицинских данных, и законы штатов, например CCPA в Калифорнии |
| Сингапур | Сингапур | Закон о защите персональных данных (PDPA) |
| Токио | Япония | Закон о защите персональной информации (APPI) |
- Дело не только в локации. GDPR распространяется на организации, учрежденные в ЕС, а также на тех, кто предлагает товары или услуги людям в ЕС или отслеживает их поведение, — независимо от того, где стоит сервер. Хостинг во Франкфурте не снимает обязательств, а хостинг в Нью-Йорке не позволяет их избежать.
- У передачи данных есть правила. GDPR, UK GDPR, сингапурский PDPA и японский APPI ограничивают передачу персональных данных за рубеж, если страна назначения не обеспечивает сопоставимого уровня защиты и не применяются иные гарантии, например договорные положения или согласие.
- Договоры могут быть строже закона. Заказчики из госсектора, здравоохранения и финансовой сферы могут требовать, чтобы данные оставались в определенной стране или регионе.
Примечание. Это общая информация, а не юридическая консультация. Как эти правила применяются к вашим данным, уточните у квалифицированного юриста.
Когда одной локации мало
- Региональные серверы. Игровые сообщества и SaaS-продукты с пользователями на нескольких континентах часто держат по серверу в каждом регионе, рядом с пользователями, а направляют людей к нужному серверу с помощью GeoDNS или региональных имен хостов вроде
eu.example.com. - Асинхронная репликация между регионами. Синхронный коммит ждет ответа реплики как минимум один цикл туда и обратно: между Франкфуртом и Сингапуром это расчетные 135 мс. Держите синхронные реплики в той же локации, а в удаленную реплицируйте асинхронно.
- Шифрованные каналы между локациями. Бесплатная приватная VLAN, которая предоставляется по запросу, соединяет ваши серверы в пределах одной локации. Между локациями трафик идет через публичный интернет, поэтому защищайте его с помощью WireGuard или IPsec.
- Резервные копии — в другом месте. Храните хотя бы одну копию бэкапов за пределами локации основного сервера.
- Одинаковое оборудование везде. Ryzen 5 7600 и Ryzen 7 9700X доступны во всех 8 локациях, поэтому парк серверов в нескольких регионах остается однородным.
Трафик репликации между регионами тоже не тарифицируется по гигабайтам: на любом тарифе трафик безлимитный в пределах скорости порта.
Сначала оцените, потом измерьте
Начните с проверки задержки, чтобы отобрать подходящие локации для городов ваших пользователей, а затем посмотрите, что есть в наличии в каждой из наших 8 локаций. Когда сервер заработает, измерьте реальный маршрут оттуда, где находятся ваши пользователи:
mtr -rwc 50 203.0.113.10
ping -c 20 203.0.113.10mtr объединяет traceroute и ping, поэтому видно, на каком участке маршрута появляются задержка или потери пакетов. Как читать вывод, объясняет наше руководство по тестированию сети. Благодаря помесячной оплате и отсутствию долгосрочных обязательств переезд в более удачную локацию — это миграция, а не переговоры по договору.
Серверы из этой статьи
- AMD Ryzen 5 76006 ядер / 12 потоков · 64 ГБ DDR5 · 2 × 1 ТБ NVMe · 1 Гбит/с$115/мес.В наличииЗаказать AMD Ryzen 5 7600
- AMD Ryzen 7 9700X8 ядер / 16 потоков · 64 ГБ DDR5 · 2 × 1 ТБ NVMe · 1 Гбит/с$149/мес.В наличииЗаказать AMD Ryzen 7 9700X