Search
Write a publication
Pull to refresh
VK
Building the Internet

Проблем стало меньше, а решаем мы их быстрее

Level of difficultyEasy
Reading time5 min
Views1.5K

Привет, Хабр! На связи Артём Камыш, руководитель платформенной команды 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 инцидент-бот, который создаёт под каждый инцидент отдельный чат и контролирует решение инцидента, при этом помогает находить и призывать ответственных, сопровождает инцидент до его закрытия на клиентов.

Ключевые принципы модуля:

  1. автоматически создаёт инциденты при сбоях тестов или просадке SLA;

  2. клиенты могут инициировать инцидент через обращение в поддержку;

  3. сотрудники могут инициировать инциденты через специальный чат;

  4. для каждого инцидента формируется отдельный чат, в который автоматически добавляется инцидент-бот и организует процесс;

  5. бот призывает дежурных, а при отсутствии реакции — их руководителей;

  6. после устранения проблем система автоматически генерирует отчёт;

  7. публичная страница Status Page позволяет клиентам оперативно получать информацию и снижает нагрузку на поддержку.

Модуль «Управление релизами»

На основе информации о релизах, развёртываниях и тестах мы внедрили автоматические проверки:

  • проверяем, что релиз прошёл все нужные стенды перед развёртыванием в эксплуатацию;

  • если тесты не пройдены — развёртывание блокируется;

  • в случае необходимости hot-fix развёртывание можно разблокировать вручную с комментарием;

  • появился удобный механизм code-freeze: можно полностью заморозить развёртывания на определённый период для целевого стенда.

Блокировки работают благодаря интеграции Timeline с системой, через которую происходит разворачивание на стендах. Timeline контролирует релизный цикл и автоматически блокирует при нарушении условий до момента исправления.

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

Что мы улучшили благодаря созданию и внедрению Timeline:

  • стандартизировали процессы между 20+ командами и 120+ проектами;

  • стабилизировали тестовые стенды;

  • увеличили стабильность производственной среды;

  • существенно сократили количество инцидентов;

  • ускорили время реагирования на сбои;

  • минимизировали время постинцидентного анализа;

  • снизили нагрузку на поддержку за счёт автоматизации и Status Page;

  • перевели коммуникации из Jira и почты в инцидентные чаты на основе мессенджера VK Team, что ускорило взаимодействие.

Timeline помог нам не только быстрее устранять сбои, но и организовать работу команд более прозрачно и предсказуемо. Мы продолжаем развивать систему и интегрировать её с другими внутренними инструментами.

Если у вас в компании похожие вызовы — возможно, наш опыт пригодится.

Tags:
Hubs:
+7
Comments4

Articles

Information

Website
vk.com
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия
Representative
Миша Берггрен