- BrainTools - https://www.braintools.ru -
![[Bus Factor] Почему ваша незаменимость — это архитектурная уязвимость (SPOF), а не повод для гордости - 1 [Bus Factor] Почему ваша незаменимость — это архитектурная уязвимость (SPOF), а не повод для гордости - 1](https://www.braintools.ru/images/2026/02/16/Bus-Factor-pochemu-vasha-nezamenimost-eto-arhitekturnaya-uyazvimost-SPOF-a-ne-povod-dlya-gordosti.png)
Понедельник, 09:30. Вы открываете Slack, Telegram и Jira. Там уже горит. В личке пять непрочитанных: «Посмотри, тут прод упал», «Ты единственный знаешь, как работает этот костыль», «Без твоего аппрува не можем покатить релиз».
В этот момент в лимбической системе [1] происходит мощный выброс дофамина. Включается режим Атланта. «Без меня тут всё рухнет. Я несущая стена этого карточного домика. Я избранный».
Мысленно надевается плащ Супермена (поверх офисной рубашки или мятой футболки), расправляются плечи, берется ведро кофе и начинается операция «Спасение проекта». К вечеру ресурс батареи на нуле, глаз дергается, но есть глубокое удовлетворение. ЧСВ почесано, ценность для человечества доказана.
Спойлер: Я сам жил в этом режиме несколько лет. И сейчас, глядя на логи, могу сказать честно. С точки зрения [2] системной архитектуры это не героизм. Это классический паттерн SPOF (Single Point of Failure). Единая точка отказа. Инженер в такой позиции совсем не Супермен. Он тот самый старый сервер в углу, на который боятся дышать, потому что он держится на изоленте и честном слове.
Сегодня поговорим о Bus Factor. Почему быть «священной коровой» проекта означает тупиковую ветвь эволюции для Сеньора. И как перестать быть инженером, которого боятся отправить в отпуск.
Для тех, кто прогуливал пары по риск-менеджменту, напомню определение.
Bus Factor (Фактор автобуса) — количество участников команды, которых должен сбить автобус (ну, или более гуманно: которые должны выиграть в лотерею и уехать дауншифтить на Бали), чтобы проект остановился.
Если в проекте есть модуль, который знает только условный Вася, и без Васи его нельзя ни задеплоить, ни пофиксить, то Bus Factor этого модуля равен 1. В мире HighLoad систем это называется Critical Vulnerability.
Представьте дата-центр. В центре стоит один-единственный сервер, через который идет весь трафик.
Балансировщика нет (все запросы летят в него).
Репликации нет (Master есть, Slaves отсутствуют).
Документации нет (админ, который его настраивал, ушел в монастырь в 2017-м).
Если этот сервер перегреется, зависнет или просто решит уйти в Maintenance Mode, ляжет весь регион. Любой джун скажет: «Кто это проектировал? Это же легаси». Но парадокс [3] в том, что именно такую архитектуру мы часто строим из собственной карьеры. Мы замыкаем на себя процессы, знания и доступы, становясь узким бутылочным горлышком всей системы.
Я наблюдал этот баг в десятках команд и, каюсь, сам был его носителем. Корень проблемы лежит не в плоскости хард-скиллов, а в психологии бэкенда. Bus Factor = 1 обычно создается по трем причинам.
Где-то глубоко внутри часто сидит джуниорский страх [4]: «Если я передам эти знания, напишу подробную документацию и все автоматизирую, то зачем я тогда нужен? Меня же заменят на кого-то дешевле!»
Включается механизм защиты, который я называю Job Safety by Obfuscation:
Код пишется так, чтобы в нем черт ногу сломил без автора.
Документация игнорируется, потому что «код самодокументируемый» (спойлер: нет, через полгода вы сами его не поймете).
Ключевые решения замыкаются на себя.
Это классический симптом «Синдрома Самозванца», о нем мы говорили вот в этой статье [5]. Кажется, что это гарантия занятости. На самом деле это гарантия Рабства. Такого специалиста невозможно повысить. Менеджмент смотрит на него и думает: «Он крутой, но если мы сделаем его CTO, кто будет поддерживать этот кусок легаси на Perl? А сидеть на двух стульях — завалить и стратегию, и поддержку». Это карьерный Deadlock.
Тушить пожары весело. Серьезно. Когда всё горит, а ты приходишь и за 5 минут вносишь правку в проде, ты получаешь мгновенный Feedback Loop. Тебе говорят: «Красавчик! Спас!».
А писать документацию или настраивать автотесты, чтобы пожаров не было, работа скучная и незаметная. Никто не придет и не скажет: «Спасибо, что сервер сегодня работал штатно». Поэтому подсознательно создается хаос, чтобы потом его героически преодолевать. Мы превращаемся в пожарных, которые сами же и поджигают, чтобы было чем заняться.
Убеждение «Хочешь сделать хорошо, сделай сам» стало девизом плохого архитектора. Пытаясь контролировать все потоки (код джунов, дизайны, фронтенд, инфраструктуру), мозг [6] уходит в Троттлинг. Человеческий процессор одноядерный, и попытка запустить на нем многозадачность [7] ведет только к перегреву и потере контекста.
Частенько эта кривая архитектура тащится домой. Если провести аудит семьи как IT-проекта, результаты часто пугают.
Сценарий: один человек выступает единственным сис-админом с правами Root, на котором держится весь домашний «прод». Все семейные подписки — от VPN и стримингов до облачных хранилищ — висят на одной-единственной карте. Стоит банку её заблокировать или там просто кончатся средства, как вся цифровая жизнь домочадцев встает на паузу. Добавьте сюда переусложненную инфраструктуру, где включение мультика требует не нажатия кнопки на пульте, а ввода пароля, который знает только папа (потому что «так безопаснее»). А коды двухфакторной аутентификации (2FA) от критических сервисов приходят на один-единственный физический телефон. Ваш.
Аудит безопасности: Если завтра главный админ становится недоступен (больница, срочная командировка без связи), система «Семья» сохраняет работоспособность? Сможет ли «Second Node» (партнер) войти в облако? Оплатить интернет, если отвалился автоплатеж? Разобраться с доступами?
Если ответ «Нет, начнется паника и тьма», то это Legacy-монолит. Это не забота о близких. Это Vendor Lock-in (жесткая привязка к вендору). Семья оказывается в уязвимом положении, полностью зависимая от аптайма одного сервера.
![[Bus Factor] Почему ваша незаменимость — это архитектурная уязвимость (SPOF), а не повод для гордости - 2 [Bus Factor] Почему ваша незаменимость — это архитектурная уязвимость (SPOF), а не повод для гордости - 2](https://www.braintools.ru/images/2026/02/16/Bus-Factor-pochemu-vasha-nezamenimost-eto-arhitekturnaya-uyazvimost-SPOF-a-ne-povod-dlya-gordosti-2.png)
Быть незаменимым экономически невыгодно, хотя бы по этим двум причинам.
Отпуск Шрёдингера. Вы вроде бы на пляже, но ноутбук открыт. Семья грустно пьет коктейли, а вы пытаетесь поймать Wi-Fi, потому что «Сервер упал, а Миша не знает, какую кнопку нажать». Это не отпуск. Это удаленка с плохим интернетом и песком в клавиатуре. Система с Bus Factor = 1 физически не отпускает администратора.
Выгорание (Kernel Panic). Работа без бэкапов делает любой сбой вашей личной виной. Любой простой становится вашей ответственностью. Это прямая дорога к истощению ресурса, о чем мы писали в этой статье [8].
Переход от роли «Узкого места» к роли Архитектора требует смены парадигмы. Вместо «Я всё сделаю» внедряются принципы High Availability.
Главный враг Bus Factor зовется устной традицией («Спроси у Миши, он знает»). Задача архитектора сделать так, чтобы Миша был не нужен для рутины.
Знания выгружаются на внешний носитель:
Рабочий контур: README.md [9] в корне проекта с заголовком «ЧТО ДЕЛАТЬ, ЕСЛИ ВСЁ УПАЛО». Описывается не поэма о коде, а алгоритм восстановления.
Домашний контур: «Семейная Wiki». Расшаренная заметка в телефоне. Пароли, счета, инструкции. Назовите её «План Б, если папа улетел на Марс». Документация работает как способ клонировать свой интеллект [10], чтобы он работал, пока вы спите.
У Netflix есть утилита Chaos Monkey, которая рандомно роняет сервера для проверки устойчивости системы. Полезно иногда становиться такой «обезьянкой» для своего отдела и семьи.
Практика называется Maintenance Window: Объявляется плановое окно недоступности. «В среду меня не будет. Вообще. Телефон выключен». И телефон действительно выключается.
Сначала будет паника. Вам будут писать в телеграм, звонить в рельсу. А потом… система адаптируется.
Джун нагуглит решение.
Жена найдет квитанцию.
Роутер перезагрузят выдергиванием из розетки. Всё, что сломалось и не починилось, считайте Техническим долгом. Его нужно зафиксировать и закрыть (написать скрипт, выдать доступы).
Когда джуниор спрашивает «Как это сделать?», соблазн сделать самому за 5 минут велик (объяснять придется 20 минут). Системное решение состоит в том, чтобы инвестировать эти 20 минут. Пусть он сделает криво. Пусть придется переделывать. Но в следующий раз запрос будет обработан автоматически.
Это настройка Load Balancer: трафик перенаправляется на другую ноду. В этой статье [11] мы обсуждали, как важно уметь говорить «Нет». Говорить «Нет» рутине означает говорить «Да» построению системы.
В IT существуют три уровня зрелости специалиста:
Junior: «Я не знаю, как это работает, и мне страшно».
Middle/Senior (Герой): «Я единственный знаю, как это работает! Без меня всё умрет!»
Architect: «Я построил систему так, что она работает без меня. Я могу исчезнуть, а процесс не остановится».
Истинное мастерство заключается в том, чтобы быть ненужным в операционке. Создать самоподдерживающуюся структуру. Только так приобретается самое ценное качество инженера. Суверенитет. Свобода выбирать интересные задачи, а не разгребать легаси. Свобода управлять своим временем. Свобода жить.
Посмотрите на свой отдел. Посмотрите на свою семью. Какой у вас Bus Factor? Если он равен единице, то это не повод для гордости. Это время для рефакторинга.
P.S. Я продолжаю собирать библиотеку инженерных подходов к жизни в своем Telegram-канале [12]. Заходите, если любите системный подход.
Автор: Systems_Engineer
Источник [13]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/25738
URLs in this post:
[1] лимбической системе: http://www.braintools.ru/article/6090
[2] зрения: http://www.braintools.ru/article/6238
[3] парадокс: http://www.braintools.ru/article/8221
[4] страх: http://www.braintools.ru/article/6134
[5] этой статье: https://habr.com/ru/articles/975464/
[6] мозг: http://www.braintools.ru/parts-of-the-brain
[7] многозадачность: http://www.braintools.ru/article/3673
[8] этой статье: https://habr.com/ru/articles/988694/
[9] README.md: http://README.md
[10] интеллект: http://www.braintools.ru/article/7605
[11] этой статье: https://habr.com/ru/articles/973362/
[12] Telegram-канале: https://t.me/+dr0Kw1tQjWkwOGNi
[13] Источник: https://habr.com/ru/articles/996612/?utm_source=habrahabr&utm_medium=rss&utm_campaign=996612
Нажмите здесь для печати.