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