Ответ
Вебхук — это механизм обратного вызова (callback) через HTTP, который позволяет одному сервису автоматически отправлять данные другому при наступлении определённого события. В отличие от традиционного API-опроса (polling), где клиент периодически запрашивает данные, вебхук инициируется сервером-источником события.
Как это работает в DevOps-практике:
- Конфигурация: Вы регистрируете публичный URL вашего сервиса (например, CI/CD-сервера) в системе-источнике (например, GitHub, Docker Hub, мониторинге).
- Событие: При наступлении события (новый коммит, успешная сборка образа, срабатывание алерта) система-источник отправляет HTTP POST-запрос с данными о событии (payload) на ваш URL.
- Обработка: Ваш сервис принимает запрос, проверяет его подлинность (часто через секретный ключ или подпись в заголовках) и запускает соответствующий процесс.
Пример использования для автоматизации 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) для разработки.
- Надёжность: Необходима обработка случаев, когда ваш сервис недоступен (системы-источники часто имеют политики повтора).
- Безопасность: Обязательна проверка подписи запроса для предотвращения подделки.