Архитектура дня
Как жить с РС без постнагрузочного истощения
Введение: Баг не в коде, баг в батарейке
В веб-разработке есть железное правило: если писать код месяц втайне от всех, а потом одним махом залить его на живой сервер, проект упадет. Конфликты версий, непредсказуемые ошибки, часы на поиск причин.
Жизнь с рассеянным склерозом работает по тем же законам. Попытка за один день сделать то, что здоровый человек делает за неделю — съездить в МФЦ, убраться и встретиться с друзьями — это деплой непроверенного мега-обновления. Внутренний сервер падает в жесточайшую усталость.
Чтобы жить стабильно, приходится перенести привычки QA-инженера в собственную квартиру. Так появляется фреймворк CI/CD — Continuous Integration / Continuous Delivery (Непрерывная интеграция / Непрерывная доставка).
Continuous Integration (CI): Микрокоммиты вместо подвигов
В программировании Continuous Integration означает, что разработчики не копят код неделями, а вносят маленькие кусочки изменений постоянно. Каждая правка тут же проверяется автоматическими тестами. Если тест «красный» — ошибку чинят немедленно, пока она маленькая и не потянула за собой всю систему.
В быту с рассеянным склерозом этот принцип — единственный способ избежать жесткого «постнагрузочного истощения». Наша главная задача — не дать «батарейке» упасть в красную зону.
Как это работает на практике:
Дробление задач до абсурда
Забудьте про списки в духе «Генеральная уборка». Это монолитные коммиты весом в сто мегабайт — они обрушат любую систему. Ваша задача — писать код бытовыми атомами.
Иногда самый эффективный коммит выглядит так: вы встаете с кресла, чтобы пойти на кухню за водой, и по пути просто забираете лежащую на столе кружку или фантик, чтобы выбросить их по дороге. Вам всё равно идти в ту сторону. Это не «уборка», это оптимизация маршрута. Затраты энергии — 2 единицы, прирост чистоты в системе — заметный.
Не «убраться в комнате», а «протереть одну дверцу шкафа». Не «приготовить ужин», а «достать из морозилки одну котлету». Успех? Отлично, этот коммит интегрирован в систему. Можно закрывать «задачу» и возвращаться в кресло».
Автотесты безопасности
Перед выходом из дома всегда запускается базовый набор тестов. Это занимает 30 секунд, но экономит часы паники на улице:
Ключи (наличие + брелок-искатель, если зрение подводит).
Телефон (заряд выше 50%).
Вода и лекарство.
Банковская карта.
Если хотя бы один тест провален — выход блокируется. Никакого ручного поиска ключей по карманам дрожащими руками в темном подъезде. Баг найден на этапе разработки, а не в продакшене.
Управление зависимостями
Нельзя ставить две тяжелые задачи, требующие ходьбы или стояния, подряд. Поход в магазин интегрируется в расписание только после двух часов полного покоя. Иначе возникнет конфликт библиотек: усталость от магазина наложится на усталость от готовки, и система уйдет в «синий экран». Между сложными задачами всегда должен быть патч восстановления — горизонтальное положение.
Главный принцип CI:
Мы не копим усталость. Мы чиним мелкие баги сразу. Если вы чувствуете, что спина начинает ныть от мытья одной тарелки — это не каприз. Это красный флаг от вашего «компилятора». Оставьте тарелку в раковине. Закройте задачу. Сохраните энергию для следующего безопасного релиза.
Continuous Delivery (CD): План отката для внешнего мира
Если Continuous Integration (CI) — это то, как мы моем одну кружку, не пытаясь отмыть всю кухню, то Continuous Delivery (CD) — это то, как мы выносим эту кружку из дома. В IT это процесс выпуска готового продукта. В жизни — это ваша доставка себя в магазин, в МФЦ или в гости.
Главная ловушка РС — это «героический деплой». Вы чувствуете себя на 70%, выходите из дома, проходите 100 метров, и внезапно спастика скручивает ногу или накрывает туман в голове. Ресурса на обратный путь нет. Система упала в чистом поле.
Чтобы этого не происходило, мы применяем принципы CD.
1. Канареечные релизы (Canary Deployments)
В IT новую версию программы сначала дают 5% пользователей. Если у них всё хорошо — версию выпускают на всех. Прежде чем ехать на важное мероприятие на другой конец города (релиз версии 2.0), сделайте тестовый прогон. Сходите в магазин у дома (релиз версии 0.5-alpha).
Если на походе в «Пятерочку» координация поплыла, а ноги стали ватными — это красный флаг.
Действие:
Основной релиз (поездка через весь город) автоматически отменяется или переносится. Вы не заставляете себя «преодолевать». Вы просто читаете логи ошибок своего тела.
2. Feature Flags (Флаги функций)
У вас всегда должны быть заранее прописанные «выключатели». Это условия, при которых задача отменяется без чувства вины.
Флаг 1: «Если на улице гололед — прогулка отключена».
Флаг 2: «Если в МФЦ очередь больше трех человек — ухожу через 10 минут».
Флаг 3: «Если голос собеседника в трубке вызывает раздражение (сенсорная перегрузка) — звонок переводится в текст или сбрасывается».
Это не слабость. Это штатная работа системы безопасности. Вы нажимаете кнопку, и тяжелая функция отключается, чтобы не перегрузить процессор.
3. Обязательный Rollback (План отката)
Любой выезд из дома — это подключение к нестабильному стороннему API (внешнему миру). Вы не контролируете код этого мира, но можете подготовить свои «обертки» и «костыляторы».
1. Резервирование каналов связи (Транспорт)
Один номер такси — это единая точка отказа. Если у агрегатора сбой или в вашем районе нет машин бизнес-класса, вы оказываетесь в ловушке.
Правило:
В телефоне должны быть сохранены как минимум два независимых номера (например, федеральная сеть и местная диспетчерская, или Яндекс и Maxim).Финансовая гигиена:
На карте всегда должна лежать зарезервированная сумма, которую вы не имеете права тратить на продукты. Это бюджет на «аварийный деплой» — поездку на Комфорт-плюс, чтобы ехать лежа и без тряски. Если друзья предлагают «подвезти» — это приятный бонус, но не часть архитектуры. В архитектуру закладывается только то, что зависит только от вас.
2. Разведка среды (Pre-deployment Check)
Несколько месяцев назад у вас уже случилась неприятная ситуация — теперь это не просто досадный случай, а баг-репорт. Перед любым новым местом (поликлиника, офис, МФЦ) — 5 минут в интернете или один звонок:
«Скажите, у вас от парковки до входа есть прорезиненные дорожки? После дождя плитка становится как лед».
«Поручни в туалете установлены с обеих сторон или только с одной?»
«У вас автоматические двери или тяжелые стеклянные, которые нужно тянуть на себя?»
Это не капризы. Это проверка системных требований перед установкой софта. Если здание не поддерживает «протокол доступности», релиз (визит) отменяется или переносится в онлайн.
3. Тайминг и буфер
Закладывайте на любую задачу в два раза больше времени. Если вам кажется, что дойти до остановки — это 5 минут, в логике РС это 15 минут (с учетом остановок, чтобы унять тремор или переждать головокружение). Спешка — это форсированный режим процессора, который ведет к мгновенному перегреву.
Главный принцип CD:
С внешним миром не воюют — его тестируют. Мы выпускаем себя в него маленькими релизами и всегда держим наготове оплаченный план отката: знаем, где аварийный выход, и имеем ресурс, чтобы им воспользоваться. Успешный деплой — это не когда вы выполнили все дела в списке, а когда вы вернулись домой, и системе не потребовалась реанимация.
В CI вы решили, что можете пойти в магазин (протерли полку, накопили 15% энергии).
В CD вы решаете, как именно вы пойдете (проверили погоду — включили флаг «без гололеда», вызвали такси — подготовили план отката).
Заключение: Главный рефакторинг
Continuous Everything: право на паузу
В разработке есть понятие «технический долг». Это когда вы пишете код быстро и грязно, чтобы успеть к дедлайну, зная, что потом придется всё переделывать. В жизни с хроническим заболеванием жизнь в режиме «героического деплоя» — это бесконечное накопление такого долга. Рано или поздно проценты по нему станут выше, чем ваши физические возможности.
Принципы CI/CD учат нас другому. Они легализуют несовершенство.
Героизм заканчивается там, где начинается постнагрузочное истощение. Настоящая инженерная сила — не в том, чтобы заставить себя доделать начатое вопреки сигналам тела, а в том, чтобы вовремя нажать кнопку «Откатить изменения».
Оставить кружку в раковине до завтра — это не лень. Это грамотный rollback к стабильной версии себя. Поставить доставку продуктов на паузу — это не слабость. Это освобождение оперативной памяти для более важных задач.
Ваш главный KPI — не объем сделанного за день. Ваш главный KPI — качество завтрашнего утра. Если для того, чтобы проснуться бодрым, сегодня нужно было просто сидеть в кресле и смотреть в окно — значит, этот релиз прошел успешно.

















