Атака на DNS, отказ диска, плановые работы на хосте — раньше это могло влиять на работу ваших проектов. С ростом числа клиентов и нагрузок прежние архитектурные решения перестали справляться.
Перестроили инфраструктуру по трем направлениям так, чтобы такие ситуации проходили для вас незаметно — или с минимальным эффектом.
1️⃣ Защитили исходящие запросы ваших серверов
Приложения регулярно обращаются к внешним сервисам по доменным именам — платежным шлюзам, API, базам, репозиториям. Каждый запрос проходит через наши DNS-резолверы. При мощной атаке на них запросы могли подвисать или не доходить — приложения теряли связь с внешним миром, даже когда серверы работали штатно.
Развернули резолверы по схеме anycast: запрос уходит на ближайший доступный узел → нагрузка распределяется между всеми. Атака на один узел не выводит DNS из строя — остальные продолжают отвечать, и приложения работают стабильно.
2️⃣ Отвязали данные от конкретного хоста
Внедряем сетевое хранилище NVMe-oF вместо локальных дисков. Начали с Москвы, постепенно раскатываем дальше.
На практике: если у конкретной ноды отказывает железо, сервер быстрее перезапускается на исправном оборудовании. Не нужно ждать, пока починят именно эту ноду, или разворачиваться из бэкапа.
3️⃣ Сделали миграцию виртуальных машин универсальной
С ростом числа клиентских конфигураций уперлись в корнер-кейсы — на некоторых миграция могла подвисать или требовать остановки сервера. Теперь переносим серверы быстро и без даунтайма в любом конфиге. Обычно в трех сценариях:
Плановые работы на железе: на время обслуживания хоста мигрируем машины на другой.
Балансировка: если хост перегружен, переносим часть виртуалок на свободный.
Проблемное железо: если нода ведет себя нестабильно, сразу запускаем миграцию до реальных сбоев.
Главная идея — закладывать запас прочности, чтобы инфраструктура справлялась и с текущим ростом, и с нештатными ситуациями.
P.S. Инженеры уже пишут статью на Хабр про факапы и победы в росте инфраструктуры. Пишите в комментариях, что хотите там увидеть — разберем.