망고플레이트 데이터웨어하우스 이야기

2016.02.17 - PM 04:30

저에게 한통의 메일이 왔습니다. 바로 망고플레이트의 초콜릿공장에 초대하는 내용이었지요. 왠지 오래 있을 것 같은 생각에 물 한병을 오른손에 맥북을 왼손에 든채 입장 했습니다. 도착하니 대니와 마이클이 저를 맞이 했습니다. 그리고 화이트 보드에는 “데이터 웨어하우스” 가 적혀있었습니다. 컥 이번 주제는 저에게는 생소한 내용입니다. 잘 쓸 수 있을지 모르겠지만 망고플레이트 시스템을 더 배울 수 있어서 두근 거립니다. 여러분도 그렇죠?

무슨 이야기를 적어볼까요?

이번글을 통해 여러분들께 두가지를 전달해드리려고 해요.

  1. 망고플레이트의 데이터 웨어하우스(이하 DW) 모습.
  2. DW를 구축하고 싶으신 분들을 위한 가이드.

그렇기 때문에 아키텍쳐를 구성하고 있는 서비스들을 비교 분석한 글은 아닙니다. 각각의 서비스 이름을 키워드로 해서 구글링을 하면 좋은 글들이 많기 때문에 이 글에는 적지 않을 생각입니다. :) 자, 그럼 DW에 대해 알아볼까요?

데이터 웨어하우스란 어떤 것인가요?

데이터 웨어하우스(Data warehouse). 안드로이드 앱을 만드는 저에게는 익숙하지 않은 이름입니다. 이럴땐 얼른 질문을 해야겠죠? 우리의 전문가 마이클에게 물어보았습니다. 그랬더니 제게 질문이 돌아오네요.

  • 마이클 : 이름을 들었을때 어떤 것을 의미하는 것 같았나요?
  • 문규 : 제가 생각했을때는 회사 내의 모든 데이터를 저장하는 창고… (작아지는 목소리)
  • 마이클 : 맞아요. 정말 작은 범위에서 생각하면 모든 데이터를 저장하기 위한 시스템을 의미해요. 더 나아가서는 데이터 구조 설계 및 분석방법까지도 포함해서 데이터 기반 의사결정을 할 수 있도록 지원하는 시스템을 의미합니다.
  • 문규 : 아하~ 알것 같기도 한데. 아직 잘 모르겠어요.
  • 마이클 : 그럼 이해하기 쉽게 그림을 보면서 이야기 해볼까요?
망고플레이트의 데이터 흐름
  • 마이클 : 조금 더 구체적인 동작 과정을 얘기 해볼께요. 실제 시스템 내에서 이루어지는 작업은 ETL(Extraction, Transformation, Loading)이라고도 하는 수집단계, 수집된 데이터를 Report/Dashboard 등으로 정리하는 리포팅 단계, 그리고 분석(Analytics)단계가 있다고 볼 수 있어요. 그림을 보면, 녹색부분이 서비스에서 생성되는 Log데이터와 그외의 데이터들을 수집하는 것을 의미합니다. 물론 알고리즘 엔진(파란색 부분)을 통해 생성된 추천 결과와 Rating 결과도 수집되기도 합니다. 리포팅 단계분석 단계는 순서가 유동적이에요. 분석후 새로운 리포팅이 추가되기도 하고 또 리포팅 결과를 보고 다시 분석하고 그럴 수 있기 때문이죠. 각각의 단계별로 어떤 서비스를 사용하는지 알게 되면 전체적인 그림이 그려질꺼에요.
  • 문규 : 네. 이렇게 주욱 이야기를 들으니 우리 팀에서 어떤 과정을 통해서 중요한 의사결정들이 이루어지는 지 알것 같아요.

망고플레이트의 DW의 개념을 살펴 보았습니다. 여러분들도 비슷한 형태의 시스템을 갖추고 계신가요? 이제 구체적인 아키텍쳐 그림을 보면서 이야기를 나누려고 합니다. 다시 이야기로 돌아가 볼께요.

Redshift 기반의 Data Warehouse Architecture.

그럼 현재 망고플레이트는 어떤 서비스를 활용하여 아키텍쳐를 구성했을까요? 실제 시스템을 구축해주신 대니에게 물어봤습니다.

  • 문규 : 대니, DW를 구축하기 위해서는 다양한 기술을 사용했을 것 같은데요. 어떤 기술들을 사용했나요?
  • 대니 : 우리가 구축한 DW를 위한 핵심 제품은 Amazon Redshift입니다. Redshift는 클라우드에서 실행되는 신속하고 강력한 페타바이트 규모의 SQL 기반 데이터 웨어하우스 서비스죠. 기존의 HW기반의 고성능 DW장비들(IBM Netezza, Teradata 등)은 스타트업에서 도입하기에는 구축 시간 및 비용이 비싸 적용하기가 어려웠는데요, 클라우드 기반의 Redshift를 통하여 기존 장비 대비 경제적인 가격으로 (최소 시간당 0.24$: 약 300원) DW를 구축 할수 있게 되었어요.
데이터 웨어하우스 아키텍쳐
  • 대니 : 그리고 Redshift를 중심으로 크게 EC2 Instance 로 부터의 Log 수집 데이터 및 Amazon RDS의 주요 DB와의 데이터 동기화를 Daily 배치 작업으로 DW를 업데이트 하고 있구요. 시각화를 위한 방법으로는 Redash 를 활용하여 자주 사용하는 query들을 정리하여 사용자 그룹별 대시보드를 만들어 운영하고 있습니다.
  • 문규 : 아하, 적극적으로 클라우드 기반의 서비스를 도입 했네요. 스타트업에서는 역시 시간과 비용을 아낄 수 있는 솔루션이 좋은 것 같습니다.

