Вопрос «в скольких регионах запускаться» обычно решают интуитивно. Между тем он сводится к арифметике: где находится состояние и сколько раз запрос к нему обращается.
Считаем честно
Пусть приложение в Москве, база — там же, пользователь в Новосибирске. RTT Новосибирск–Москва около 50 мс.
Добавили регион в Новосибирске. Сетевой путь до приложения сократился до 3 мс, но каждый запрос к БД теперь идёт в Москву. При трёх обращениях к базе на запрос итог такой:
| Схема | Путь до приложения | Запросы к БД | Итого |
|---|---|---|---|
| Только Москва | 50 мс | 3 × 1 мс | ≈ 53 мс |
| Москва + Новосибирск | 3 мс | 3 × 50 мс | ≈ 153 мс |
Второй регион сделал хуже втрое. Это не редкий случай, а типичный.
Когда регион помогает
- Приложение не ходит в общее состояние (статика, edge-логика, кеш).
- Состояние реплицировано и чтение идёт локально.
- Нужна отказоустойчивость, а не латентность — тогда считать надо иначе.
Порядок действий
Сначала посчитайте, сколько обращений к состоянию приходится на запрос. Инструмент есть в самой платформе:
vlone traces stats --since 24h --group-by span.name
# span.name вызовов/запрос p50 доля времени
# db.query 3.4 1.2ms 8%
# cache.get 7.1 0.3ms 4%
# http.client.upstream 0.8 82.0ms 71%В этом примере узкое место — внешний upstream, а не география. Второй регион не поможет; поможет кеш ответов или переход на асинхронную обработку.
Практическое правило
Добавляйте регион, когда доля сетевого пути до приложения в общей латентности превышает 30%, а обращения к общему состоянию — меньше 10%.
Во всех остальных случаях первая реплика для чтения или нормальный кеш дадут больше, чем ещё одна площадка.


