데이터 구성 확인 및 모델링 계획

박지은·2023년 8월 1일
0
post-thumbnail

파이프라인 설명에 앞서 Data의 구성과 데이터 모델링에 이용할 방법에 대해 설명하고 넘어가고자 한다.

Event Server

가상의 음원 사이트이자, 이벤트 로그를 생성하는 프로그램으로 Eventsim 이라는 오픈소스를 이용하였다. 이 프로그램은 Spotify와 같은 음악 플랫폼에서 발생하는 이벤트를 모방하여 로그를 생성한다. 생성된 데이터는 실제 사용자의 활동과 매우 유사하지만, 완전히 가상이며 실제 사용자 행동을 기반으로 하지 않는다.

다음은 해당 프로그램에서 생성하는 로그이다.

공통 정보

아래는 모든 이벤트에서 공통적으로 생성되는 데이터이다.

itemdescription
ts이벤트 발생 시간
level사용자의 구독 여부 (free, paid)
city접속 도시
state접속 도시가 속한 주
userAgent사용자 소프트웨어의 식별 정보를 담고 있는 request header
lon경도
lat위도
userId사용자 ID
gender성별
registration회원가입 시간
sessionId세션 ID
itemInSession현재 이벤트의 세션 내 발생 순서
zip우편번호
tag그 외 추가정보
firstName이름
lastName

1. Auth events

사용자 인증과 관련된 이벤트들이 저장된 로그이다. 로그인, 로그아웃등의 이벤트들이 기록되어 있다.

고유 정보

itemdescription
success성공 여부

2. Listen events

음악 듣는 것과 관련한 이벤트들이 저장된 로그이다.

고유 정보

itemdescription
artist음악가
song음악 제목
duration음악 재생 시간

3. Page view events

어플리케이션 내 페이지 방문 이벤트들이 저장된 로그이다.

고유 정보

itemdescription
page방문한 페이지 명
method요청한 HTTP method의 종류
status응답 상태
auth요청을 보낸 사용자가 유효한지 여부 (로그인, 로그아웃)

특징

  • auth가 Logged Out일 경우 user 정보는 None
  • Page_View의 Login / Logout event는 auth_event에도 저장 됨
  • Page_View의 Listen event는 listen_event에도 저장 됨
  • Page_View의 Submit Upgrade/Downgrade 이벤트는 Status_change에도 저장 됨

4. Status_Change

사용자의 구독 및 구독 취소 이벤트들의 로그이다.

Data Modeling

수집한 데이터들을 일관성 있는 형태로 저장하기 위해서는 기준이 될 방법을 설정할 필요가 있었다.
여기에서 Medallion Architecture가 데이터를 단계별로 작업을 수행해 Data Lake에 저장하기에 적합하다 판단하여 이용하게 되었다.

여러 장점이 있는데 일단 간단한 모델이라는 점과 데이터를 단계별로 논리적으로 처리할 수 있다는 점이 본 프로젝트에서 이용하기에 적합하다고 생각하였다.
같은 데이터를 여러 단계에 거쳐 여러번 저장하기에 용량이 커진다는 단점이 있긴하나, 대용량의 Semi 내지 Unstructured Data를 저장하기에는 정형화된 데이터를 저장하는 RDBMS나 Datawarehouse 보다는 Data Lake를 이용하는게 적합하다 생각해 이를 이용하였다.

Medallion Architecture에 대해 아래에 간단히 설명해 두었다.

Medallion Architecture

Medallion Architecture는 Data Lakehouse에서 데이터를 논리적으로 구성하기 위해 사용되는 데이터 디자인 패턴이다. 데이터를 Bronze -> Silver -> Gold 세 단계로 나누어 각 단계를 거칠 때마다 데이터의 구조와 품질을 점진적으로 개선하는 것을 목표로 한다. 따라서 Multi-hop Architecture로 불리기도 한다.

해당 모델의 장점은 다음과 같다.

  • 간단한 데이터 모델 : 복잡한 구조나 관계를 간소화하여 데이터를 효율적으로 처리

  • 점진적인 ETL 가능 : ETL(추출, 변환, 적재) 작업을 점진적으로 수행할 수 있어서, 새로운 데이터를 추가하거나 수정할 때 기존 데이터와 효율적으로 통합 가능

  • 원시 데이터에서 언제든지 테이블을 재생성 가능 : 원시 데이터에서부터 언제든지 테이블을 재생성하거나 업데이트할 수 있어, 데이터 손실 없이 데이터를 관리 가능

아래는 아키텍처의 각 단계 이다.

1. Bronze Layer

  • Bronze Layer는 Data Lake의 첫 번째 단계로서 구조화되지 않은 원시 데이터를 수집해 저장한다.
  • 이 단계에서는 데이터의 정제 작업이 수행되지 않으며 변형이나 집계도 이루어지지 않는다.

2. Silver Layer

  • Silver Layer는 Bronze Layer의 데이터를 정제하고 변형하여 구조화된 형식으로 저장합니다.
  • 데이터의 불일치를 수정하고 일관성을 유지하기 위해 데이터 품질 관리 작업이 이루어진다.

3. Gold Layer

  • Gold Layer는 Silver Layer의 데이터를 집계하고, 품질을 더욱 향상시켜 비즈니스에 가치 있는 통찰력을 제공하는 최종 데이터 형태를 저장한다.
  • 이후, 머신러닝 모델, 비즈니스 인텔리전스 도구 등을 활용하여 가치 있는 인사이트를 추출한다.

다음 편에서 어떻게 데이터를 추출하여 Bronze layer에 저장하였는지 다룰 예정이다.

출처

  1. Medallion Architecture, Databricks, https://www.databricks.com/glossary/medallion-architecture
  2. The Medallion Architecture, Omar LARAQUI, https://medium.com/@omarlaraqui/the-medallion-architecture-21fe878d1aca
profile
Today I learned...

0개의 댓글