Хроники Облачного княжества: как я приручал монолит‑дракона
- воскресенье, 12 апреля 2026 г. в 00:00:02
Часть 1.
Когда я шёл в DevOps, я думал, что буду приручать серверы. Оказалось — людей, процессы и древнего дракона по имени Легаси.
Я пришёл в Башню релизов ровно в девять ноль‑ноль — как человек, который ещё верит в расписание.
Башня стояла на холме, укрытая облаками и корпоративными ценностями. Над входом висел герб: три кольца, перечёркнутые молнией, и девиз, вырезанный на граните так, чтобы его невозможно было отрефакторить:
«Не деплой в пятницу».
Внутри меня встретила девушка в мантии, похожей на худи с капюшоном, и сказала:
— Добро пожаловать в Облачное княжество. Я Марфа ПиЭмова, бард‑продакт. Тебе в отдел магии стабильности. Подпиши вот тут.
Она протянула мне свиток. На свитке было написано мелким шрифтом: «Подписывая, вы соглашаетесь с тем, что все инциденты произошли по причине человеческого фактора, кроме случаев, когда человеческий фактор — вы».
— Это шутка? — спросил я.
— Это юридическая магия, — улыбнулась Марфа. — Шутка будет на ретро.
Пока я подписывал свитки кровью из пальца (на самом деле — стилусом), мимо прошёл мужчина с лицом человека, который видел слишком много релизов и слишком мало сна. Он держал в руках щит из задач и копьё из ответственности.
— Сэр Тимлид Артур, — представился он. — Ты новый?
— Да.
— Тогда запомни первое правило Башни релизов: если всё тихо — это не значит, что всё хорошо. Это значит, что мониторинг молчит из вежливости.
Я нервно рассмеялся.
— Я думал, здесь всё в облаках, автоматически, — попытался я пошутить.
— Автоматически у нас только «срочно», — ответил Артур и ушёл, оставив после себя запах кофе и незакрытых тикетов.
Марфа повела меня дальше, по коридорам, полным табличек с загадочными надписями: «Согласование», «Зона ответственности», «Согласование согласования», «Кухня (не трогать прод)».
Самая большая дверь вела в зал, где стоял круг из стульев. В центре кругом лежала доска. На доске было написано:
«СТЕНДАП».
— Это… — начал я.
— Ритуал, — сказала Марфа. — Ежедневный. Мы встаём и говорим правду. Иногда коротко. Иногда — чтобы не расплакаться.
В круг вошли люди. Один был в плаще, полностью покрытом стикерами «FIXME». Другой нёс за собой тележку со свитками схем, похожих на карты древних континентов. Третий пришёл с огромным котлом, из которого пахло SQL.
— Это Гаврила, гном‑ДБА, — шепнула Марфа. — Он хранитель состояния. Не обижай его. Он может поднять базу из мёртвых, но потом неделю будет ворчать и просить «не трогать прод».
Гаврила посмотрел на меня, как на человека, который однажды скажет «а давайте миграцию прямо сейчас».
— Здорово, — сказал он. — Я Гаврила. Если начнёшь говорить «просто добавим индекс» — я начну говорить «просто переедем в другую компанию».
Я понял, что попал в правильное место.
Стендап начался.
— Вчера я делал задачу «ускорить», — сказал плащ со стикерами. — Сегодня продолжу ускорять. Блокеры: реальность.
— Вчера я писал тесты, — сказала девушка с глазами человека, который видел всё. — Сегодня буду чинить тесты. Блокеры: разработчики.
— Вчера мы планировали релиз, — сказала Марфа и взмахнула руками так, словно дирижировала оркестром. — Сегодня мы релизим. Блокеры: нет.
Я автоматически посмотрел на Артура. Артур ничего не сказал, но его взгляд говорил: «Блокеры: да».
Потом слово дали мне.
— Я… — начал я. — Я новый. Я планировал сегодня настроить наблюдаемость: метрики, алерты, логирование…
В зале повисла пауза, как будто я сказал «давайте жить дружно».
— Отлично, — сказал Артур. — У нас как раз сегодня деплой. Познакомишься с системой… в боевых условиях.
Я почувствовал, как внутренний оптимизм начинает писать заявление на увольнение.
Деплой выглядел как церемония призыва. В комнате релизов стоял алтарь — монитор, на котором светились руны пайплайна. Рядом лежал гримуар с надписью «runbook (черновик)». В углу сидел Некромант Легаси — архитектор древних времён. Он не поднимал головы.
— Некромант, — шепнул Артур, — не любит, когда трогают его дракона. Но дракон уже дышит state‑ом на нас. Так что выбора нет.
— Какого дракона? — спросил я.
Артур показал на диаграмму на стене. Она была похожа на карту подземелий: один огромный блок, из которого тянулись тонкие трубки к множеству маленьких блоков.
— Это монолит‑дракон, — сказал Артур. — Когда‑то он был один. Потом вокруг него построили микросервисы, чтобы «всё было как у взрослых». Теперь дракон один, но у него много маленьких родственников, которые вечно спорят за общий state. И все они хотят кушать.
Марфа хлопнула в ладоши.
— Ну что, команда! Релизим! Главное — без паники. Паника должна быть структурированной, по Kanban.
Пайплайн зажёгся зелёным. Я увидел шаги:
сборка;
тесты;
деплой на stage;
«ручное подтверждение»;
деплой на prod.
Слово «ручное» мне почему‑то не понравилось.
Сборка прошла. Тесты… тоже прошли. Я даже начал верить. Пайплайн дошёл до ручного подтверждения, и Марфа торжественно сказала:
— Ну что, подтверждаем. У нас дедлайн.
— Подожди, — сказал Артур. — Давайте хотя бы посмотрим последние изменения. Новое правило: «сначала читаем, потом жмём».
— У нас времени нет, — ответила Марфа. — У нас же agile.
В этот момент монитор мигнул, словно кто‑то за стеной отключил электричество, и из пайплайна вылезло сообщение красными буквами:
«PROD: permission denied».
— Это шутка? — спросила Марфа.
— Нет, — сказал Артур. — Это безопасность.
В комнату вошла Инквизиторша. На плече у неё висела связка печатей, а на лице — выражение человека, который видел слишком много «мы быстро».
— Кто начал ритуал без согласования? — спросила она.
— Мы… — начал было Марфа.
— «Мы» — это всегда «никто», — отрезала Инквизиторша. — Согласования нет. Печати нет. А значит, портал в прод не откроется.
Я осторожно поднял руку:
— А можно посмотреть, какие именно права нужны? Может, роль не привязана…
Инквизиторша посмотрела на меня так, как смотрят на новичка, который ещё не знает, что слово «можно» в компании — это отдельный проект.
— Можно. Но сначала — обучение. Потом — заявка. Потом — согласование. Потом — ещё одно согласование, чтобы согласовать согласование. Потом вы получите доступ. Если не передумаете.
Марфа медленно обернулась к Артуру:
— Мы не успеем.
— Мы не успеем, — согласился Артур. — Поэтому мы сделаем по‑взрослому: откатим решение. И, возможно, наконец напишем нормальный runbook.
Некромант Легаси впервые поднял голову.
— Я же говорил, — сказал он тихо. — Дракона не будят.
В этот момент пейджер‑амулет на поясе Артура зазвенел. Звук был похож на крик чайника, которого забыли выключить в проде.
— Алерт, — сказал Артур. — Идём.
Я ещё не знал, что это только начало.
Я шёл за ними по коридорам Башни релизов и думал: странно. Я пришёл на работу, чтобы писать инфраструктуру как код. А оказался в месте, где код — это самое простое. Труднее всего здесь было писать… реальность.
И всё же, где‑то внутри меня загорелся маленький огонёк профессионального любопытства.
Если у них «permission denied» — значит, у них есть permissions. Если у них есть permissions — значит, можно навести порядок.
А если порядок невозможен… что ж. Тогда можно хотя бы написать об этом историю.
Продолжение следует...