Часть 1: Как один термин в лекции зажег пламя расследования.
Настоящее, глубокое понимание приходит не от заучивания терминов, а от их осмысления.
Моя история — именно об этом.
О том, как одно слово, брошенное лектором, заставило меня усомниться, начать копать и в итоге обнаружить целый пласт фундаментальных знаний об отказоустойчивости систем.
Продолжая углубляться в изучение архитектуры распределенных систем, я изучал раздел, посвященный управлению репликами, а точнее эластичности (Elasticity).
Лектор рассказывал о динамическом управлении репликами: как система добавляет экземпляры сервиса при росте нагрузки (Scale-Out) и убирает их при спаде (Scale-In).
И вот настал ключевой момент. Объясняя опасности наивной реализации Scale-Out, лектор упомянул анти-паттерн “Dogpile”. Когда контроллер вынужден создавать новые реплики в ответ на возрастающую нагрузку или отказ одного из сервисов, эти новые реплики начинают получать трафик, который еще не в состоянии обработать (не пройдена инициализация, не прогреты кэши) и в итоге отвечают ошибками (502/503).
В ответ на это контроллер не может придумать ничего лучше, как создать еще больше реплик. Количество реплик растет как снежный ком, а производительность не увеличивается.
Как это происходит?
Деградация одной из реплик нашего сервиса;
Перераспределение (ребалансировка) нагрузки на оставшиеся реплики;
Перегрузка оставшихся “здоровых” реплик;
Контроллер (например, Autoscaler) видит превышение порогов на одной из реплик (например, CPU > 80%) и принимает решение о горизонтальном масштабировании (Scale Out) — добавлении новых реплик;
Новые реплики запускаются, но им нужно время на инициализацию.
Однако Load Balancer, получив от Service Discovery их адреса, немедленно обрушивает на них всю отложенную нагрузку (Преждевременная маршрутизация трафика).
“Холодные” сервисы не справляются, “умирают” или уходят в таймаут.Autoscaler видит, что нагрузка на старые сервисы не спала (ведь новые не заработали), и решает создать еще больше реплик.
Что осталось за кадром?
Все вновь созданные реплики стартуют одновременно и в первую миллисекунду своей жизни обращаются к серверу конфигурации за настройками, а затем — к базе данных, чтобы установить соединения и "прогреть" кэши.
Вместо того чтобы помочь справиться с отложенными запросами, они создают дополнительную нагрузку на БД, которая парализует ключевые части инфраструктуры.
Этот эффект называется Dogpile.Но это не точно.
Термин не показался мне метким и интуитивно понятным, поэтому я обратился к переводчику. Dog pile дословно переводится как собачья куча. Интересно, очень интересно.
Тот случай, когда дословный перевод не всегда лучший. Какие-то неприятные коннотации вызывает у меня термин "собачья куча". Что значит слово куча? Это куча из собак или куча, которую оставила собака? Вопросы. Вопросы требуют ответа.
Чтобы на них ответить, нужно копнуть глубже. Изначально это означает вполне конкретное действие, часто из детских игр или американского футбола: когда один человек падает, а остальные в шутку или в порыве празднования прыгают на него сверху, образуя живую кучу.

Ключевой образ здесь — это "pile" (куча, нагромождение). Это не просто группа, а именно хаотичное, неорганизованное наваливание друг на друга в одной точке.
Это дословное описание того, что происходит в Dogpile Effect — один ресурс "падает", а все запросы наваливаются на него сверху.
Ба! Да это же наша куча-мала!
«Куча-мала» — это идеальный, семантически точный и культурно адаптированный перевод для Dogpile. Это всё та же детская игра, в которой один человек падает, а все остальные наваливаются на него сверху, образуя хаотичную живую гору.
"Куча-мала» моментально вызывает образ детской возни и хаоса, но не имеет отталкивающих ассоциаций, в отличие от «собачьей кучи».
Отлично! Но что, если в мире IT у него есть какое-то другое, свое определение.
Чтобы закрепить материал, я решил обратиться к своему AI-помощнику с просьбой углубиться в тему, опираясь на материалы из книги Майкла Нейгарда "Release It!".
И тут-то все и стало интересным.
В своем развернутом ответе AI-ассистент уверенно заявил: «Лектор говорит о классическом анти-паттерне, известном как “Несущееся стадо” (Thundering Herd)».
В моей голове щелкнуло. Я столкнулся с противоречием. Лектор сказал Dogpile. AI-ассистент, претендующий на академическую точность, поправил его на Thundering Herd.
Что это было? Простой случай синонимов? Или два разных, хоть и похожих, анти-паттерна? Может, лектор использовал более современный или разговорный термин, а Thundering Herd — это что-то из старых учебников по операционным системам?
Я понял, что не успокоюсь, пока не докопаюсь до истины.
Мое небольшое IT-расследование началось. Продолжение следует...