28 июн. 2025 г.·5 мин чтения

Обещания по доступности для маленьких команд, которые реально выполнить

Обещания по доступности кажутся простыми, пока маленькой команде не приходится отвечать ночью. Узнайте, как подстроить часы поддержки, alert-ы и восстановление под реальные возможности.

Обещания по доступности для маленьких команд, которые реально выполнить

Почему это больно для маленьких команд

Клиенты слышат «99,9% доступности» или «поддержка 24/7» и представляют, что кто-то всю ночь следит за alert-ами, публикует обновления за считаные минуты и чинит проблемы раньше, чем большинство пользователей их заметит. В маленькой компании реальность обычно куда скромнее: founder с уведомлениями на телефоне, инженер, который уехал на выходные, и почта поддержки, которая дождётся утра.

Этот разрыв быстро подрывает доверие. Когда сервис падает в 2 ночи, клиентов не интересует ваш график смен. Им важно, что продукт не работает и никто не отвечает. Даже короткий сбой кажется хуже, если вместо быстрого обновления пользователи получают тишину.

Для команды тоже есть цена. Ночи перестают быть выходными. Выходные превращаются в время «на всякий случай». Люди берут ноутбуки на ужин и проверяют alert-ы перед сном. Так несколько месяцев подряд — и качество решений падает. Уставшие люди пропускают очевидные исправления. А ещё они создают новые ошибки, пока пытаются убрать первую.

Это не столько проблема хостинга, сколько проблема людей и процесса. Хорошая инфраструктура не поможет, если alert-ы приходят одному человеку, который их пропускает во сне. Чистые системы не спасут, если никто не знает, кто ведёт инцидент, кто общается с клиентами и когда делать rollback.

Маленькие команды чаще всего теряют доверие не в дата-центре, а на передачах задач. Кто-то обещает «мы всегда на связи», а у команды нет дежурства, нет записанных шагов восстановления и нет чётких часов поддержки. Потом один сбой вскрывает всё сразу.

Обычно разумнее обещать меньше. Если вы отвечаете в будни с 8 до 18, так и скажите. Если на срочные проблемы отвечаете в течение часа в эти часы, а вне их — утром следующего дня, тоже скажите. Клиенты спокойно работают с ограничениями, если ограничения понятны. Их раздражает обещание, которое звучит намного больше, чем команда, стоящая за ним.

Что на самом деле входит в обещание по доступности

Большинство обещаний по доступности ломаются потому, что в одну расплывчатую фразу запихивают несколько разных обязательств. «У нас 99,9% доступности и быстрая поддержка» звучит успокаивающе, но почти ничего не говорит клиенту, когда что-то ломается поздно вечером.

Полезное обещание состоит из четырёх частей:

  • целевой уровень доступности
  • часы поддержки
  • время ответа
  • целевое время восстановления

Это не одно и то же, и маленькие команды часто смешивают эти вещи.

Время ответа — это когда человек уже увидел проблему и ответил. Время восстановления — это когда продукт снова работает или у команды есть безопасный обходной путь. Ответ за 15 минут всё ещё может привести к часам простоя, если база данных повреждена, релиз нужно откатить или единственный человек с доступом спит.

Клиентам также нужно понимать, кто общается во время инцидента. Один человек может чинить проблему, а другой — публиковать короткие обновления. В очень маленькой команде это может делать один и тот же человек, но правило всё равно должно быть, например: «публиковать обновление каждые 30 минут, пока сервис не восстановится».

Когда эти части размыты, каждый сбой превращается в спор. Клиент ожидает одного. Команда имеет в виду другое. Напряжение растёт, потому что никто не договорился, что именно означает «быстро» или «на связи».

Базовое правило простое: маленькая команда может держать системы стабильными, но только если обещание соответствует людям, часам и привычкам, которые стоят за ним.

Начните с той команды, которая у вас уже есть

Ваше обещание должно начинаться с людей, а не с софта.

Прежде чем писать хоть одну цифру, разберите, кто что делает во время production-инцидента. Кто-то должен заметить alert, кто-то — подтвердить, что это реальная проблема, кто-то — перезапустить сервис или сделать rollback, кто-то — обновить клиентов, и кто-то — одобрить рискованное исправление. Один человек может закрывать несколько ролей. Это нормально. Но это всё равно задаёт жёсткий предел тому, что вы можете обещать.

Потом посмотрите на часы, когда никто не смотрит alert-ы. Будьте честны насчёт них. Если команда спит с полуночи до 7 утра и никто не носит телефон для production-инцидентов, у вас нет реакции 24/7. Dashboard не считается покрытием, если на него никто не смотрит.

