EVA Scope: 대규모 CCTV AI 운영을 위한 Observability
대규모 CCTV AI 운영 환경에서 EVA의 안정성과 효율성은 하나의 지표로 판단하기 어렵습니다. 수십 개의 EVA와 수백~수천 대의 카메라가 운영되면, 각 프레임은 카메라에서 유입된 이후 App 내부적으로 여러 처리 단계를 거칩니다. 운영 중인 카메라나 EVA가 많지 않을 때는 괜찮지만, 운영 규모가 커질수록 모든 프레임이 계획한 경로대로 처리되고 있는지 확인하기 어려워집니다.
이때 중요한 것은 단순히 모든 프레임이 처리되었는지를 확인하는 것만이 아닙니다. 어느 처리 단계에 리소스가 집중되고 있는지, 반대로 활용되지 못하고 있는 리소스는 어디에 있는지, 특정 카메라나 Connection에 처리가 편중되고 있는지를 파악해야 합니다.
EVA Scope는 EVA에서 생성되는 Frame Journey 데이터를 바탕으로 AI 파이프라인 전체의 처리 흐름을 관측합니다. 이를 통해 병목, 지연, 유휴, 처리 편차를 종합적으로 분석하고, 제한된 운영 환경에서 EVA가 더 안정적이고 효율적으로 동작할 수 있도록 개선 방향을 판단하는 데 필요한 근거를 제공합니다.
이번 글에서는 대규모 CCTV AI 운영 환경에서 프레임 처리 상태를 관측하기 위해 설계한 EVA Scope의 구조와 주요 기능을 소개합니다.
1. EVA Scope 한눈에 보기

수많은 Connection의 상태와 Risk Score를 한 화면에서 확인하고, 문제가 있는 대상을 우선적으로 분석할 수 있습니다.
Connections List에서는 다음과 같은 정보를 Connection 단위로 확인할 수 있습니다.
- Connection별 정상·주의·경고 상태
- 최신 Risk Score
- Bottleneck·Idle·Imbalance·Error 지수
- 최근 시간대별 상태 추이
- 전체 프레임 처리량
- 마지막 데이터 수집 상태
- EVA App 연결 상태
- 활성화된 Alert 수
운영자는 모든 Connection을 순서대로 확인할 필요가 없습니다. 위험도가 높은 Connection을 먼저 확인하고, 해당 Connection의 상태가 언제부터 변화했는지 확인한 뒤, 상세 분석 화면으로 이동할 수 있습니다.
2. Signal-to-Insight Flow
EVA Scope의 핵심은 그저 데이터를 많이 보여주는 것이 아닙니다. 대규모 프레임 데이터 속에서 처리 효율에 영향을 주는 신호를 찾고, 이를 Connection·카메라·처리 단계·개별 프레임 수준의 분석으로 연결하는 것입니다.
Connections List
먼저 전체 Connections(EVA App) 목록과 상태를 확인합니다. EVA Scope는 네 가지 세부 Index로 처리 효율에 영향을 주는 요인을 설명하고, Risk Score로 Connection 단위의 우선순위를 결정합니다.
운영자는 다음과 같은 정보를 확인할 수 있습니다.
- 어떤 Connection의 Risk Score가 높은가?
- 최근 처리 효율은 개선되고 있는가, 저하되고 있는가?
- 특정 시간대에 처리량이나 지연 시간이 변화했는가?
- 특정 Connection의 데이터 수집 상태는 안정적인가?
Alert History
핵심 지표가 설정된 기준을 벗어나거나, 수집 상태에 대한 추가 확인이 필요한 경우 Alert History에 기록됩니다. Alert History에는 문제가 발생한 시간대와 Connection, 상태, Risk Score가 표시됩니다.

Hourly Overview
문제가 발생한 Connection을 선택합니다. 시작 시간과 종료 시간을 설정하여 해당 시간대에 유입된 Image Frame을 분석할 수 있으며, 해당 시간 동안 프레임의 종료 상태와 상태 추이, 처리 시간 및 주요 지표의 변화 등을 확인해 문제를 파악할 수 있습니다. 보존 기간(7일) 내에서 과거 구간에 대한 분석도 가능합니다.

Index Analysis
EVA Scope는 처리 효율을 구성하는 네 가지 Index를 제공합니다. 각 Index의 변화와 세부 구성 요소를 함께 보여주기 때문에, 단순히 지표가 높다는 사실을 넘어 어떤 요인이 영향을 주었는지 확인할 수 있습니다.
- Bottleneck Index: 처리 지연과 Queue 대기
- Idle Index: Vision·Agent 및 프레임 유입 구간의 유휴 수 준
- Imbalance Index: 카메라별 처리 편차
- Error Index: 오류 프레임 비율

