Search

통계 성능 최적화

배경

회사에서 서비스 중인 3D VR, XR 공간에 대하여 사용자 행동을 로그로 기록하고 이를 통계로 표출하는 대시보드 프로그램을 설계하고 있다.
통계를 쌓는 대상이 하위개념으로 갈 수록 로그의 숫자가 급격하게 증가하여 성능에 영향을 미칠것을 우려하여 성능 최적화 방법에 대해 알아보았다.
B2B 고객을 대상으로 하는 서비스이고 로그의 실시간성보다 정확성과 안정성이 더 중요한 프로젝트의 특성상 서비스를 안정적으로 운영할 방법에 대해 고민해보았다.
로그를 쌓는 테이블은 크게 4가지로 분류된다.
프로젝트 (배포한 서비스)의 방문횟수와 체류시간
프로젝트 하위의 투어 개념에 대한 방문횟수와 체류시간
프로젝트는 최소 한개 이상의 투어로 이루어져 있다.
투어 하위 개념에 대한 씬에 대한 방문횟수와 체류시간
투어는 최소 한개 이상의 씬으로 이루어져 있다.
투어 하위 개념에 대한 마커에 대한 클릭횟수
투어는 0 or 1 or Many의 마커로 이루어져 있다.

현재 상황 : 방대한 로그 데이터의 양

현재 회사에서 서비스 중인 3D 프로젝트는 30개 이상이고 앞으로 계속 증가할 예정이다.
3D 프로젝트 특성상 B2B 고객이 자사의 상품을 홍보하거나 팝업스토어를 열어 사용자의 방문을 유도한다.
3D 공간 특성 상 사용자는 새로운 경험을 하고 이에 흥미를 느껴 공간 내에서 많은 이동을 한다.
특히 하위 개념(씬, 마커)로 내려갈수록 로그의 수가 급격하게 증가하므로
단순한 쿼리작업인 AVG, COUNT, GROUP BY와 같은 집계 쿼리도 서비스 성능에 악영향을 줄 것으로 예상되었다.

해결 방법

이 문제를 해결하기 위해 데이터 웨어하우징 구조를 도입하기로 하였다.
데이터 웨어하우징 구조의 핵심은 원본 로그 데이터와 분석을 위한 통계 데이터를 분리하는 것에 있다.

1. 로그 적재와 분리된 통계 처리

로그는 계속 쌓되, 직접 쿼리하지 않는다: 사용자 행동 로그는 끊임없이 데이터베이스에 기록된다. 하지만 대시보드나 다른 분석 시스템이 이 원본 로그 테이블을 직접 조회하지 않는다. 이는 실시간 트랜잭션 처리와 분석 쿼리 간의 충돌을 방지하여 서비스 안정성을 높입니다.
주기적인 배치 작업을 통한 집계: 일정 시간(예: 10분, 1시간, 하루 등)마다 미리 정의된 배치(Batch) 작업이 실행, 이 배치 작업은 원본 로그 데이터를 읽어 들여 필요한 집계를 수행한다. 특정 프로젝트의 시간별 방문 횟수나 투어의 평균 체류 시간 등을 계산한다.

2. 경량화된 통계 테이블 구축

집계된 결과는 visit_stat, click_stat 등과 같은 별도의 통계 테이블에 저장한다. 이 통계 테이블은 원본 로그 테이블에 비해 데이터의 양이 훨씬 적고, 미리 집계된 형태이므로 쿼리 속도가 매우 빠르다.

3. 대시보드의 통계 테이블 기반 동작

대시보드는 원본 로그 테이블이 아닌, 이 경량화된 통계 테이블을 기반으로 동작한다. 따라서 대시보드 조회 시 응답 속도가 비약적으로 빨라지고, 데이터베이스에 가해지는 부하가 거의 없어 안정적인 서비스 운영이 가능해진다.

데이터 웨어하우징 도입을 통해 얻을 수 있는 장점

비약적인 대시보드 성능 향상: 원본 로그 테이블을 직접 조회하지 않고, 미리 집계된 통계 테이블에서 데이터를 가져오므로 쿼리 속도가 매우 빨라 사용자들은 거의 실시간에 가까운 통계 정보를 확인할 수 있다.
서비스 안정성 극대화: 피크 시간대에도 통계 계산을 위한 과도한 부하가 데이터베이스에 발생하지 않는다. 이를 통해 대시보드 서비스를 안정적으로 운영할 수 있다.
탁월한 확장성: 프로젝트나 사용자 수가 기하급수적으로 늘어나더라도, 통계 쿼리의 성능은 선형적으로 유지된다. 이는 데이터 증가에 따른 성능 저하를 최소화하고, 장기적인 서비스 성장에 유연하게 대응할 수 있는 유연성을 제공한다.
유연한 통계 집계 주기: 비즈니스 요구사항과 트래픽 상황에 따라 집계 주기를 10분, 1시간, 1일 등으로 자유롭게 조정할 수 있고 이는 시스템 리소스를 효율적으로 분배하고, 필요에 따라 더욱 세밀하거나 광범위한 분석 데이터를 제공할 수 있게 된다.

마무리하며

실시간성보다는 안정성과 확장성이 훨씬 더 중요한 경우, 로그 테이블과 통계 테이블을 분리하고 주기적인 배치 작업을 통해 데이터를 이관하는 데이터 웨어하우징 방식은 매우 효과적인 선택이었다.
데이터 웨어하우징 구조를 통해 서비스의 안정성을 확보하고, 사용자 행동 데이터의 분석 효율을 극대화할 수 있게 되었고 앞으로는 통계 테이블에 누적된 데이터를 기반으로 더욱 풍부하고 다차원적인 인사이트를 시각화할 수 있도록, 대시보드 기능 또한 지속적으로 개선해 나갈 계획이다.
궁극적으로 이 시스템은 저희 고객사들이 3D VR/XR 공간을 통해 비즈니스 목표를 달성하는 데 필요한 핵심 정보를 제공하며, 서비스의 가치를 높이는데 기여를 하고 싶다.