Здесь многие стартапы обманывают сами себя. Они покупают мониторинг, подключают несколько alert-ов и думают, что теперь могут обещать быстрое восстановление в любое время суток. Это не так, если никто не может проснуться, войти в систему и действовать.

Ещё нужно проверить, где у вас один-единственный узел зависимости. Возможно, только founder понимает платёжный поток. Может быть, только один инженер имеет доступ к базе данных. Или только один человек знает, как отменить последний деплой. Если восстановление зависит от одного человека, то и целевое время восстановления зависит от его доступности.

Спросите ещё один прямой вопрос: может ли команда вернуть сервис без привлечения лишних людей? Если нет, обещание уже слишком широкое. Обещание, которое зависит от того, ответит ли подрядчик ночью или уйдёт ли founder с ужина, рано или поздно провалится.

Чаще всего именно это первым делом наводит порядок опытный Fractional CTO. Задача не в том, чтобы обещание звучало впечатляюще. Задача — разложить покрытие alert-ов, доступы, runbook-и и зоны ответственности так, чтобы команда могла восстанавливаться теми людьми, которые у неё уже есть.

Задайте обещание простыми цифрами

Многие команды делают наоборот. Сначала выбирают красивый процент доступности, а потом понимают, что в воскресенье в 2 ночи никто не может ответить на alert.

Начните с часов поддержки. Если ваша команда следит за production с 8 утра до 6 вечера в будни, поставьте это первым. Более скромное обещание, которое соответствует реальным привычкам, вызывает больше доверия, чем блестящая цифра, которая рассыпается при первом же ночном сбое.

Для маленькой команды реалистичное обещание сервиса может звучать так:

  • Поддержка работает с понедельника по пятницу с 8:00 до 18:00.
  • Сбои, затрагивающие ключевые функции, получают ответ в течение 30 минут в эти часы.
  • Обычные вопросы получают ответ в течение 4 рабочих часов.
  • Серьёзные инциденты обычно восстанавливаются в течение 4 часов в часы поддержки.
  • Небольшие проблемы устраняются или обходятся до следующего рабочего дня.

Это говорит клиенту куда больше, чем просто «99,95% доступности».

Важно и формулирование. Убирайте расплывчатые фразы вроде «мы стараемся решать проблемы как можно быстрее». Это ничего не значит. Скажите всё простым языком:

«Мы следим за сервисом в рабочее время. Если сбой останавливает ключевые функции, мы отвечаем в течение 30 минут и стараемся восстановить сервис в течение 4 часов в это время. По менее срочным вопросам отвечаем в течение 4 рабочих часов и обычно решаем их до следующего рабочего дня.»

Это легко просмотреть. И это честно. Здесь нет ничего, что зависит от удачи, одного героического инженера или идеального поведения подрядчика.

Для маленьких команд хорошее правило простое: убирайте всё, что держится на героизме. Оставляйте только то обещание, которое можно выполнить в обычную неделю, обычными людьми, после тяжёлой ночи.

Стройте обещание на реальных инцидентах

Сделайте SLA честным
Напишите часы поддержки и сроки ответа так, чтобы клиенты им доверяли.

Не стройте политику на оптимизме. Стройте её на последних 10–20 инцидентах.

По каждому из них запишите четыре времени: когда команда заметила проблему, когда кто-то впервые ответил, когда сервис вернулся и когда пользователи получили обновление. Эта история показывает, что ваша команда уже делает под давлением. И часто очень быстро вскрывает закономерность. Может быть, исправления идут быстро, но обновления задерживаются на час. А может, люди отвечают быстро, но слишком долго ищут причину.

Практичный процесс выглядит так:

  1. Разбейте инциденты по серьёзности. Полный отказ, сбой оплаты и мелкий баг в админке не должны запускать один и тот же сценарий.
  2. Найдите времена, которые команда уже показывает в обычные недели. Если серьёзные проблемы обычно замечаются в течение 15 минут в рабочее время, это и есть реальная отправная точка.
  3. Превратите эти привычки в цифры для клиента. Обещайте время ответа, время обновлений и сроки восстановления, которые соответствуют вашему графику.
  4. Проверьте политику в течение месяца. Отслеживайте каждое несоответствие, а потом корректируйте либо обещание, либо процесс.

Первую версию лучше сделать скучной. Обычно это хороший знак.

Уровни серьёзности помогают больше, чем кажется многим командам. Если никто не может войти в систему или у всех не проходят платежи — будите людей. Если ошибся один внутренний отчёт, он может подождать до рабочего времени. Это сохраняет спокойствие в команде и даёт клиентам более честное понимание того, что происходит дальше.

Если нужен грубый ориентир, обещайте только то, что команда может выполнять большую часть времени, не теряя сон. А потом пересмотрите промахи через 30 дней. Надёжность маленькой команды растёт, когда обещание соответствует реальным привычкам восстановления, а не когда команда гонится за цифрой, которая красиво смотрелась на странице продаж.

