중고나라 데이터웨어하우스(DW) 구축기
2022년을 회고하며…중고나라에는 초단위로 많은 유저들이 접속하여 상품을 등록하고 구매합니다. 이렇게 쌓인 로그, 상품, 채팅, 결제 내역 등 다양한 데이터들이 S3, RDB, ElasticSearch 등에 저장되고 있습니다.데이터 분석 as-is (ver 2022)2022년, 제가 입사했을 시에는 다른 부서에서 데이터 추출 및 분석 업무 지원 요청을 받으면 서비스용 데이터베이스에 부하를 일으키지 않는 선에서 데이터를 추출, 가공하여 드렸습니다.하지만, 회사가 빠르게 성장하고 발전하면서 자연스레 데이터 분석에 대한 니즈가 증가하였습니다. 서비스용 데이터베이스에 분석용 쿼리가 증가하고, 분석하고자하는 데이터의 크기, 기간이 점차 늘었습니다.높아진 데이터 니즈로 인해 아래와 같은 문제점이 하나, 둘씩 발생하기 시작하는데…..😱분석용 쿼리로 인한 DB 부하서비스에 사용하는 쿼리와 분석 목적으로 실행하는 쿼리는 같은 SQL문이여도 성격이 다릅니다.서비스 목적 쿼리는 빠르게 쿼리 결과를 얻어 유저들에게 서비스를 제공할 목적이고, 분석용 쿼리는 장기간 데이터를 그룹화하여 통계치를 추출하거나 데이터 간 패턴을 파악하려는 목적으로, 속도 측면에서는 어느정도 레이턴시가 허용되지만, 그만큼 쿼리 하나의 cpu 점유율이 높습니다.아래는 위 내용을 조금 더 자세히 정리한 표입니다.또한, 서비스용 데이터베이스는 유저들에게 빠른 서비스를 제공할 목적으로 컬럼 인덱싱이 되어있기 때문에, 분석용 쿼리는 해당 인덱싱을 활용하지 못해 더욱더 실행 시간이 오래 걸리게 되고, 이로 인해 서비스용 데이터베이스에 부하를 일으키는 경우가 종종 발생하였습니다.장기간 데이터 분석의 한계유저 행동 데이터는 파일 시스템으로 저장하고, 최근 3개월의 일부만 분석을 위해 ElasticSearch에 색인했습니다. 그러나 점차 반년, 1년치 데이터 분석의 니즈가 늘어났고, 이를 대응하기 위해 Spark⭐️를 사용하는 일도 증가하였습니다.추출 업무 증가긴 기간 분석 니즈와 함께, 대량 데이터에 대한 분석 요청이 증가하면서 추출 업무가 1년 사이 폭발적으로 늘어나, 추출 업무 관련자들의 퇴근 시간이 점점 늦어지고마는데………DW의 도입위와 같은 문제점을 해결하기 위하여 데이터웨어하우스(DW)를 도입을 결정하였습니다.데이터웨어하우스로는 AWS 에서 제공하는 redshift, GCP의 BigQuery, 오픈 소스의 ClickHouse 가 있는데요, 중고나라에서는 AWS 클라우드를 사용 중이며 이 외에 BigQuery나 오픈소스를 사용하였을 때 고려해야할 관리 포인트, 비용 등을 고려하여 AWS Redshift를 선정하였습니다.Redshift 는 Massive Parallel Processing(a.k.a MPP, 병렬 컴퓨팅) 기반의 columnar 데이터웨어하우스로, 대용량 데이터를 SQL 로 분석할 수 있습니다.구축기a) RDB우선, 데이터 분석 시 이전과 동일한 쿼리를 사용할 수 있도록, 서비스용 RDB에 저장된 데이터들을 Redshift 에 저장하는 작업이 필요했습니다.위 작업을 구현하기 위해
9/25/2023

중고나라 데이터웨어하우스(DW) 구축기
2022년을 회고하며…중고나라에는 초단위로 많은 유저들이 접속하여 상품을 등록하고 구매합니다. 이렇게 쌓인 로그, 상품, 채팅, 결제 내역 등 다양한 데이터들이 S3, RDB, ElasticSearch 등에 저장되고 있습니다.데이터 분석 as-is (ver 2022)2022년, 제가 입사했을 시에는 다른 부서에서 데이터 추출 및 분석 업무 지원 요청을 받으면 서비스용 데이터베이스에 부하를 일으키지 않는 선에서 데이터를 추출, 가공하여 드렸습니다.하지만, 회사가 빠르게 성장하고 발전하면서 자연스레 데이터 분석에 대한 니즈가 증가하였습니다. 서비스용 데이터베이스에 분석용 쿼리가 증가하고, 분석하고자하는 데이터의 크기, 기간이 점차 늘었습니다.높아진 데이터 니즈로 인해 아래와 같은 문제점이 하나, 둘씩 발생하기 시작하는데…..😱분석용 쿼리로 인한 DB 부하서비스에 사용하는 쿼리와 분석 목적으로 실행하는 쿼리는 같은 SQL문이여도 성격이 다릅니다.서비스 목적 쿼리는 빠르게 쿼리 결과를 얻어 유저들에게 서비스를 제공할 목적이고, 분석용 쿼리는 장기간 데이터를 그룹화하여 통계치를 추출하거나 데이터 간 패턴을 파악하려는 목적으로, 속도 측면에서는 어느정도 레이턴시가 허용되지만, 그만큼 쿼리 하나의 cpu 점유율이 높습니다.아래는 위 내용을 조금 더 자세히 정리한 표입니다.또한, 서비스용 데이터베이스는 유저들에게 빠른 서비스를 제공할 목적으로 컬럼 인덱싱이 되어있기 때문에, 분석용 쿼리는 해당 인덱싱을 활용하지 못해 더욱더 실행 시간이 오래 걸리게 되고, 이로 인해 서비스용 데이터베이스에 부하를 일으키는 경우가 종종 발생하였습니다.장기간 데이터 분석의 한계유저 행동 데이터는 파일 시스템으로 저장하고, 최근 3개월의 일부만 분석을 위해 ElasticSearch에 색인했습니다. 그러나 점차 반년, 1년치 데이터 분석의 니즈가 늘어났고, 이를 대응하기 위해 Spark⭐️를 사용하는 일도 증가하였습니다.추출 업무 증가긴 기간 분석 니즈와 함께, 대량 데이터에 대한 분석 요청이 증가하면서 추출 업무가 1년 사이 폭발적으로 늘어나, 추출 업무 관련자들의 퇴근 시간이 점점 늦어지고마는데………DW의 도입위와 같은 문제점을 해결하기 위하여 데이터웨어하우스(DW)를 도입을 결정하였습니다.데이터웨어하우스로는 AWS 에서 제공하는 redshift, GCP의 BigQuery, 오픈 소스의 ClickHouse 가 있는데요, 중고나라에서는 AWS 클라우드를 사용 중이며 이 외에 BigQuery나 오픈소스를 사용하였을 때 고려해야할 관리 포인트, 비용 등을 고려하여 AWS Redshift를 선정하였습니다.Redshift 는 Massive Parallel Processing(a.k.a MPP, 병렬 컴퓨팅) 기반의 columnar 데이터웨어하우스로, 대용량 데이터를 SQL 로 분석할 수 있습니다.구축기a) RDB우선, 데이터 분석 시 이전과 동일한 쿼리를 사용할 수 있도록, 서비스용 RDB에 저장된 데이터들을 Redshift 에 저장하는 작업이 필요했습니다.위 작업을 구현하기 위해

좋아요

별로에요