Welford 알고리즘과 Deno KV를 활용한, 설정 없는 이상 감지 시스템 구축
이상 감지 시스템(Anomaly Detection System) 구축을 위해 Welford 알고리즘과 Deno KV를 활용하여, 별도의 설정 없이 이상 징후를 감지하고 알림을 전송함
시간 단위 버킷(Hourly Buckets)을 사용하여 이벤트 발생률의 변화를 감지하고, 총 카운트, 비율 변화, 사용자별 이상 징후 등 3가지 감지 모드를 제공함
Deno KV를 저장 계층으로 사용하여, 데이터베이스(Database) 없이 간단한 키-값(Key-Value) 저장 방식으로 구현하여, 유지보수(Maintenance) 편의성을 높임
오픈소스(Open Source)로 제공되어, 누구나 자유롭게 사용하고 기여할 수 있으며, 2 표준 편차(Standard Deviation)를 기준으로 이상 징후를 판단함
Welford 알고리즘을 활용한 통계적 이상 감지
본 시스템은 Welford 알고리즘(Welford's Algorithm)을 사용하여, 이벤트 스트림(Event Stream)의 평균과 분산을 온라인 방식으로 계산한다. 특히, 모든 데이터를 저장하지 않고도 단일 패스(Single Pass)로 통계 모델을 유지할 수 있다는 장점이 있다. 이를 통해, 시간 경과에 따른 이벤트 발생률의 변화를 감지하고, Z-점수(Z-score)를 기반으로 이상 징후를 식별한다. 이는 데이터의 정규성(Normality)을 가정하며, 2 표준 편차를 초과하는 값을 이상치로 간주한다.
Deno KV를 활용한 데이터 격리 아키텍처(Data Isolation Architecture)
Anomalisa는 데이터 격리 아키텍처(Data Isolation Architecture)를 위해 Deno KV를 사용하며, 이는 NoSQL 데이터베이스(NoSQL Database)를 사용하지 않고, 키-값(Key-Value) 쌍으로 데이터를 저장한다. 데이터는 시간 단위 버킷(Hourly Buckets)으로 집계되며, 각 이벤트는 총 카운트, 비율 변화, 사용자별 이상 징후 등 3가지 독립적인 검사를 거친다. 데이터 미저장 정책(Zero-Retention Policy)을 통해, 불필요한 데이터 보관을 최소화하고, TTL(Time-To-Live) 설정을 통해 자동 정리(Automatic Cleanup)를 지원한다.
3가지 이상 감지 모드와 사용자 경험
시스템은 총 카운트, 비율 변화, 사용자별 이상 징후 등 3가지 감지 모드를 제공하여, 다양한 이상 징후를 포착한다. 총 카운트(Total Count)는 시간당 이벤트 수를, 비율 변화(Percentage Spike)는 전체 이벤트 대비 특정 이벤트의 비율 변화를, 사용자별 이상 징후(Per-user Anomalies)는 사용자별 이벤트 발생 빈도를 감지한다. 이러한 다중 모드(Multi-mode) 접근 방식은 시스템의 이상 감지 능력(Anomaly Detection Capability)을 향상시키고, 다양한 유형의 이상 징후를 효과적으로 식별한다.
트레이드오프(Trade-offs) 및 성능 고려 사항
본 시스템은 설정의 간편함을 위해, 2 표준 편차(Standard Deviation)를 고정된 임계값으로 사용한다. 이는 데이터가 정규 분포(Normal Distribution)를 따른다는 가정 하에, 약 5%의 오탐(False Positive) 발생 가능성을 내포한다. 또한, 최소 3개의 데이터 포인트를 수집한 후에야 이상 감지를 시작하므로, 초기 학습 기간(Learning Period)이 필요하다. 이러한 트레이드오프(Trade-offs)는 시스템의 단순성을 유지하면서, 실용적인 이상 감지 기능을 제공하기 위한 설계 결정이다.