데이터 분석가, 데이터 엔지니어와 말이 통하려면 이 정도는 알아야죠
우리는 주로 BI 툴이나 대시보드 툴을 통해 데이터를 확인하고 분석합니다. 하지만 이 데이터, 어디서 어떻게 처리되는지 알고 있나요?
필요한 데이터를 원하는 대로 활용하려면 데이터 파이프라인과 데이터 처리 방식에 대해 알아둘 필요가 있습니다. 그런 뒤에 효율적인 데이터 수집 방식이나 활용 방법을 고민한다면 좋겠죠. 분석가, 엔지니어와도 수월하게 대화할 수 있을 거고요. BI를 설계할 때에도 데이터 파이프라인을 꼭 알아둬야 합니다.
이번 글은 책 <빅데이터를 지탱하는 기술>을 읽고 일부 내용을 정리하고 보충하여 작성된 글입니다.
목차
- 빅데이터는 무엇일까?
- 빅데이터는 왜 주목받게 되었을까?
- 데이터 파이프라인은 무엇일까?
- (1) 데이터 웨어하우스를 주축으로 한 데이터 파이프라인
- (2) 데이터 레이크를 주축으로 한 데이터 파이프라인
빅데이터는 매우 크고 복잡한 데이터셋을 의미합니다. 이러한 데이터는 일반적으로 기존 데이터베이스 관리 도구로는 처리하기 어렵거나 불가능한 정도로 방대하며, 여러 컴퓨터로 분산 처리됩니다. 빅데이터는 일반적으로 3V라고 불리는 Volume(양), 속도(Velocity), Variety(다양성)의 특성을 가지고 있습니다.
Volume(양) : 빅데이터는 기존 데이터보다 훨씬 많은 양의 데이터를 다룹니다. 대용량의 데이터는 수십 테라바이트에서 수십 페타바이트에 이를 수 있습니다.
Velocity(속도) : 빅데이터는 높은 속도로 생성되고 처리되어야 합니다. 대용량 데이터를 빠르게 수집하고 처리하며, 실시간으로 데이터를 분석하고 대응해야 합니다.
Variety(다양성) : 빅데이터는 여러 종류의 데이터 형태와 소스를 다룹니다. 정형, 비정형, 반정형 데이터 등 다양한 형태의 데이터를 다루어야 하며, 소셜 미디어, 센서 데이터, 웹 로그 등 다양한 소스에서 데이터를 수집합니다.
기존에는 빅데이터를 모두 처리할 수 있는 기술이 없었습니다. 하지만 기술이 발전하면서 빅데이터도 모두 처리할 수 있게 되었고 그간 주목받지 못했던 빅데이터가 빛을 보게 된 거지요.
2009년 아마존의 Elastic MapReduce 발표를 시작으로 구글의 BigQuery, 마이크로소프트의 HDInsight, 아마존의 Redshift 등의 클라우드 서비스가 출시되었습니다. 이들은 모두 데이터 처리를 위한 클라우드 서비스였죠. 이러한 클라우드 서비스의 보급은 큰 변화를 만들어냈습니다. 예전에는 대기업의 IT 부서에서 상당한 리소스를 들여 구축해야 하던 데이터 웨어하우스도 이제는 작은 프로젝트 단위에서도 구축할 수 있게 되었고 자체적인 데이터 분석 기반을 마련하기 쉬워졌어요.
데이터 파이프라인(Data pipeline)은 차례대로 전달해 나가는 데이터로 구성된 시스템입니다. 데이터의 원천부터 시작하여 필요한 데이터를 추출하고, 그 데이터를 정제하고, 변환하고, 분석하고, 저장하고, 전달하는 과정을 포함합니다. 또한 어디에서 데이터를 수집하고 무엇을 달성하고 싶은지에 따라 그 구성이 변화합니다.
책 <빅데이터를 지탱하는 기술>에서는 '데이터 웨어하우스를 주축으로 한 데이터 파이프라인'과 '데이터 레이크를 주축으로 한 데이터 파이프라인', 이렇게 2가지를 소개하고 있어요. 보다 자세한 내용은 뒤에서 마저 다루겠습니다.
벌크형(bulk)은 이미 존재하는 데이터를 정리해 추출하는 방법입니다. 데이터베이스와 파일 서버 등에서 정기적으로 데이터를 수집할 때 사용합니다. 스트리밍형(streaming)은 차례대로 생성되는 데이터를 끊임없이 연속적으로 보내는 방법인데요. 모바일 앱이나 임베디드 장비 등에서 데이터를 수집하는 데에 사용합니다.
스트림 처리는 스트리밍형으로 수집된 데이터를 처리하는 방식입니다. 실시간 데이터 분석에 적합해요. 배치 처리는 대량의 데이터를 저장하고 처리하는 방식이며, 장기적 데이터 분석에 적합합니다.
분산 스토리지는 여러 컴퓨터와 디스크로 구성된 스토리지 시스템으로, 데이터가 수집되면 분산 스토리지 시스템 내 여러 곳에 나뉘어서 저장됩니다. 분산 스토리지의 대표적인 예시가 객체 스토리지인데, 폴더와 같이 한 덩어리로 모인 데이터에 이름을 부여해 파일을 저장하는 방식입니다. 아마존의 S3가 이 방식을 따른다고 하네요. 그 밖에도 NoSQL 데이터 베이스를 분산 스토리지로 사용하기도 합니다.
여러 곳에서 데이터를 가져와서 클러스터에서 분산하여 데이터 처리를 합니다. 이때 클러스터는 한 대의 컴퓨터처럼 운영되는 다수의 컴퓨터 집단이에요. 분산 데이터 처리를 통해서 외부 DB(시계열 DB나 데이터 마트)에 저장해 두면 그때그때 필요한 데이터를 빠르게 찾아서 분석에 쓸 수 있습니다.
빅데이터 처리에는 크고 작은 시스템 장애가 생기기도 합니다. 데이터 파이프라인이 복잡해지면서 각 과정에서의 정상 동작 여부를 확인하기가 까다로워지고요. 데이터 파이프라인의 전체 동작을 관리하려면 정해진 시각에 정확하게 실행되는지, 혹시 오류가 생기진 않았는지 알려주는 도구가 필요합니다. 이때 쓰이는 것이 워크플로 관리 기술이에요. 매일 정해진 시각에 배치 처리를 실행하고, 오류가 발생하면 관리자에게 알람을 보내주는 방식이지요. 자동화와도 관련이 높습니다.
데이터 웨어하우스(Data warehouse)는 기업이나 조직에서 사용하는 모든 데이터를 한 곳에 모아서 관리하고 분석하는 시스템이라고 할 수 있습니다. 데이터의 크기와 다양성이 증가하면 이를 일일이 분석하기 위해서는 많은 시간과 비용이 소요되는데요, 데이터 웨어하우스는 데이터를 중앙 집중적으로 저장하여 효율적으로 분석할 수 있도록 해줍니다.
ETL 프로세스는 데이터를 추출하고(Extract), 가공한 후(Transform) 로드(Load) 하는 처리 방식입니다. 다양한 데이터 원천으로부터 데이터를 추출 및 변환해서 운영 데이터 스토어(ODS), 데이터 웨어하우스(DW), 데이터마트(DW) 등에 데이터를 적재하는 작업의 핵심 구성요소입니다.
일반적으로 사용하는 RDB(관계형 데이터베이스)나 로그를 저장하는 파일 서버를 데이터 소스라고 부르는데요. 데이터 소스에 보존된 raw data(원시데이터)를 가지고 ETL 프로세스를 거쳐 데이터 웨어하우스에 장기 보존용으로 저장하게 됩니다. (여기까지가 위 그림에서 1번에 해당합니다.)
한편, 대량의 데이터가 저장된 만큼 과부하가 생길 수 있어 데이터 웨어하우스는 아무 때나 함부로 사용할 수 없다는 한계가 있습니다. 여기에서 문제가 생기죠. 데이터 기반의 의사결정을 위해서는 시시때때로 데이터 분석을 위한 데이터 처리가 필요하니까요. 그럼 어떻게 해야 데이터 웨어하우스의 부하를 최소화하면서 원하는 데이터를 보다 편리하게 얻을 수 있을까요?
이를 위해 존재하는 것이 데이터 마트(Data mart)입니다. 데이터 마트는 특정 주제나 비즈니스 프로세스에 관한 정보를 중심으로 구성되며, 데이터 웨어하우스보다는 작고 더 특화된 데이터 저장소입니다. 데이터 웨어하우스에서 필요한 데이터만을 추출하여 데이터 마트가 만들어져요. (여기까지가 위 그림에서 2번에 해당합니다.)
예를 들어, 마케팅 부서에서 사용하는 고객 정보나 판매 분석 데이터, 재고 관리 등과 같은 데이터를 모아서 구성된 마케팅 데이터 마트를 제공하게 되는 거지요. 마케팅 데이터 마트 예시를 보니 번뜩 생각나는 것이 있습니다. '추이를 한눈에 알아보기 쉽게 그래프로 볼 수는 없을까?'
실제로 데이터 마트는 데이터를 시각화하는 데에도 사용됩니다. BI 툴(예를 들면 태블로)과 연동해서 활용하게 되지요. 이때 기억해야 하는 것은 미리 시각화에 적합한 형태로 테이블을 준비해야 BI 툴로 데이터를 보기 용이하다는 겁니다. (여기까지가 위 그림에서 3번에 해당합니다.)
데이터 웨어하우스를 주축으로 하는 파이프라인에서는 테이블 설계와 ETL 프로세스가 중요하다.
데이터가 생성되는 곳이 제각각인 만큼 모든 데이터를 있는 그대로 데이터 웨어하우스에 넣을 수 없을 때가 생기기도 합니다. 이럴 때 모든 데이터를 원래의 형태로 축적해 나중에 필요에 따라 가공하는 구조가 필요해지게 됩니다. 이게 바로 데이터 레이크(Data lake)의 출발이에요.
여러 곳에서 물이 흘러들어와 모이는 호수처럼, 여러 곳에서 데이터가 흘러들어오고, 이걸 그대로 보존하는 것이 데이터 레이크입니다. 임의의 데이터를 저장할 수 있는 분산 스토리지가 이 역할을 하게 되고, 여기에 미가공의 로우 데이터를 그대로 저장합니다. (여기까지가 위 그림의 1번에 해당합니다.)
데이터 레이크에 저장된 데이터를 데이터 마트로 추출할 때에는 Hadoop, Spark와 같은 분산 데이터 처리 기술을 활용하고, 이 과정은 ETL 처리입니다. (여기까지가 위 그림의 2번에 해당합니다. 그 외에 위 그림의 3번은 데이터 웨어하우스를 주축으로 하는 데이터 파이프라인과 동일합니다.)
새로운 도구와 서비스가 계속해서 개발되고 있지만, 데이터 파이프라인 전체의 기본적인 흐름은 변하지 않는다. 이 책에서는 데이터를 모아서 축적하고 이를 통합하여 데이터 마트로 만들고 시각화 도구에서 접속하는 것이 큰 흐름이다.
- <빅데이터를 지탱하는 기술, p.21>
이번 글은 애당초 저의 공부를 위해 작성한 글이었습니다. 데이터 파이프라인에 관심을 갖게 된 계기는 회사 업무였는데요, BI 툴 구축 프로젝트에 들어가기 전에 DBA분께 데이터 웨어하우스와 데이터 마트에 대해 배울 기회가 있었어요. BI 툴에서 보는 데이터가 어떤 경로를 거쳐 거기까지 도달하는지 알게 되었는데, 새로운 지식을 알게 되어 무척 신나고 재미있더군요. 이후에 개인적으로 더 공부하고 정리해보고 싶어서 책 <빅데이터를 지탱하는 기술>을 읽고 이 글을 발행하게 되었습니다.
글을 작성하는 동안 책에서 배운 내용을 제 나름의 방식으로 재구성하고 제 언어로 다듬으며 지식들을 습득할 수 있었어요. 데이터 분석 기반을 보다 깊이 있게 알게 되었고, 이후에도 데이터 분석가나 데이터 엔지니어, DBA분들과 커뮤니케이션할 때 도움이 될 것 같습니다.
최근에 BI 툴과 관련해 동료 프로덕트 매니저분들과 대화를 나눈 적이 있었는데요, 다들 BI 툴을 이해하고 잘 활용하고 싶어 하시더라고요. 그렇다면 그 데이터가 어디에서 어떻게 처리되는지도 궁금한 분들이 있겠다 싶었습니다. 그런 분들에게 이 글이 조금이나마 도움이 되기를 바라며 마칩니다.