Что такое вебхук (Webhook)?

«Что такое вебхук (Webhook)?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Вебхук — это механизм обратного вызова (callback) через HTTP, который позволяет одному сервису автоматически отправлять данные другому при наступлении определённого события. В отличие от традиционного API-опроса (polling), где клиент периодически запрашивает данные, вебхук инициируется сервером-источником события.

Как это работает в DevOps-практике:

  1. Конфигурация: Вы регистрируете публичный URL вашего сервиса (например, CI/CD-сервера) в системе-источнике (например, GitHub, Docker Hub, мониторинге).
  2. Событие: При наступлении события (новый коммит, успешная сборка образа, срабатывание алерта) система-источник отправляет HTTP POST-запрос с данными о событии (payload) на ваш URL.
  3. Обработка: Ваш сервис принимает запрос, проверяет его подлинность (часто через секретный ключ или подпись в заголовках) и запускает соответствующий процесс.

Пример использования для автоматизации CI/CD: При пуше в репозиторий GitHub вебхук триггерит запуск пайплайна в Jenkins.

Конфигурация вебхука в GitHub:

# Пример payload URL и событий
Payload URL: https://jenkins.your-company.com/github-webhook/
Content type: application/json
Secret: your-shared-secret-token
Which events?:
  - Just the push event.

Плюсы:

  • Мгновенная реакция: Нет задержки на опрос.
  • Эффективность: Экономит ресурсы, так как не генерирует пустые запросы.

Минусы и решения:

  • Публичный эндпоинт: Требует настройки сети (NAT, брандмауэр) или использования туннелей (ngrok) для разработки.
  • Надёжность: Необходима обработка случаев, когда ваш сервис недоступен (системы-источники часто имеют политики повтора).
  • Безопасность: Обязательна проверка подписи запроса для предотвращения подделки.