사용자 시퀀스 플랫폼 재설계를 통해 비용 절감, 속도 향상, 사용 편의성 증대

by DD
1주 전
조회수 8

사용자 시퀀스(User Sequence) 플랫폼 재설계를 통해 ML 모델 학습 및 추론에 필요한 데이터 처리 비용 절감

설정 기반(Configuration-as-Code) 방식을 도입하여 새로운 이벤트 타입(Event Type) 및 신호(Signal) 추가를 간소화하고 안전성을 확보

람다 아키텍처(Lambda Architecture)를 적용하여 실시간(Real-time) 및 배치(Batch) 데이터 처리 경로를 통합, 데이터 일관성(Data Consistency) 유지

컬럼 기반(Columnar) 스토리지를 활용하여 저장 공간 효율성을 높이고, 모델에 필요한 데이터만 빠르게 접근 가능하도록 개선

운영 효율성(Operational Efficiency)을 위해 시퀀스(Sequence)의 신선도, 지연 시간, 오류율 등을 모니터링하는 대시보드 구축

설정 기반(Configuration-as-Code) 접근 방식의 장점

본문에서 사용자 시퀀스(User Sequence) 및 신호(Signal) 정의를 설정 기반(Configuration-as-Code)으로 관리하는 방식을 채택했다. 이는 ML 엔지니어(Engineer)와 데이터 과학자(Data Scientist)가 안정적인 인터페이스(Stable Interface)를 통해 데이터 파이프라인(Data Pipeline)을 이해하고, 관리할 수 있도록 돕는다.

개발 속도 향상: 새로운 이벤트 타입(Event Type) 또는 신호(Signal) 추가 시, 새로운 파이프라인(Pipeline) 구축 대신 설정 변경과 소규모 코드(Code) 추가만으로 가능

안전성 강화: 코드 리뷰(Code Review) 및 롤백(Rollback) 용이, 버전 관리 시스템(Version Control System)을 통한 변경 이력 관리

관심사 분리: ML 및 제품 팀은 원하는 데이터(Data)에 집중하고, 플랫폼 팀은 설정 실행에 집중하여 책임 분담(Responsibility Division)을 명확히 함.

공유 실행 엔진(Shared Execution Engine)의 역할

본 시스템은 공유 실행 엔진(Shared Execution Engine)을 통해 실시간(Real-time) 및 배치(Batch) 데이터 처리 파이프라인(Pipeline)의 핵심 로직을 재사용한다. 이 엔진은 설정(Configuration)을 기반으로 데이터 소스(Data Source)에 연결하고, 필터링(Filtering), 특징 추출(Featurization)을 수행하며, 결과를 스토리지(Storage)에 기록한다.

코드 중복 감소: 실시간 및 배치 작업 간의 코드 중복을 최소화하여 유지보수성(Maintainability) 향상

데이터 일관성 확보: 동일한 로직을 사용하여 데이터 처리의 일관성을 유지하고, 데이터 드리프트(Data Drift) 방지

확장성 및 유연성: 새로운 이벤트 타입(Event Type) 및 신호(Signal) 추가 시, 플러그인(Plugin) 형태로 쉽게 확장 가능

결과적으로 공유 실행 엔진(Shared Execution Engine)은 데이터 처리 파이프라인(Pipeline)의 효율성과 안정성을 동시에 향상시킨다.

람다 아키텍처(Lambda Architecture)를 통한 데이터 품질 확보

본 시스템은 람다 아키텍처(Lambda Architecture)를 활용하여 실시간(Real-time) 및 배치(Batch) 데이터 처리 경로를 병렬로 운영한다. 실시간 경로는 최신 데이터를 빠르게 처리하여 온라인 추론(Online Inference)에 사용하고, 배치 경로는 과거 데이터를 재처리하여 데이터의 정확성(Accuracy)과 완전성(Completeness)을 보장한다.

신선도(Freshness)와 정확성(Accuracy) 균형: 실시간 데이터의 신속성과 배치 데이터의 정확성을 모두 확보

데이터 보정(Data Correction) 및 백필(Backfill): 배치 경로를 통해 누락된 데이터 보완 및 오류 수정

일관된 데이터 제공: 훈련(Training) 및 분석(Analysis)에 일관된 데이터 제공

이러한 접근 방식은 데이터 품질을 향상시키고, 모델의 성능을 안정적으로 유지하는 데 기여한다.

컬럼 기반(Columnar) 스토리지의 효율성

본 시스템은 컬럼 기반(Columnar) 스토리지를 사용하여 데이터 저장 및 접근 효율성을 높였다. 기존의 대용량 블롭(Blob) 형태 대신, 각 특징(Feature)을 별도의 열(Column)로 저장하여 필요한 데이터만 빠르게 읽을 수 있도록 한다.

압축 효율성 향상: 컬럼 단위로 데이터를 압축하여 저장 공간 절약

네트워크 대역폭 절감: 필요한 컬럼만 선택적으로 읽어 네트워크 전송량 감소

쿼리 성능 향상: 특정 특징(Feature)에 대한 쿼리(Query) 성능 향상

시간 분할(Time Partitioning)을 통해 데이터 접근 범위를 제한하여, 시스템의 전반적인 성능을 향상시킨다.

운영 효율성(Operational Efficiency) 확보를 위한 모니터링

본 시스템은 운영 효율성(Operational Efficiency)을 위해 시퀀스(Sequence)의 신선도(Freshness), 지연 시간(Latency), 오류율(Error Rate) 등을 모니터링하는 대시보드를 구축했다. 이를 통해 시스템의 이상 징후를 빠르게 감지하고, 문제 발생 시 신속하게 대응할 수 있다.

문제 해결 시간 단축: 모니터링 지표를 통해 문제의 원인을 빠르게 파악하고, 해결 시간을 단축

시스템 안정성 향상: 이상 징후 감지를 통해 시스템의 안정성을 유지

지속적인 개선: 모니터링 데이터를 기반으로 시스템 개선 및 최적화 수행

결과적으로, 모니터링 시스템은 플랫폼의 안정적인 운영을 지원하고, 지속적인 성능 개선을 가능하게 한다.

Making User-Sequence Data More Cost-Efficient, Faster, and Easier to Use