Реалистичный пример для команды из четырёх человек

Представьте небольшую SaaS-компанию: один founder и три инженера. Founder ведёт продажи, общается с клиентами и принимает продуктовые решения. Инженеры делают фичи, чинят баги и держат production в рабочем состоянии.

Такая команда не должна притворяться, что у неё есть поддержка круглосуточно. Её нет. Лучше настроить поддержку в рабочее время для обычных вопросов и оставлять after hours-оповещения только для настоящих сбоев.

Реальная политика может выглядеть так:

  • Поддержка работает с понедельника по пятницу с 9:00 до 18:00 в основном часовом поясе компании.
  • After hours-оповещения используются только для событий, которые мешают многим пользователям войти в систему, оплатить сервис или пользоваться ключевой функцией.
  • Если вход не работает у многих пользователей, команда подтверждает проблему в течение 30 минут и старается восстановить доступ в течение 2 часов.
  • Если весь сервис медленно отвечает, команда исследует проблему в часы поддержки и старается дать исправление или обходной путь в течение 1 рабочего дня.
  • Если не проходят все платежи, команда считает это сбоем. Если проблема с оплатой только у одного аккаунта, её решают в часы поддержки.

Это разделение важно. Странный счёт, о котором один клиент написал в 23:30, не требует ночного page. А массовый отказ входа требует.

Формулировка для клиентов может оставаться простой: «На общие запросы поддержки мы отвечаем в рабочее время. Вне этого времени мы отвечаем на сбои сервиса, которые блокируют доступ для нескольких пользователей или останавливают ключевые функции, такие как вход и платежи.»

Это не звучит как уход от ответа. Это звучит честно. Клиенты понимают, когда получат ответ, а команда понимает, что действительно заслуживает телефонного оповещения.

Ошибки, которые делают ночи длинными

Постройте after hours-реакцию
Решите, какие инциденты будят людей ночью, а какие могут подождать.

Самая большая ошибка — копировать формулировки поддержки у намного более крупной компании. Большие компании могут обещать круглосуточное покрытие, потому что у них есть смены, запасные люди и отдельные команды incident response. У стартапа из четырёх человек обычно нет ничего из этого.

Другая частая ошибка — слишком рано гнаться за цифрами. Обещание 99,99% доступности оставляет очень мало места для простоя в месяц. Если клиенты всё ещё первыми замечают сбои, или один человек носит телефон каждую ночь, такая цифра — фантазия.

Команды ещё и путают время первого ответа и время восстановления. Это разные обещания. «Мы отвечаем в течение 30 минут» звучит сильно, но клиентов в основном волнует, когда продукт снова работает. Быстрый ответ приятен. Рабочая корзина — лучше.

Обновления — ещё одно слабое место. Если за коммуникацию никто не отвечает, пользователи получают тишину именно тогда, когда им нужна ясность. Один человек копается в логах, другой думает, что кто-то уже отправил сообщение, и в итоге никто ничего не публикует. Назначьте обновления конкретному человеку.

Последняя ловушка — строить восстановление вокруг одного эксперта. Это работает, пока этот человек не спит, не летит в самолёте и не выгорел. Потом мелкая проблема превращается в трёхчасовой сбой, потому что никто больше не знает порядок перезапуска или шаги отката.

Если что-то из этого звучит знакомо, притормозите, прежде чем публиковать более сильное обещание.

Перед публикацией

Получите поддержку Fractional CTO
Привлеките опытную техническую помощь для найма, процесса восстановления и решений по инфраструктуре.

Проверьте всё на реальных инцидентах, а не на идеальных планах.

Убедитесь, что серьёзный сбой вызывает alert за считаные минуты. Если сначала пишут клиенты, ваш таймер реакции уже сломан.

Убедитесь, что как минимум два человека могут восстановить сервис, не дожидаясь, пока проснётся один эксперт. Общий доступ и записанные шаги важнее красивой формулировки.

Опишите часы поддержки простыми словами. Клиент должен понимать, когда команда начинает читать сообщения, когда это покрытие заканчивается и что происходит вне этих часов.

Назначьте одного человека отвечать за обновления во время инцидента. Молчание делает даже короткий сбой длиннее.

А потом сравните публичное обещание с последними несколькими инцидентами. Если на странице написано одно, а в журнале инцидентов — другое, исправьте что-то одно из этого.

Последняя проверка немного смиряет, но очень полезна. Посмотрите на последние три инцидента и запишите, когда команда заметила проблему, когда сервис вернулся и когда клиенты получили первое обновление. Эти цифры говорят правду быстрее, чем любой маркетинговый текст.

Что делать дальше