이 흐름을 통해 운영자는 Alert를 확인하는 데서 멈추지 않고, 처리 효율을 높이기 위해 어떤 단계와 리소스를 우선적으로 조정해야 하는지 판단할 수 있습니다. EVA Scope가 스스로 개선안을 결정하는 것은 아닙니다. 대신 리소스 재배치, Queue 정책 조정, 카메라별 처리 정책 검토, 추론 환경 개선과 같은 후속 조치를 판단할 수 있는 근거를 제공합니다.
3. 대규모 CCTV 운영 환경에서 왜 Observability가 필요한가?
소규모 환경에서는 몇 대의 카메라와 하나의 EVA App만 확인해도 시스템 상태를 어느 정도 파악할 수 있습니다.
하지만 운영 규모가 커지면 다음과 같은 문제가 발생합니다.
- 수십 개 EVA App의 상태를 각각 확인해야 함
- 수백~수천 대 카메라의 프레임 처리 상태가 분산되어 있음
- 최종 Drop 결과만으로는 장애 발생 단계를 알기 어려움
- 문제 발생 시간대와 원본 프레임을 연결하기 어려움
- 사용자가 문제를 인지한 뒤 직접 데이터를 찾아야 함
특히 이미지 프레임 처리 파이프라인은 단순한 요청-응답 구조가 아닙니다.
하 나의 프레임이 여러 비동기 처리 단계를 통과하며, 일부 프레임은 처리 과정 중 Drop되거나 다른 상태로 종료되기도 합니다. 따라서 UI로 확인 가능한 알림만으로는 EVA가 최적의 상태인지 파악하기가 어렵습니다.
Frame Ingest
↓
Frame Queue
↓
Vision Inference
↓
Agent Queue
↓
Agent Inference
↓
Finished / Dropped / Error
EVA의 동작이 최적 상태인지를 확인하기 위해서는 프레임이 어떤 경로를 거쳤고, 각 단계에서 얼마나 시간을 소비했는지 확인해야 합니다.
EVA Scope는 다음 세 가지 정보를 함께 사용합니다.
- 프레임의 최종 상태
- 각 처리 단계의 타임스탬프
- Connection·카메라·시간대별 처리 맥락
이를 통해 단순히 “비효율이 발생했다”가 아니라 다음과 같은 질문에 답할 수 있습니다.
- 어느 EVA App에서 병목이 발생했는가?
- 어느 시간대부터 부하가 시작되었는가?
- 병목은 Vision인가, Agent인가, Queue인가?
- 특정 카메라에만 문제가 집중되었는가?
- 현재도 병목이 지속되고 있는가?
- 조치 이후 실제로 처리 효율이 변화하였는가?
4. EVA Scope Core Intelligence
EVA Scope Core Intelligence는 대량의 프레임 데이터를 수집하고, 집계하고, 운영 가능한 신호로 변환하는 핵심 기술 영역입니다.
4.1 전체 아키텍처
EVA Scope는 EVA App의 Image Frame Journey 데이터를 수집해 데이터베이스에 저장하고, 이를 대시보드에서 분석합니다. EVA Scope에서 Journey란 하나의 이미지 프레임이 Ingest부터 Queue, Vision, Agent를 거쳐 최종 상태에 도달하기까지의 처리 과정을 의미합니다.
수십 개의 EVA App
↓
수백~수천 대의 Camera
↓
EVA App stats-dump(JSONL)
↓
FastAPI Backend
↓
Streaming Parser
↓
Hourly Rollup Accumulator
↓
ClickHouse
├─ Raw Frame Data
├─ Hourly Health Rollup
├─ Ingestion Ledger
└─ Alerts
↓
Next.js Dashboard
├─ Connections List
├─ Alert History
└─ Detailed Analysis
현재 설계는 Connection당 시간당 약 50MB의 dump 파일과 최대 100개 Connection 규모를 고려합니다. 이 정도 규모에서는 모든 Raw 데이터를 매번 조회하는 방식보다, 운영 관제용 데이터와 상세 분석용 데이터를 분리하는 것이 중요합니다.
4.2 Raw와 Rollup: 대규모 데이터 수집과 저장 전략
대규모 환경에서 모든 프레임 Raw 데이터를 항상 저장하고 조회하면 저장 공간과 조회 비용이 빠르게 증가합니다. EVA Scope는 수집 과정에서 데이터를 스트리밍 방식으로 처리하면서 Raw 데이터와 Rollup 데이터를 분리합니다. rollup_only 정책에서는 스트림을 소비하면서 시간 단위 집계만 생성하고, Raw 프레임은 저장하지 않습니다. 반대로 full 정책에서는 동일한 스트림을 Rollup 집계와 Raw batch insert에 함께 사용합니다.
스트리밍 기반 데이터 처리
EVA App의 통계 데이터는 JSONL 형식으로 제공됩니다. EVA Scope는 dump 파일 전체를 데이터베이스에 저장하거나 메모리에 올리지 않고 라인 단위로 읽으면서 필요한 정보만을 집계합니다.
- 상태별 프레임 수
- 카메라별 프레임 수와 Drop 수
- End-to-End 지연 시간
- Vision·Agent 추론 시간
- Queue 대기 비율
- 각 처리 단계의 실제 사용 시간
이 방식은 dump 파일 전체 크기에 비례해 메모리가 증가하는 것을 방지합니다.
Rollup 데이터
Rollup은 Connection과 시간 버킷 단위로 집계한 운영 데이터입니다. Rollup 데이터는 스트리밍 기반 데이터 처리를 통해 집계한 데이터를 바탕으로 필요한 정보만 가공하여 제공합니다.
- 전체 프레임 수
- Finished·Filtered·Dropped·Error 수
- End-to-End P50/P95 지연시간
- 카메라별 프레임 및 Drop 수
- Bottleneck·Idle·Imbalance 지수
- Risk Score
Connections List와 Alert 탐지는 Rollup 데이터를 사용합니다. 따라서 수천 대의 카메라 데이터를 매번 Raw 수준으로 전체 스캔하지 않아도 전체 운영 상태를 빠르게 확인할 수 있습니다.
Raw 데이터
Raw 데이터는 개별 프레임의 상세 분석에 사용됩니다. EVA Scope는 모든 Raw 데이터를 수집하지 않고, 운영자가 분석하고자 하는 Connection과 시간대에 대해서만 Raw 데이터를 수집·저장합니다.
- 특정 카메라의 오류 프레임 확인
- 개별 프레임의 처리 과정 추적
- Vision·Agent 처리 시간 확인
- 특정 시간대 상세 분석
Connection별 저장 정책도 제공합니다.
| 정책 | 설명 |
|---|---|
rollup_only | 기본 정책. 집계 데이터만 저장 |
full | Raw 데이터를 상시 저장 |
기본 정책에서는 Rollup을 중심으로 운영하고, 사용자가 상세 분석을 요청한 경우 필요한 시간대의 Raw 데이터를 다시 수집할 수 있습니다. 즉, EVA Scope는 모든 데이터를 같은 방식으로 저장하지 않습니다. 운영에 필요한 데이터는 가볍게 집계해 빠르게 조회하고, 원인 분석에 필요한 데이터는 필요할 때 상세하게 확인할 수 있도록 분리합니다. 이러한 Rollup 정책을 바탕으로 모든 Connections에 대한 관제 기능은 유지하면서, 저장 공간은 99%를 절감할 수 있습니다.
4.3 핵심 지표 설계
EVA Scope는 다양한 지표를 사용해 대규모 운영 환경에서의 서비스 운영 효율성과 효과성을 진 단합니다.
| 지표 | 의미 |
|---|---|
| Bottleneck Index | 처리 지연, Queue 대기로 인해 프레임이 손실될 위험 |
| Idle Index | Vision·Agent·카메라 유입 구간의 유휴 수준 |
| Imbalance Index | 특정 카메라 위주로 처리 또는 Drop이 집중되는 정도 |
| Error Index | 전체 프레임 중 오류 프레임의 비율 |
| Risk Score | 여러 지표를 종합한 Connection별 위험도 |
마치며
대규모 CCTV AI 환경의 진짜 어려움은 ‘인프라 부족’보다 ‘AI 시스템 내부 동작의 불투명성’에 있습니다. 수천 대의 카메라에서 쏟아지는 프레임 속에서 어디에 병목이 생겼는지, 어느 리소스가 놀고 있는지 모른다면 GPU 서버를 증설해도 문제는 해결되지 않습니다. 기존에는 운영 중인 수많은 EVA 중 개선이 필요한 EVA를 식별하기조차 어려웠고, 설령 찾아내더라도 시스템의 로그를 분석하는 등 수십 분, 수백 분의 시간이 필요했습니다. EVA Scope는 이러한 과정을 획기적으로 줄여 직관적인 신호로 전환합니다. 이미지 프레임의 유입부터 마지막 Agent의 추론까지 전체 여정을 투명하게 시각화함으로써, 운영자는 명확한 데이터를 바탕으로 AI 시스템의 구성과 설정을 최적화할 수 있습니다.
단순히 ‘서버가 살아있는가’를 확인하는 모니터링을 넘어, 나아가 ‘어디에 장애가 발생했는가’를 확인하는 관제 시스템을 넘어, 제한된 시스템 리소스 안에서 EVA가 안정적이고 효율적으로 동작할 수 있도록, 어디를 관찰하고 무엇을 개선해야 하는지 판단할 수 있게 해주는 것.
이것이 대규모 CCTV AI 운영 환경에서 EVA Scope가 제공하고자 하는 가치입니다.


