요즘 AI와 각종 자동화 도구가 확산되면서, Amplitude 이벤트를 수집하다 보면 bot traffic이 눈에 띄게 증가하고 있다.
문제는 이러한 bot 요청까지 Amplitude 이벤트로 그대로 로깅되면서 다음과 같은 불편함이 발생한다는 점이다.
- 실제 사용자 행동과 bot 이벤트가 섞여 데이터 신뢰도가 떨어진다
- 분석 과정에서 불필요한 필터링 작업이 늘어난다
- 무엇보다도 의미 없는 이벤트가 쌓이면서 quota를 낭비하게 된다
그래서 이번 글에서는 Amplitude를 사용할 때 bot traffic을 어떻게 차단할 수 있는지에 대해 정리해보려고 한다.
1. Amplitude Data Blocking 기능 활용하기
Amplitude에서는 기본적으로 Block Bot Traffic 기능을 제공한다.
이 기능을 활용하면 특정 조건에 해당하는 이벤트를 수집 단계에서 아예 차단할 수 있다.
✔️ Bot Traffic Block filter란?
- Amplitude의 Bot Traffic Block Filter는 주로 User-Agent 정보를 기반으로 bot이나 crawler로 판단되는 트래픽을 식별하고, 해당 이벤트를 Amplitude에 저장하지 않도록 차단하는 기능이다.
- 내부적으로는 IAB / ABC International Spiders and Bots List를 기준으로 User-Agent를 검사해 bot 여부를 판단한다.
설정만으로 손쉽게 적용할 수 있다는 점은 장점이지만, 실제로 적용해보니 이 방식만으로는 모든 bot 트래픽을 걸러내기에는 한계가 있었다.
특히 IAB/ABC Bot List의 범위가 생각보다 제한적이라, 일부 자동화 트래픽이나 AI 기반 요청은 여전히 이벤트로 수집되는 경우가 있었다.
2. is_bot 라이브러리 사용하기
좀 더 정교하게 bot을 구분하고 싶다면, 애플리케이션 레벨에서 bot 여부를 판별한 뒤 Amplitude 이벤트 자체를 보내지 않는 방식을 고려해볼 수 있다.
이때 많이 사용되는 방법이 is_bot 라이브러리를 활용하는 것이다.
is_bot 라이브러리란?
is_bot 라이브러리는 요청에 포함된 User-Agent를 분석해 해당 요청이 bot인지 여부를 판별해주는 라이브러리다.
Amplitude와 함께 사용하는 방법
전체 흐름은 단순하다.
- 서버 또는 클라이언트에서 요청을 수신한다
is_bot라이브러리를 이용해 bot 여부를 판별한다- bot으로 판단되면 Amplitude 이벤트를 전송하지 않는다
- 일반 사용자 요청만 이벤트로 로깅한다
마무리
Amplitude에서 bot traffic을 방치하면 데이터 신뢰도와 비용, 두 가지 모두에 악영향을 미치기 쉽다.
bot traffic이 점점 늘어나는 요즘, 이벤트 관리 역시 한 단계 더 신경 써야 할 시점이다.