Поставьте текущее обещание в календарь и пересматривайте его каждый квартал. И ещё раз — после любого сбоя, который превратился в долгий, тяжёлый день. Такие моменты быстро показывают пробелы. Если люди теряли передачи задач, искали старые заметки или угадывали шаги восстановления, обещание опережает команду.

Не ужесточайте обещание только потому, что оно звучит лучше. Ужесточайте его только после того, как команда снова и снова выполняет текущий уровень и в обычной работе, и на тренировках.

Обычно команды улучшаются в одном и том же порядке. Сначала настраивают alert-ы так, чтобы нужный человек быстро узнавал о проблеме. Потом пишут короткие runbook-и для самых частых сбоев. Затем тестируют бэкапы и шаги восстановления, а не только сами backup-задачи. После этого закрывают очевидные пробелы по вечерам, выходным и праздникам.

Лучшие формулировки не улучшат обещания по доступности. Улучшат привычки. Одна страница runbook-а может сэкономить 20 минут при неудачном деплое. Проверенное восстановление может сэкономить часы, если ломается база данных.

Если разрыв всё ещё кажется сложным, поможет внешний разбор. Oleg Sotnikov, чья работа описана на oleg.is, консультирует стартапы и небольшие компании по архитектуре продукта, инфраструктуре и AI first engineering workflows. Такой разбор часто как раз и нужен, чтобы превратить расплывчатое обещание поддержки в то, которое маленькая команда действительно может выполнить.

Клиенты обычно доверяют меньшему обещанию, которое вы выполняете. Большему — перестают доверять в первый же раз, когда вы его нарушаете.

Часто задаваемые вопросы

Что маленькой команде обещать вместо поддержки 24/7?

Начните с реальных часов поддержки и отдельно укажите, какие сбои будят человека ночью. Если срочный ответ нужен только при проблемах со входом, оплатой или полной недоступностью сервиса, скажите об этом прямо. Клиенты обычно нормально относятся к ограничениям, если они понятны.

Достаточно ли одного процента доступности?

Нет. Сам по себе процент доступности не объясняет, кто ответит, когда придёт первый ответ и сколько может занять восстановление. Добавьте часы поддержки, время первого ответа, сроки обновлений и целевое время восстановления.

В чём разница между временем ответа и временем восстановления?

Время ответа начинается, когда кто-то из команды увидел проблему и ответил. Время восстановления заканчивается, когда пользователи снова могут работать или у них есть безопасный обходной путь. Быстрый ответ полезен, но пользователям важнее, когда сервис снова работает.

Как понять, что наше обещание реалистично?

Посмотрите на последние 10–20 инцидентов и запишите, когда команда заметила проблему, когда кто-то ответил, когда пользователи снова смогли работать и когда вы отправили первое обновление. Эти цифры показывают, что команда на самом деле делает под давлением.

Нужно ли будить человека на каждый alert?

Не каждый alert заслуживает звонка среди ночи. Оставьте after hours-оповещения только для сбоев, которые блокируют многих пользователей или останавливают ключевые функции, а мелкие баги перенесите на рабочее время. Так команда будет высыпаться, а срочный канал останется полезным.

Как часто нужно обновлять клиентов во время инцидента?

Задайте одно простое правило и следуйте ему всегда. Для многих маленьких команд хорошо работает обновление каждые 30 минут во время серьёзного сбоя. Даже короткая заметка вызывает больше доверия, чем молчание.

Почему сбои так тяжело переживаются маленькими командами?

Большинство длинных ночей начинаются не только из-за серверов, а из-за пробелов в людях и процессах. У одного человека есть доступ, никто не отвечает за обновления для клиентов или у команды не записаны шаги отката. Сначала закройте эти пробелы, а потом обещайте более жёсткие сроки.

Нужны ли нам runbook-и, если система маленькая?

Даже простому сервису нужны письменные шаги для самых частых поломок. Короткий runbook для отката, порядка перезапуска и восстановления экономит время, когда люди устали или нервничают. Он также помогает второму человеку подключиться, если обычный эксперт недоступен.

Когда нам стоит сделать обещание по поддержке строже?

Ужесточайте обещание только после того, как команда снова и снова выполняет текущий уровень в реальных инцидентах и тренировках. Если люди всё ещё теряют передачи задач, ищут старые заметки или ночью зависят от одного founder, пока оставьте более скромное обещание.

Может ли Fractional CTO помочь нам сделать обещание по доступности лучше?

Да. Если публичное обещание не совпадает с тем, как вы реально обрабатываете инциденты, внешний разбор быстро это выровняет. Fractional CTO вроде Oleg Sotnikov может проверить покрытие alert-ов, доступы, runbook-и и зоны ответственности, чтобы команда выполняла то, что обещает.