데이터 웨어하우스(Data Warehouse)와 데이터 레이크(Data Lake) 에 대해 알아보자

데이터 웨어하우스(Data Warehouse)에 대해 알아보자!


데이터 웨어하우스

데이터 웨어하우스란?

비즈니스를 운영하다 보면 막대한 양의 데이터가 발생하게 된다. 이렇게 축적된 데이터들을 공통의 형식으로 변환하여 관리하는 DataBase를 Data Warehouse (DW) 라고 한다.

이렇게만 정의하면, 그냥 데이터들을 기본 PostgreSQL과 같은 DB에서 관리하면 될 것 같은데, DW 같은 형식이 왜 필요한걸까?

데이터 웨어하우스는 왜 필요할까?

image 예를 들어서, 온라인 커머스 플랫폼이 있다고 가정해보자. 해당 온라인 커머스 사이트에서는

  • 고객의 정보 시스템
  • 고객의 장바구니 시스템
  • 고객의 결제 시스템
  • 고객의 주문 시스템
  • 상품 재고 시스템

이러한 여러 가지의 시스템이 필요할 것이다. 이렇게 다양한 시스템을 통해 발생하는 데이터들이 존재할 것이다.

만약, 6개월간 결제한 고객들의 장바구니 데이터를 보고 싶으면 어떻게 해야할까? 데이터베이스에서 SQL 쿼리를 작성하여 데이터 분석을 할 수 있을 것이다. 하지만 이런 상황에서 여러가지의 문제가 발생할 수 있다.

  • SQL을 사용하여 여러 시스템에서 직접 데이터를 쿼리한다면, 각 시스템에 데이터베이스에 부하를 줄 수 있다.
  • 각 시스템에서 발생하는 데이터는 서로 다른 형태와 구조를 가지고 있을 수 있기 때문에 일관된 형태로 만드는 것은 복잡할 수 있다.

image

따라서 이러한 문제들을 해결하기 위해서 데이터 웨어하우스를 사용할 수 있다. 데이터웨어하우스를 사용함으로써 데이터를 중앙집중화하여 통합, 관리, 분석을 효율적으로 수횅할 수 있다.

이러한 마이크로 서비스뿐만 아니라 모노리식 서비스에서도 데이터 웨어하우스는 필요하다.

위와 같은 시스템이 모두 하나의 시스템에 뭉쳐있다고 가정해보자. 동일하게, 6개월간 결제한 고객들의 장바구니 데이터를 보고 싶으면 어떻게 해야할까?

이때도 SQL 쿼리를 작성하여 데이터 분석을 할 수 있겠지만 모노리식 서비스에서는 모든 기능이 하나의 어플리케이션과 하나의 데이터베이스에서 실행되기 때문애, 복잡한 쿼리와 대량의 데이터 조회 요청이 들어오면 어플리케이션 성능에 영향을 줄 수 있다.

따라서, 많은 서비스에서 데이터 분석 및 데이터 통합을 위해 데이터 웨어하우스를 사용하여 보다 효율적으로 진행할 수 있다.

Google BigQuery

데이터 웨어하우스를 사용하기 위한 툴로 가장 많이 사용되는 것이 바로 Google BigQuery이다. 왜 빅쿼리가 가장 많이 사용되는지, 구글 빅쿼리에 대해 알아보자.

클라우드 서비스

빅쿼리는 클라우드 서비스로, 로컬이나 서버에 설치하여 사용하는 서비스가 아니라 언제 어디서나 설치 및 운영 없이 사용 가능하다.

SQL 사용 가능

빅쿼리는 NoSQL 기반이지만, RDB에서 사용하는 SQL을 제공한다. (NoSQL과 SQL의 차이는 여기에서 확인할 수 있다.)

따라서 빅쿼리를 사용하면, 스키마를 설정함으로써 데이터 웨어하우스로도 사용할 수 있고, NoSQL을 사용하여 데이터 레이크로도 사용할 수 있다.

빅데이터

2000년대 이후부터는 생산되는 데이터의 양이 폭발적으로 증가하며 빅데이터라는 개념이 등장했다.

