brunch

You can make anything
by writing

C.S.Lewis

by 비즈스프링 Nov 15. 2022

BigQuery부터 Elasticsearch까지

데이터 정제부터 데이터가 저장되기까지

지난 포스트는 실시간으로 수집된 데이터를 확인할 수 있게 해주는 도구인 logstash를 알아보았습니다.

이번 포스트에서는 빅쿼리(BigQuery)에 수집한 데이터를 어떻게 정제하고 수집한 데이터가 로그스태시(Logstash)에 의해서 어떻게 엘라스틱서치(Elasticsearch)에 저장 되는지 알아보겠습니다.




비즈스프링 데이터 수집부터 정제데이터 리포트 출력까지


데이터가 Logstash 엔진을 사용하여 시각화되는 과정 (출처: Bizspring)


현재 비즈스프링의 적용되는 제품의 구조는 스크립트로 인해 수집된 데이터들을 빅쿼리에 저장하고 저장한 데이터를 정제하여 로그파일로 생성해 로그스태시를 이용하여 엘라스틱서치 서버에 저장하고, 엘라스틱서치에 저장된 데이터로 리포트를 생성하고 있습니다.




빅쿼리에 수집된 데이터를 정제하는 과정


카카오 매체를 통해 수집 데이터를 정제하는 과정을 간략하게 예시로 보여드리겠습니다.

수집 데이터가 정제되어 최종 테이블로 합쳐지는 과정 (출처: BizSpring)


위 그림과 같이 수집된 데이터를 매체별(카카오, 구글, 네이버) 테이블에 저장하고, 각각 매체별 생성한 데이터를 UNION 하여 최종 데이터를 생성합니다.


데이터를 “정제“한다는 문장으로 인해 낯설게 느껴지실 수 있는데요 


쉽게 생각해서 수집된 데이터 테이블을 쿼리를 통해서 원하는 형식의 테이블로 생성하고 리포트형식에 출력하기 편하게 새로운 테이블로 만든다고 생각하시면 됩니다.


실제 수집된 데이터가 어떻게 카카오 매체 정제 테이블로 생성되는지 확인해보겠습니다.




(수집테이블)

수집 테이블 쿼리 결과 일부 조회 화면 (출처 : BizSpring)


기존 수집된 데이터 테이블은 그림과 같이 저장되고 있습니다.

impression(노출), click(클릭), cost(비용) 칼럼에 데이터가 수집되는 걸 확인할 수 있습니다.


(정제쿼리 일부 코드)

수집데이터 정제하여 카카오 매체 테이블로 생성하는 과정 (출처 : BizSpring)

** 전환수 산출 공식 : conv_cmpt_reg:회원가입 + conv_purchase:주문 + conv_signup:가입 및 등록 + conv_app_install:앱설치



하지만 수집 테이블에는 전환매출액과(conv) 같은 데이터 칼럼은 없기 때문에 전환매출액을 생성하기 위해서는 정제쿼리 코드에 전환수 산출 공식 쿼리를 통해 전환수 m_conv칼럼을 생성한 후에 select문으로 데이터를 정렬하여 t_kakao라는 새로운 테이블을 생성하게 됩니다.


t_kakao와 마찬가지로 매체별로 정제하여 생성한 테이블들을 UNION으로 하나의 테이블로 합치게 됩니다.

union을 통해 생성한 t_union테이블을 이용하여 최종 리포트 테이블의 형식을 생성하게 됩니다. 테이블 명은 bmp_rpt.media_v1_{yyyyMMdd_HH}와 같은 테이블 명으로 생성됩니다. 해당 테이블이 최종적으로 정제가 된 데이터를 보유하고 있는 테이블입니다.


빅쿼리에 저장 수집된 데이터를 어떻게 정제가 되는지 간략하게 알아보았습니다.





정제된 데이터를 로그스태시를 통해 엘라스틱서치 서버로 저장


빅쿼리에 수집된 데이터를 정제 과정을 통해 생성된 테이블(bmp_rpt.media_v1_오늘 날짜)을 로그파일(JSON 형식)로 만들게 됩니다. 생성한 로그파일을 로그스태시가 인식할 수 있도록 로그스태시의 파이프라인 설정파일인  media_v1.conf를 확인하여 intput > file > path에 작성된 경로에 생성한 빅쿼리에서 정제한 로그파일을 이동시켜 줍니다.


media_v1.conf 파일에 작성되어 있는 logstash 설정 내용 (출처 : BizSpring)


path 경로 폴더에 로그파일이 이동하게 되면 로그스태시가 자동으로 파일을 인식하여 해당 로그파일을 엘라스틱서치 서버에 인덱스로 저장하게 됩니다.


키바나에서 생성된 인덱스를 조회한 화면 (출처 : BizSpring)

**로그스태시가 정제 로그파일을 업로드 시켜 생성한 인덱스


위 그림과 같이 정제된 로그파일이 로그스태시를 통하여 엘라스틱서치에 저장된 것을 확인할 수 있습니다.

이렇게 저장된 엘라스틱서치 데이터를 GET, PUT, POST, DELETE를 이용하여 데이터를 검색 또는 수정할 수 있습니다.





엘라스틱서치 사용이유


빅쿼리에서 정제 테이블을 생성하는데 정제 테이블에서 바로 조회하지 않고 엘라스틱서치 서버에 데이터를 옮겨서 사용하는 이유에 대해서 질문을 가지실 수 있습니다.엘라스틱서치에 데이터를 저장하는 가장 큰 이유는 “비용”과 “검색 속도”가 있습니다.



빅쿼리는 구글에서 제공하는 플랫폼으로 일정 이상 데이터를 사용하고 조회하게 된다면 비용이 청구되고 있습니다. 그렇기 때문에 조회에 비용이 들지 않는 엘라스틱서치를 이용하여 데이터를 저장하고 비용적인 부분을 없애기 위함에 있습니다.


또한 빅쿼리는 데이터를 관리하고 분석하게 해주는 다양한 기능을 제공하는 데이터 웨어하우스지만, 엘라스틱서치는 검색엔진에 중점으로 설계된 솔루션입니다. 검색 기능과 Full-text 검색이라는 강력한 기능을 갖고 있는 엘라스틱서치가 데이터를 검색하는 부분에 있어서는 성능적으로 빅쿼리보다 뛰어납니다.


이러한 이유로 빅쿼리에서 데이터를 조회하는 것이 아닌 엘라스틱서치에서 데이터를 조회하는 이유가 되겠습니다.



이번 포스팅에서는 수집 데이터 정제 과정부터 로그스태시를 이용하여 엘라스틱서치에 데이터 저장 그리고 엘라스틱서치 사용 이유에 대해서 알아보았습니다.









마케팅에서의 데이터 활용 기술과 인사이트
No.1 Data Partner for Data-Driven Growth
비즈스프링

공식 블로그 | 페이스북 | 네이버 블로그 | 유튜브 | 트위터 | 슬라이드쉐어


매거진의 이전글 웹사이트 페이지를 검색엔진에 최적화 시켜보자 (1)
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari