
Привет, Хабр! На связи Артём Камыш, руководитель платформенной команды VK Cloud. Сегодня расскажу о том, как мы сделали систему, которая помогла:
уменьшить количество инцидентов;
сократить время их устранения;
ускорить постинцидентный анализ;
стандартизировать процессы разработки для 120+ проектов.
Эта статья будет полезна техническим директорам и руководителям разработки, командам поддержки, релиз-менеджерам и инцидент-менеджерам, да и в целом всем, кто связан с эксплуатацией IT-систем.
Почему мы задумали эту систему
В VK Cloud работают более 20 команд и эксплуатируются более 120 проектов. Мы столкнулись с типичными для масштабных систем проблемами:
отсутствие стандартизации процессов между командами;
нестабильность тестовых сред, и в связи с этим — уменьшение стабильности производственной среды;
отсутствие прозрачности по релизам и инцидентам;
сложности с быстрым реагированием на инциденты;
сложности с анализом причин сбоев.
Нужно было найти централизованное решение для мониторинга процессов и быстрого реагирования.
Что такое Timeline
Мы разработали систему Timeline — платформу для мониторинга событий разработки и эксплуатации. А на основе этой платформы реализовали ряд связанных модулей. Подробности про платформу и каждый из модулей описаны ниже.
В этой статье я верхнеуровнево рассказал о построении такой системы, так как на данный момент конкретная реализация закрыта, используется и доступна только внутри VK.
Интерфейс платформы выглядит как дашборд, где видны:
команды и их проекты;
сервисы и связанные с ними репозитории;
лента событий: релизы, развёртывания, тесты, инциденты, техработы;
фильтры по окружению, команде и так далее.

Каждое событие отображается на временной шкале и принадлежит конкретной команде или проекту. У каждого типа события свой цвет, есть фильтры и возможность «провалиться» в детали каждого события.
Особенности:
мультитенантность: каждый бизнес-юнит может работать в изолированном пространстве;
гибкие настройки: через панель управления можно создать структуры команд, назначить роли, настроить окружения;
фильтрация событий позволяет быстро находить нужную информацию.
Какие события мы отслеживаем
В Timeline фиксируются ключевые события жизненного цикла продукта:
Событие | Цвет | Описание |
Релизы | Салатовый | Система автоматически собирает список изменений. Доступна интеграция через API или GitLab-хуки. |
Развёртывания | Зелёный | Показывают, куда и как прошло развёртывание. Фиксируются как успешные, так и неудачные попытки. Доступна интеграция через API или GitLab-хуки. |
Тесты | Серый | Отображаются тестовые сценарии, время выполнения и результат. Доступна интеграция через API или через Allure-отчёты. |
Инциденты | Красный | Автоматически создаются при сбоях тестов или падении SLA. Можно заводить вручную, например, по обращению клиентов. Есть разграничение на публичные и приватные инциденты. Система автоматически формирует отчёты с цепочкой всех действий для ускорения постинцидентного анализа. Отображается как внутри Timeline, так и на странице Status Page. Доступна интеграция с личным кабинетом пользователя и с Telegram для оповещения клиентов. |
Техработы | Фиолетовый | Публикуются заранее, чтобы предупредить команды и клиентов о снижении доступности. Отображаются как внутри Timeline, так и на странице Status Page. Доступна интеграция с личным кабинетом пользователя и с Telegram для оповещения клиентов. |
Эпизоды | Розовый | Изменения в сервисах в реальном времени (А/Б-тесты, изменения конфигурации). |
Периоды | Отображение новостей и введение ограничений (codefreeze). |
Схема всех поддерживаемых событий:

Все события можно создавать вручную или автоматически через API. Если используется GitLab и Allure, то настройка минимальна.
Модуль «Status Page»
Первым этапом мы сделали публичный модуль системы Timeline, который позволяет:
прозрачно информировать клиентов о текущем состоянии сервисов;
публиковать инциденты, техработы и плановые уведомления;
снижать нагрузку на поддержку за счёт информирования клиентов.
Модуль имеет интеграцию с Telegram для оперативного оповещения и возможность интеграции со стороны личного кабинета продукта, для отображения уведомлений от инцидентов и техработ.
Внешние пользователи видят только публичные события, приватные инциденты остаются внутри компании.
Модуль «Дежурства»
После того, как мы сделали систему сбора и отображения событий, следующим этапом стала автоматизация дежурств. Сделали модуль, который позволяет создавать расписания:
задавать набор дежурных;
указывать периоды ротации;
связывать с командой и проектом.
Модуль по итогу:
отслеживает и отображает текущих дежурных;
автоматически формирует отчёты, при этом учитывает выходные, праздники, ночные смены;
может автоматически готовить данные для премирования;
интегрирован в интерфейс Timeline и в корпоративный мессенджер VK Team.
Интеграция с VK Team позволяет вызвать дежурного. Узнать, кто сейчас на смене, можно через добавление бота дежурств в чат и вызов команды /duty
.
Модуль «Управление инцидентами»
Автоматизирует ряд активностей в рамках инцидента и постинцидентного разбора. Центральным элементом модуля является специальный VK Team инцидент-бот, который создаёт под каждый инцидент отдельный чат и контролирует решение инцидента, при этом помогает находить и призывать ответственных, сопровождает инцидент до его закрытия на клиентов.
Ключевые принципы модуля:
автоматически создаёт инциденты при сбоях тестов или просадке SLA;
клиенты могут инициировать инцидент через обращение в поддержку;
сотрудники могут инициировать инциденты через специальный чат;
для каждого инцидента формируется отдельный чат, в который автоматически добавляется инцидент-бот и организует процесс;
бот призывает дежурных, а при отсутствии реакции — их руководителей;
после устранения проблем система автоматически генерирует отчёт;
публичная страница Status Page позволяет клиентам оперативно получать информацию и снижает нагрузку на поддержку.
Модуль «Управление релизами»
На основе информации о релизах, развёртываниях и тестах мы внедрили автоматические проверки:
проверяем, что релиз прошёл все нужные стенды перед развёртыванием в эксплуатацию;
если тесты не пройдены — развёртывание блокируется;
в случае необходимости hot-fix развёртывание можно разблокировать вручную с комментарием;
появился удобный механизм code-freeze: можно полностью заморозить развёртывания на определённый период для целевого стенда.
Блокировки работают благодаря интеграции Timeline с системой, через которую происходит разворачивание на стендах. Timeline контролирует релизный цикл и автоматически блокирует при нарушении условий до момента исправления.
Это позволяет стабилизировать стенды, выработать единый подход и процесс тестирования для всех команд, и гарантированно его соблюдать.

Что мы улучшили благодаря созданию и внедрению Timeline:
стандартизировали процессы между 20+ командами и 120+ проектами;
стабилизировали тестовые стенды;
увеличили стабильность производственной среды;
существенно сократили количество инцидентов;
ускорили время реагирования на сбои;
минимизировали время постинцидентного анализа;
снизили нагрузку на поддержку за счёт автоматизации и Status Page;
перевели коммуникации из Jira и почты в инцидентные чаты на основе мессенджера VK Team, что ускорило взаимодействие.
Timeline помог нам не только быстрее устранять сбои, но и организовать работу команд более прозрачно и предсказуемо. Мы продолжаем развивать систему и интегрировать её с другими внутренними инструментами.
Если у вас в компании похожие вызовы — возможно, наш опыт пригодится.