Всем привет! Меня зовут Макарий, я DevOps-инженер в команде кросс-платформенной инфраструктуры корпоративного супераппа VK Teams. Сегодня я расскажу, как мы применяем практики ChatOps в наших рабочих процессах.
ChatOps — модель организации работы и коммуникации внутри команды через общение, то есть через мессенджер. Такой подход объединяет разработчиков, DevOps-инженеров, QA-специалистов, инженеров поддержки, продуктовых менеджеров, аналитиков и других участников процесса в единую коммуникационную платформу. Я расскажу, как ChatOps помогает организовать работу команды: повышает производительность, ускоряет реагирование на инциденты, улучшает согласованность действий. Поделюсь успешными примерами внедрения принципов СhatOps на примере нашей команды VK Teams. Уверен, этот опыт откроет для ваc новые возможности, которые предоставляет ChatOps.
Кратко о ChatOps
Принципы ChatOps были сформулированы инженерами GitHub в 2013 году. За прошедшие десять лет этот подход получил широкое признание и нашел применение во многих организациях. Это говорит об актуальности и значимости принципов в современной разработке и управлении проектами.
ChatOps — это методология, в которой команды используют корпоративные мессенджеры и другие инструменты для обмена информацией, координации действий и автоматизации операций. Основные принципы ChatOps:
- централизация коммуникации;
- прозрачность операций ⟷ документирование и история;
- автоматизация операций;
- интеграция с инструментами и системами;
- быстрая обратная связь ⟷ коллективная работа, совместный вклад.
Некоторые прикладные примеры использования мессенджера:
- управление развертыванием приложений;
- вывод уведомлений и логов в специальный чат;
- управление задачами и проектами;
- автоматизация рутинных задач.
Успешная реализация ChatOps требует не только выбора подходящих инструментов, но и создания культуры, в которой команды готовы активно использовать принципы ChatOps и вкладываться в них.
Корпоративные мессенджеры и супераппы
Корпоративные мессенджеры являются защищенными коммуникационными платформами, разработанными специально для использования внутри организаций. Они обладают рядом функций, которые делают общение в команде эффективнее и безопаснее.
Корпоративный мессенджер в контексте ChatOps должен обладать следующими функциями:
- Чат и групповые чаты: обмен сообщениями в режиме реального времени.
- Форматирование: Markdown и HTML для более структурированных сообщений.
- Обмен файлами, документами и другими ресурсами.
- Настраиваемые роли: права доступа.
- История и поиск сообщений: обсуждения, принятые решения, результаты.
- Уведомления и упоминания с форматированием: меншен конкретных пользователей и групп.
- Оргструктура: возможность найти коллегу по департаменту.
- Интеграции: связь с другими привычными инструментами и сервисами.
- Боты: выполнение важных рутинных задач, автоматизация.
Однако часто обычного рабочего мессенджера недостаточно, и на помощь приходит суперапп. То есть приложение с расширенными возможностями интеграции, объединяющее различные инструменты на одной платформе.
Корпоративный суперапп в контексте ChatOps должен обладать следующими функциями:
- Управление задачами и проектами.
- Видеоконференции: возможность проведения созвонов, в том числе с внешними пользователями.
- Пользовательские интеграции: боты и мини-аппы.
- Цифровые ассистенты: предоставление информации, помощь в управлении.
Популярные решения для корпораций, объединяющие функции мессенджера и супераппа, — Slack, MS Teams и др. Каждое из них имеет свои особенности и уникальные функции, которые могут быть адаптированы под потребности конкретной организации.
Чтобы стать настоящим супераппом, сервис для корпоративного общения должен обеспечивать взаимодействие с привычными инструментами на одной платформе. Мини-аппы — дополнительные сервисы в виде разделов у пользователей — позволяют достичь минимального переключения контекста и улучшить производительность работы.
Например, Slack предлагает Slack Apps, позволяя разработчикам создавать собственные мини-аппы и интегрировать их в рабочие пространства Slack. Это расширяет функциональность платформы и позволяет настроить приложение под конкретные потребности команды.
MS Teams предлагает Developer Portal и Teams Toolkit, что позволяет разработчикам создавать приложения, которые взаимодействуют с чатами, каналами, вкладками и другими функциональными возможностями платформы.
Таким образом, корпоративные мессенджеры и супераппы предоставляют различные функции для эффективного внутриорганизационного общения и управления проектами. Выбор конкретного решения зависит от потребностей и предпочтений заказчика.
VK Teams
VK Teams является корпоративным супераппом, который предлагает широкий набор инструментов, реализующих методологию ChatOps.
Корпоративный мессенджер. Участники могут общаться через чаты, обсуждать конкретные сообщения в тредах, пересылать куски кода, обмениваться файлами и голосовыми сообщениями, меншенить друг друга и получать актуальную информацию о задачах, проектах. Подробнее о том, как это работает, читайте в отдельной статье.
Боты. Поддержка Bot API в VK Teams открывает широкие возможности для автоматизации операций. Боты могут выполнять рутинные задачи, отслеживать и отправлять уведомления о важных событиях, что позволяет командам сосредоточиться на более сложных и важных задачах и упрощает рабочий процесс.
Мини-аппы. В VK Teams можно создавать и добавлять свои мини-приложения под требования конкретного заказчика. Они доступны на всех платформах и интегрируются с другими сервисами — подробнее об этом в документации. Например, можно сделать мини-аппы для HR-команд.
Пример HR-мини-аппа «Отпуск»
Первыми мини-аппами стали сервисы, которые разрабатывает команда VK Teams и которые поставляются из коробки: «Задачи», «Календарь», «Почта», «Облако». Но сразу можно было наполнить VK Teams своими сервисами, характерными для каждой компании-клиента, например сервисами личного кабинета. За счет кросс-платформенности VK Teams интегрированный сервис становится доступен сразу на десктопе и мобильных платформах, а также в браузере.
Приложение VK Teams выступает в качестве браузера по отношению к мини-аппам. Интеграция мини-аппа состоит из этапов:
- подготовка веб-сервера,
- регистрация,
- публикация.
Для примера рассмотрим несколько мини-аппов.
Мини-апп «Календарь». Позволяет не покидать приложение для прямого взаимодействия с рабочим расписанием.
Мини-апп «Контакты». Позволяет найти коллег по командам для прямого контакта в VK Teams или добавления коллеги в групповой чат. Отражает состав и иерархию подразделений предприятия.
Мини-апп «Облако». Позволяет легко манипулировать файлами при взаимодействии с коллегами. Например, открыть «Облако» → выбрать файл → поделиться с коллегами. Или наоборот: открыть чат → выбрать файл из облака → поделиться с коллегами.
Таск-трекер «Задачи». Предоставляет инструменты для планирования, постановки, отслеживания и обсуждения задач прямо на одной платформе. Это способствует более эффективной координации работы и соблюдению сроков.
Видеозвонки. VK Teams поддерживает видеоконференции на 100 пользователей с возможностью подключения внешних участников. Это важный аспект ChatOps, позволяющий командам проводить совещания, обсуждать проблемы и принимать решения в режиме реального времени, способствуя оперативности и эффективности работы.
Цифровые ассистенты, чат-боты на основе ИИ — долгоиграющий тренд в современных бизнес-коммуникациях. Возможность добавить полноценного цифрового ассистента в VK Teams также позволяет централизовать коммуникацию и увеличить скорость обратной связи между командами разработки и, например, командами HR-специалистов. Мы используем ассистента #марусянаработе, который разработан на основе VK Assistant — диалоговой ИИ-платформы. Он понимает человеческую речь и переписку, может доставать информацию из корпоративных систем и обучается в процессе работы.
VK Teams поддерживает принципы ChatOps и предоставляет необходимые инструменты для их реализации. Сервис обеспечивает коммуникацию, автоматизацию задач и видеоконференции в рамках одной платформы, что позволяет внедрить ChatOps и повысить эффективность работы.
Трекеры задач
Важной частью коммуникационных платформ являются инструменты для управления задачами и координации работы — таск-трекеры. В контексте ChatOps платформы должны позволять интегрировать управление задачами прямо в рабочие чаты. Это дает командам единое место для уведомлений, обсуждений, принятия решений и выполнения задач, повышая эффективность и синхронизируя работу команды. Решения, которые мы рассмотрим далее, напрямую содействуют гибкому, прозрачному и автоматизированному современному рабочему процессу.
Jira ⟷ VK Teams
Интеграция и взаимодействие с Jira происходит с помощью Bot API и дополнительной настройки полей в самой инсталляции Jira. Для частных запросов можно реализовать свои небольшие решения. Также можно добавить «общего» бота с ответами на базовые запросы пользователей по взаимодействию с Jira. Примером такого универсального решения является использование Jira-бота. Подробнее о ботах в VK Teams расскажу в следующей главе.
Бот может уведомлять о любых изменениях в задаче, на которую вы подписаны. Для этого необходимо разрешить уведомления в личной карточке пользователя в Jira.
Бот позволяет создать задачу прямо через чат:
Окно создания доступно через приветствие, которое вызывает команды
Можно создать напоминания о конкретной задаче. Например, уведомление о необходимости вернуться к выполнению в определенную дату и время или о наступлении срока выполнения:
С помощью этой интеграции можно также:
- создать для конкретной задачи чат в VK Teams,
- создавать задачи в Jira из группового чата,
- подписать себя или групповой чат на обновления по определенному Jira-фильтру.
Все эти возможности повышают уровень ChatOps в корпоративном мессенджере, соответствуя принципам централизации коммуникации, интеграции с инструментами и системами, быстрой обратной связи и прозрачности операций.
Внутренний таск-трекер «Задачи» в VK Teams
Внутренний таск-трекер «Задачи» — удобный и универсальный помощник в планировании проектов. Этот раздел позволяет командам эффективно управлять задачами, координировать работу и отслеживать выполнение. Рассмотрим основные возможности раздела «Задачи» в контексте ChatOps.
Создание и редактирование. Пользователи могут быстро создавать новые задачи прямо из мессенджера и делиться ими со всей командой. Также доступно редактирование.
Просмотр и поиск. Члены команды могут просматривать задачи либо из раздела «Задачи», либо прямо из чата. Это обеспечивает простой доступ к информации и позволяет быстро находить нужные элементы.
Совместное использование. Возможность поделиться задачей позволяет командам эффективно взаимодействовать. Участники могут передавать задачи коллегам, устанавливать ответственных лиц и совместно работать над выполнением.
Уведомления о задачах. Помогают участникам команды быть в курсе актуальных задач и сроков их выполнения. Уведомления можно настроить для оповещения об изменениях, сроках и других важных событиях.
Фильтры, теги и приоритеты. Можно настроить фильтры для удобного просмотра задач, а также использовать теги и приоритеты для классификации и организации задач по важности и срочности.
Исполнение. Обеспечивает полный жизненный цикл выполнения задач. Исполнители могут получать уведомления, видеть бейджи в разделе «Задачи» и в обсуждениях (тредах), а также просматривать информацию о задачах в чате. Это обеспечивает прозрачность и своевременное выполнение.
Bot API в корпоративном мессенджере
Автоматизация операций возможна благодаря Bot API: готовые библиотеки позволяют каждому пользователю написать бот под свои задачи.
Bot API VK Teams
Чтобы создать бота, нужно постучаться к Metabot и сгенерировать токен, а затем наделить бота подходящими свойствами. Далее необходимо написать код самого бота. Это может быть как простая отправка сообщений (вызов bash-скрипта по расписанию), так и более сложные программы.
Сейчас пользователям доступны три библиотеки, опубликованные для VK Teams Bot API:
Боты располагаются в общем списке контактов и в списке чатов, если с ботом есть чат. Доступ к боту можно получить через поиск или ссылку на профиль.
Создатель бота — тот, кто его зарегистрировал. Если человек увольняется, бот продолжает свою работу. Изменить создателя можно через администратора окружения. Можно настроить особые права для ботов: возможность написать первым или создавать групповые чаты. В мобильных клиентах VK Teams есть раздел «Интересное». Он содержит список чатов и ботов для конкретной инсталляции.
Примеры наших корпоративных ботов
Мы активно используем Bot API в наших процессах и разработали несколько корпоративных ботов. Вот некоторые примеры:
- Regress-бот — собирает информацию по текущему дереву релиза в Jira и регулярно оповещает канал о прогрессе;
- GitLab-бот — позволяет выполнять различные операции с проектами в корпоративном GitLab;
- Build-бот — позволяет по нажатию кнопки запускать на TeamCity сборки в задачу;
- Monitoring-бот — регулярно проверяет работоспособность удаленных машин, таких как билд-агенты и слейвы тестов, и предоставляет отчеты о состоянии;
- Report-бот — создает задачи в Jira и прикрепляет к ним пересланные ему в личные сообщения файлы. Для определения к одной задаче нужно выбрать все необходимые файлы и текст и ответить на них с ключевым словом, на которое бот отреагирует;
- Jira-бот — позволяет выполнять различные операции с Jira-задачами через простой интерфейс в диалоге с ботом;
- Digest-бот — перед началом рабочего дня собирает актуальную информацию о проекте и отправляет в общий чат единое сообщение с полезными данными;
- Incident-бот и Info-бот — мониторят Jira-задачи по заданным фильтрам и проектам и при добавлении новой оповещают соответствующие чаты;
- Календарь-бот — заранее предупреждают о встречах и событиях.
Каждый может написать своего собственного бота, для этого у нас есть инструкция. Например, примитивный бот, который реагирует на команду «send_email» и пересылает по почте сообщение, на которое был дан ответ с использованием этого ключевого слова.
Код бота
import smtplib
import ssl
from bot.bot import Bot
from bot.handler import MessageHandler
# Конфигурация бота
bot = Bot(token='BOT_TOKEN',
name='BOT_NAME',
api_url_base='https://api.my-company.myteam.mail.ru/bot/v1/')
def send_email(to, subject, text):
message = f"""\
Subject: {subject}
To: {", ".join(to)}
{text}"""
port = 465
smtp_server = "smtp.mail.ru"
sender_email = "your.server@YOUR.MAIL"
receiver_email = ''
for user in to:
receiver_email += f"{user},"
ext_application_password = "YOUR_PASS"
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, ext_application_password)
server.sendmail(sender_email, to, message.encode("utf8"))
def on_message_event(bot, event):
raw_message = event.text.lower()
chat_id_to_reply = event.from_chat
if raw_message != 'send_email':
return
message = ""
msg_from = event.message_author
event_data = event.data
data_parts = event_data.get('parts', [])
for part in data_parts:
payload_message = part['payload'][‘message’]
part_msg_from = payload_message[‘from’][‘userId’]
reporters.append(part_msg_from)
message += f"{part_msg_from}:\n{payload_message['text']}\n\n"
if message:
send_email(to=["email.receiver1@mail.ru", "email.receiver2@mail.ru"],
subject=f"Важное сообщение от {msg_from}",
text=message)
else:
bot.send_text(chat_id=chat_id_to_reply,
text="Не получилось отправить")
# Добавление обработчика сообщений
bot.dispatcher.add_handler(MessageHandler(callback=on_message_event))
# Запуск бота
bot.start_polling()
Для запуска используйте команды:
pip3 install mailru-im-bot==0.0.20
python3 email_sender_bot.py
Вот готовые решения для расширения ботов VK Teams:
-
Async Bot API wrapper,
-
Notifications plugin for Jenkins CI,
-
Github-action с отправкой сообщений/файлов,
-
Alertmanager Bot,
-
Ruby wrapper for VK Teams Bot API,
-
Node.js Bot SDK for VK Teams,
-
OCI container scanner,
-
Bitrise step to send build to VK Teams,
-
php VK Teams bot API wrapper,
-
Laravel logging,
-
onlineconf-bot,
-
Reminder Bot.
Также можно быстро затянуть к себе уже готовые решения из сообщества или размножить свое решение на несколько платформ благодаря кросс-платформенному Open-Source-фреймворку OpsDroid. О нем я расскажу во второй части статьи. Там мы рассмотрим интересный вариант расширения функциональности ботов — напишем коннектор между OpsDroid и VK Teams, а также реализуем бота, аналогичного рассмотренному выше. Только теперь он будет работать одновременно в нескольких корпоративных мессенджерах.
Заключение
Мы рассмотрели практики ChatOps и возможности их внедрения с помощью корпоративного супераппа VK Teams. ChatOps — это концепция, которая объединяет команды в едином пространстве коммуникации. Позволяет автоматизировать и упростить процессы, улучшить координацию и повысить прозрачность работы.
Мы упомянули основные функциональные возможности корпоративных мессенджеров, Bot API и мини-аппы. Рассмотрели пример простейшего бота, который позволяет отправить сообщение из мессенджера на электронную почту.
Взаимодействие с таск-трекерами через чат с помощью ботов и мини-аппов отлично демонстрирует фундаментальную важность принципов ChatOps — прозрачность коммуникации и быструю обратную связь.
VK Teams предоставляет мощный инструментарий для внедрения практик ChatOps в процессы предприятия. Мини-аппы, Bot API, встроенный таск-трекер, широкие возможности интеграции с привычными инструментами — все это поможет решить множество прикладных задач, связанных с ChatOps. Внедрение этих практик позволит командам эффективно сотрудничать и повысит качество и скорость работы над проектами.
Во второй части статьи я расскажу про OpsDroid в контексте VK Teams Bot API.