
В одном царстве, в одном хостинг-государстве жил-был сказочный Змей Горыныч. Он был трёхголовым, распределённым и главное отказоустойчивым. Конечно, иногда из-за синхронизации подлагивал, но в целом был зверем, которых на свете мало…
Охранял он, как и положено, всякие ценности. То жар-птицу (high-value asset), то царевну (уникальный бизнес-процесс), а иногда просто всё по периметру выжигал огнём, чтобы в прод лишний никто не сунулся.
Он не был злодеем, просто его так собрали по SLA: доступность — 99,99%, задержка — в пределах 200 мс, а восстановление — автоматическое. Богатыря Горыныч не боялся, потому что он для него не герой, а unplanned human intervention — угроза стабильности.
Давайте разберёмся, что за монстр этот Змей.
▍ Первая голова — распределённые вычисления
Первая (левая) голова Змея Горыныча занимается вычислениями: распределёнными, масштабируемыми и не всегда линейными. Она грызёт данные, пересылает задачи, балансирует очереди и просит больше всего ресурсов. Это у неё вечный троттлинг и тяжёлая судьба — обслуживать потоки запросов, которые по уму надо бы распараллелить, но они почему-то приходят монолитом.
За её плечами (точнее — шеей) стоит армия нод. С виду они все одинаковые, а на деле каждая со своей спецификой: одни тащат ML-инференс, другие крутят web-сервисы, третьи занимаются ETL, чтобы на утро было что заливать в дашборды короля хостинга.
Голова работает по принципу: «Разделяй и вычисляй». MapReduce ей снится ночами, а лучшая сказка — это Kubernetes, который всё за неё раскидает. Только вот сказки — сказками, а прод — суров, поэтому она живёт по заветам CAP-теоремы. Иногда отказывает в согласованности, иногда — в доступности, но никогда не врёт про партиционирование (почти никогда).
Бывает голова падает — в моменты перегрузки или когда какой-то новый чернокнижник по имени Джун задеплоил в пятницу функцию, забыв про await. В такой ситуации голова начинает кашлять таймаутами, шипеть в логах и звать DevOps-а с термометром.
Если всё работает как надо — она великолепна, но если отрубить её, всем остальным (не только головам) придётся импровизировать.
▍ Вторая голова — кластеры серверов
Средняя голова у Горыныча — самая спокойная. В отличие от левой, она не гонится за скоростью, не меряет свою крутость в миллисекундах и не швыряется очередями. Её скилы — стабильность и кластеризация.
Она помнит всё: от первого инцидента с потерей данных до последнего бэкапа, который никто так и не проверил на восстановление. У неё вместо подвала — Petabyte Storage, а на чердаке — пара холодных S3-бакетов, забитых логами, которые, возможно, когда-то будут нужны судебным аудиторам.
У этой головы всё по правилам. RAID настроен, реплики синхронизированы, и блокировка на уровне байта работает. И, конечно, она знает цену отказа, поэтому если что-то и «роняет», то только старую ноду, которую давно пора было вывести из эксплуатации.
Именно она обеспечивает высокую доступность, а когда приходит гроза — например, баг в storage-движке или сетевой split-brain, — голова Змея делает failover и спокойно возвращается к своим делам.
Она знает, что ничего не вечно: ни пользователи, ни проекты, ни даже админы. Но если хранение настроено правильно, продовое хостинг-государство переживёт даже падение королевства.
▍ Третья голова — отказоустойчивость
Третья голова Горыныча — это фронтмен. Это она кричит «429 Too Many Requests», когда все остальные молчат и именно она первым делом ловит стрелы багов, богатырей-шпионов и DDoS-погромщиков.
Она крутится на периметре: NGINX, Envoy, HAProxy — всё у неё под рукой. Она знает, когда забалансить, когда отфильтровать, а когда просто сказать: «Go away, bot».
Её паранойя — это не баг, а фича. Она считает запросы, проверяет токены, смотрит на геолокацию и TLS, как гусар на саблю: с уважением, но с подозрением.
Она умеет решать сложные задачи: от умной балансировки на основе заголовков до геораспределённой доставки контента, когда пользователи из Владивостока получают ответ быстрее, чем разработчик в Москве успевает нажать F5.
Её друзья — это CDN, WAF и вся армия сетевых гвардейцев. Её огонь бьёт не сильно, но точно: возвращает 403, если ты слишком любопытен, и 418 — если просто решил поиграться.
И да — у неё тоже есть кластеры, но не для хранения, а для распределения нагрузки. Кроме того, если ты начнёшь сканировать порты — она просто отправит тебя в бан. Навсегда, без суда и следствия, ведь у неё — Zero Trust даже к тебе, добрый молодец.
С этой головой связана интересная история. Однажды богатырь-хакер, вооружённый Zero-Day-эксплойтом и дурной славой, подобрался к логову Змея Горыныча. Он размахнулся и ловко снёс мечом правую голову, она исчезла в пламени 500-ой ошибки, оставив после себя только след в логах и грустный график в Grafana.
И тут случилось то, что в продовом государстве называют self-healing. На уровне control plane сработал автомеханизм: один из вьючных кубов (читай — нод) заметил, что голова (инстанс) не откликается. Поднялся тревожный флаг — NotReady, health check упал, readiness-проба схлопнулась.
Дальше дело техники: автоскейлер (Horizontal Pod Autoscaler, если быть точным) среагировал мгновенно. В облаке сработал шаблон: «replicas: 3» — стало «replicas: 2», значит, надо добить до трёх. Так из-за спины Змея тут же выросла новая голова.
Причём не просто так, а с последним снапшотом состояния, с необходимыми переменными окружения, токенами доступа, подключением к шине событий и TLS-сертификатом.
С точки зрения Горыныча будто ничего не произошло, а вот богатырь слегка приуныл. Он рассчитывал на лёгкую победу, но попал в high-availability environment, где за отказом следует перезапуск, а не трагедия.
▍ Тело — единая связанная инфраструктура
Головы — это не всё, настоящая мощь нашего Змея Горыныча в теле. Это та самая инфраструктура, что соединяет всё воедино: шина обмена сообщениями, CI/CD пайплайны, сетевые маршруты, IAM-политики, метрики и алерты.
Головы могут думать, но только тело знает, что делать с этими мыслями. Оно распределяет сигналы, следит за состоянием, реагирует на сбои. Оно понимает: если левая голова замолчала — может, её нужно перезапустить, а может, стоит переключить нагрузку, а может — просто подождать.
Тело — это не просто набор скриптов, это живой организм. В нём всё должно быть связано: мониторинг — с логами, алерты — с действиями, события — с автоматизацией.
Оно должно уметь различать сбой и панику, временную деградацию и настоящий отказ, а главное — не зависеть от одной головы.
Хороший Горыныч — это не три головы. Это одна устойчивая, наблюдаемая, управляемая система, в которой каждая часть знает свою роль, а всё вместе продолжает дышать даже тогда, когда мир горит, а в телеге лежит письмо «всё нормально, чиню».
▍ Сказка ложь, да в ней намёк…
Змей Горыныч — не враг, он — метафора. Умная, наглядная и подозрительно современная. И если вы хотите приручить такого зверя — вот несколько советов:
- Настройте Prometheus с Alertmanager на отдельной ноде, а не вместе с приложением. Когда всё горит — важно, чтобы кто-то это заметил.
- Проверяйте quorum после обновлений. Желательно автоматически, но все мы знаем, что в реальности — хотя бы скриптом.
- Документируйте роли компонентов. Пусть каждая голова знает, кто лидер, кто реплика, а кто просто греется в кэше.
- И главное: никогда не надейтесь на одну голову, даже если она кажется умной. Особенно — если кажется умной.
В финале — немного морали. Настоящие герои — это не богатыри, а сисадмины, потому что не всякий Горыныч страшен, если у тебя настроен мониторинг, а репликация надёжнее, чем волшебный клубок у Василисы — всегда выведет, куда надо, даже если лес горит.
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT ?

alienator
Если выкинуть Василис и богатырей, то статья сведется к такому:
Если еще короче: делайте хорошо, а плохо не делайте.