망고플레이트의 아키텍쳐에 대한 설명이 짧게 느껴지시나요? 각각의 파트별로 어떤 서비스를 쓸지는 참고자료들을 찾아가면서 선정했답니다. 더 풍부한 이해를 위해 서비스들의 링크를 살펴보시고 다시 한번 아키텍쳐를 살펴 보시는 것을 추천드리겠습니다.

누구나 DW를 잘 운영할 수 있을까요?

이글을 읽고서 DW를 운영하고 싶으신 분들을 위해 질문을 하나 할까 합니다. 저는 이렇게 설계할 엄두도 안날 것 같은데, 어떤 역량을 쌓으면 잘 운영할 수 있을까요? 바로 물어보겠습니다.

  • 문규 : 대니, 저도 나중에 DW를 운영할 수 있을까요? 그럴려면 어떤 역량이 필요한가요?
  • 대니 : 일단 시스템 설계를 잘해야 겠죠? 다양한 데이터 통합 및 로드를 고려해서 설계를 해야 합니다. 그리고 대용량의 데이터를 처리해야 하다보니 Log 데이터를 수집하고 데이터를 변환 하는 작업의 성능을 최적화 하는 작업이 기반이 되어야 할거 같아요.
  • 문규 : 아… (나는 못하겠네.)
  • 대니 : 그리고 Redshift가 SQL기반으로 되어 있어요. 그래서 SQL 쿼리로 분석하고 싶은 데이터를 자유자재로 뽑아낼 수 있는 능력자가 필요하다고 생각해요. 우리의 마이클 같은? (Michael은 실제로 미국의 자동차 구매 사이트인 Edmunds.com과 Apple 본사에서 Senior Data Scientist로 빅데이터를 분석한 경험이 있습니다)
  • 문규 : ?(새삼 마이클이 다르게 보이는데?)
  • 마이클 : 앗 능력자 아닌데… 대니가 구현해준 인프라 관련 최적화가 정말 어려운 부분이에요.
  • 문규 : …(제가 보기엔 다 어려워 보여요!)
  • 마이클 : 조금 더 더하자면 DW를 구축하기 위해서는 데이터의 특성을 이해하고 일관된 형태로 구조화 하는게 중요해요. 다양한 형태의 데이터들을 통합하여 저장하다보니 테이블 구조 설계 및 테이블 구조의 계층화가 필수적이죠. 당연한 얘기지만 최종 단계 테이블의 경우, 최종 사용자가 보기 쉬운 형태로 설계가 되어야 원하는 분석 결과를 쉽게 이해할 수 있어요.
  • 문규 : 제가 이해한 것을 정리해볼게요. 탄탄한 Infra기술로 뒷받침할 수 있는 능력과 테이블 설계 능력 그리고 데이터 분석능력이 필요하네요;;; 혼자서는 무리에요.

다른 곳도 DW를 사용하고 있나요?

혼자서는 무리인건 당연하고, 정말 경험이 많은 분들이 계셔야 시스템을 구축할 수 있을 것 같은데, 또 어떤 회사에서 사용하고 있을까요? 마이클??

  • 마이클 : 국내에서 얼마나 DW를 잘 활용하고 있는지는 모르겠지만, 미국 주요 IT회사들은 대기업뿐 아니라 주요 스타트업들도 대부분 DW를 구축하여 데이터 기반의 의사결정을 위한 도구로 사용하고 있어요.
  • 문규 : (끄덕끄덕)
  • 마이클 : 이전에는 HW기반의 DW Solution을 사용하는 경우가 많았는데, 최근에는 우리 처럼 Redshift를 사용하여 DW를 구축하는 사례들도 많이 늘어나고 있어요. 공식 사이트에서도 확인 할 수 있겠지만 다수의 Global IT업체들이 Redshift로 DW를 구축해서 활용하고 있어요. 망고플레이트와 비슷한 로컬 서비스 기반인 Yelp, Foursquare 에서 구축을 했고. 제가 근무 했던 Edmunds.com, 그 외 Coursera, Pinterest등의 업체들이 성공 사례로 소개 되어 있어요.

하나같이 어마어마한 곳들에서 사용중이시네요. 다르게 보면 저정도 규모로 성장하고 싶은 서비스라면 꼭 언젠가 도입해야겠다는 이야기도 될 수 있겠네요. 모두들 화이팅!!

마무리 할 시간 입니다.

망고플레이트의 데이터 웨어하우스는 아직 완성된게 아니랍니다. 팀 내부에서 생기는 요구사항에 맞춰서 끊임없이 진화할 예정이에요. 이번글은 현재 상태를 보여드린 것이고, 새로 변할때마다 여러분들께 소개해드리겠습니다. 이런 변화에 참여하고 싶으신분들은 구인공고(Data analyst, Server-side software engineer)를 확인해주세요. 언제나 열려있답니다.

그리고 AWS 서비스를 사용할 수 있었던 환경이 아니었다면 이글을 쓰지 못했을 것 같습니다. 저희 망고플레이트에 AWS 서비스를 제공해주시는 Bespin Global에 감사의 말씀을 전하고 싶습니다. :)

처음 시작에서 말씀 드린것처럼, 이글을 통해서 무럭무럭 자라나고 있는 다른 서비스에도 도입하려는 계기가 되었으면 합니다. 현재 DW가 구축되어 있는 서비스 운영중이신 분들의 이야기도 들렸으면 해요.

긴 글 읽어주셔서 감사합니다. 다음에 더 재밌고 유용한 글로 찾아 뵙겠습니다 :)