빅데이터란, 기존의 데이터베이스 시스템에서는 저장,관리, 분석이 어려울 정도로 매우 크고 복잡한 데이터 집합을 말한다. 빅데이터는 비정형 데이터와 정형 데이터를 포함하는데, 90%가 비정형 데이터이다.

정형 데이터는 데이터의 모습을 미리 알 수 있어 모델을 정의하여 저장할 수 있는 데이터이고, 비정형 데이터는 데이터의 모습을 미리 알 수 없어 특정 스키마가 없는 데이터이다.

  • 정형 데이터: 모델을 정의하여 저장할 수 있고, 연산할 수 있는 데이터 ex) 엑셀
  • 반정형 데이터: 모델을 정의할 수 있지만, 연산할 수 없는 데이터 ex) 메일 내용, 내용 기록과 같은 로그
  • 비정형 데이터: 모델을 정의할 수 없고, 연산할 수 없는 데이터 ex) 영상, 음성

데이터 웨어하우스에서는 데이터 타입과 스키마가 결정된 데이터만 쌓을 수 있기 때문에 빅데이터는 데이터 웨어하우스에 적재할 수 없다. 또한, 빅데이터의 사이즈는 너무 크기 때문에 데이터 웨어하우스에 담기에는 비용이 너무 비싸다는 문제가 있다.

이러한 이유로 생겨난 것이 바로 데이터 레이크이다.

데이터 레이크 (Data Lake)

데이터 레이크란?

데이터 레이크란, 다양한 형태의 대규모 데이터를 데이터의 본래 모습 즉, 원시 형태(raw)로 저장할 수 있는 저장소이다. 나중에 그 데이터들을 필요에 따라 가공하여 사용하는 구조이다.

시스템들을 통해 발생한 데이터들을 일단 한 곳, 데이터 레이크에 쌓아 두고 필요할 때 가공하여 사용하는 것이다.

데이터 레이크의 필요성

데이터의 종류는 무한하고, 모든 유형의 데이터를 저장할 때 미리 스키마를 가질 수 없다. 따라서, 원시 데이터 자체를 저장함으로써 인사이트가 필요할 때 정제하여 사용하면 되는 것이다.

데이터 레이크에서도 데이터 디렉토리를 사용하여 어떤 데이터를 쌓으려고 하는지를 결정할 수 있다.

데이터 레이크 관리 툴

  • Apache Hadoop
  • Apache Spark

데이터 레이크 사용 사례

데브시스터즈의 데이터 레이크 구축 사례

image 데브시스터즈에서는 위와 같은 아키텍처를 가지고 데이터 인프라를 구축했었다고 한다. Indexed Log를 통해 각 팀에게 데이터를 전달하는 방식으로 보인다. 데브시스터즈에서 해당 아키텍처에서 어려움을 느낀 것은 바로 데이터가 필요한 부서가 늘어나고, 각 부서가 서로 다른 데이터 다른 형식으로 데이터를 요청한다는 것이었다.

각 부서에서 서로 다른 데이터/형식을 요청하기 때문에 이를 위해 다양한 포맷을 지원하기 위해 데이터 레이크를 도입했다고 한다. 또한 데이터 계층화를 진행했는데, 아래 사진처럼 데이터 성격마다 계층화를 진행하여 각 부서에게 필요한 데이터를 전달하는 방식으로 진행했다고 한다. image

image 결국 이러한 아키텍처를 설계함으로써, 데이터레이크에 Raw Data를 적재하고 필요에 따라 Analytics Data로 변환한 다음, 부서마다 원하는 데이터로 변환하여 데이터를 전달할 수 있도록 하였다.

나의 생각

처음에는 데이터 레이크를 사용하게 되면, Raw Data를 모두 데이터레이크에 적재하고, 각 부서의 필요에 맞춰 바로 데이터를 변환하여 제공해주면 될 것이라고 생각했다.

하지만 데브시스터즈에서는 Analytic Layer를 추가하였다. 해당 layer를 추가함으로써 중복을 제거하고, log 종류별로 파티셔닝을 함으로써 데이터를 Objective Layer로 보내기 전, 데이터의 무결성을 검증하고, 더 효율적으로 데이터를 변환할 수 있다는 것을 알게 되었다.

참고자료

데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀장 / 이준호 데이터 분석 및 BI 팀장, 데브시스터즈) :: Gaming on AWS 2018