핵심 요약
NHN Cloud의 NHN AppGuard 로그를 Trino 기반 DataQuery로 도입하고 OBS의 Parquet 저장을 활용해 대량 로그를 효율 분석하게 되었으며, 30일치 조회를 30분에서 7초로 단축하고 내부 집계 시간을 38m36s에서 22m16s로 개선했으며 저장 기간도 60일에서 1년으로 확장했습니다.
구현 방법
- 데이터 소스 및 포맷: OBS를 데이터 소스로 사용하고 Parquet 파일 포맷으로 저장
- 기술 스택: Trino(데이터쿼리) 기반의 Federation 가능한 쿼리 엔진 도입
- 구성 선택: 3가지 구성안 중 3안인 “중간 DB(MySQL) 사용”을 채택해 실시간 조회와 파일 기반 저장의 균형 도모
- Parquet 생성 방식: Avro 스키마를 활용한 Parquet 변환 및 저장; 필요 시 CTAS 방식도 검토하되 사내 데이터 소스 미지원으로 적용 어려움
- tier down 전략: hot tier를 MySQL, cold tier를 Parquet으로 정의하고, daily 배치에서 MySQL 데이터를 Parquet로 변환해 OBS에 적재하는 방식으로 운영
- 데이터 흐름: Kafka → log-batch → MySQL 저장 → daily-batch로 Parquet 변환 및 OBS 저장
- 성능/운영 고려사항: Federation으로 OBS의 데이터와 MySQL 데이터를 하나의 쿼리로 조인 가능, 저장 기간은 확장 가능하지만 비용 증가(약 100만 원/월) 발생
주요 결과
- 30일치 조회 속도 개선: 데이터쿼리(DataQuery)로 36.81초 수준, MySQL은 조회 불가(30분 이상)였으나 전체적으로 대폭 개선
- 공용 API 조회 속도 개선: NHN AppGuard 공용 API에서 30분 소요에서 DataQuery 이용 시 7초 이내로 감소
- 내부 집계 시간 개선: 38m36s에서 22m16s로 약 43% 개선
- 저장 기간 확장: 데이터 저장 기간을 60일에서 1년으로 확장하여 장기 분석 가능성 증가
- 비용 및 운영: DataQuery와 OBS 비용 추가로 약 100만 원/월의 운영 비용 증가; tier down 실패 시 영향 및 모니터링 증가 등의 운영 부담 존재

