빅데이터를 지탱하는 기술 - 빅데이터 시대의 데이터 분석 기반

제 마음대로 요약하고 정리하는 것이라 빠진 내용들이 많습니다. 시간적 여유가 있으시면, 책을 구매하셔서 읽어보시는 것을 권유드립니다.

1. 빅데이터 시대의 데이터 분석 기반

빅데이터 기술이 기존의 데이터 웨어하우스와 다른 점은 다수의 분산 시스템을 조합하여 확장성이 뛰어난 데이터 처리 구조를 만든다는 점이다.

A. [재입문] 빅데이터의 기술

분산 시스템을 활용해서 데이터를 가공해 나가는 구조

이 책에서 다루는 빅데이터 기술이란 분산 시스템을 활용하면서 데이터를 순차적으로 가공해 나가는 일련의 구조다.

a. 데이터 파이프라인

데이터 수집에서 워크플로 관리까지

b. 데이터 수집

벌크 형과 스트리밍 형의 데이터 전송

데이터 전송(data transfer) 의 방법은 크게 두 가지가 있다.

c. 스트림 처리와 배치 처리

기존의 데이터 웨어하우스에서 다루는 데이터는 주로 벌크 형 방법이 이용되었다.

빅데이터의 세계에서는 모바일 애플리케이션 등의 증가로 스트리밍 형 방법이 주류가 되고 있다.

  • 스트림 처리(stream processing)
    • 스트리밍 형 방법으로 받은 데이터는 실시간으로 처리하고 싶어진다.
title: 예시

과거 30분간 취합한 데이터를 집계하여 그래프를 만들려면, **시계열 데이터베이스(time-series database)** 와 같은 실시간 처리를 지향한 데이터베이스가 자주 사용된다.

스트림 결과를 시계열 데이터베이스에 저장함으로써, 지금 무슨 일이 일어나고 있는지 즉시 알 수 있다.

스트림 처리는 데이터양이 많기 때문에 장기적인 데이터 분석에는 적합하지 않다.

장기적인 데이터 분석을 위해서는 보다 대량의 데이터를 저장하고 처리하는 데 적합한 분산 시스템이 좋다. 거기에 필요한 것은 스트림 처리가 아닌, 어느 정도 정리된 데이터를 효율적으로 가공하기 위한 배치 처리(batch processing) 구조다.

d. 분산 스토리지

객체 스토리지, NoSQL 데이터베이스

수집된 데이터는 분산 스토리지(여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템) 에 저장된다.

데이터를 저장하는 방법 중 대표적인 것이 객체 스토리지(object storage) 로 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장한다.

title: 예시

Amazon S3

NoSQL 데이터베이스를 분산 스토리지로 사용할 수도 있다. 애플리케이션에서 많은 데이터를 읽고 쓰려면 NoSQL 데이터베이스가 성능 면에서 우수하다. 단, 나중에 데이터용량을 얼마든지 늘릴 수 있는 확장성이 높은 제품을 선택해야 한다.

e. 분산 데이터 처리

쿼리 엔진, ETL 프로세스

분산 스토리지에 저장된 데이터를 처리하는 데는 분산 데이터 처리(distribute data processing) 의 프레임워크가 필요하다. 이 부분에서 MapReduce가 사용되며, 데이터양과 처리의 내용에 따라 많은 컴퓨터 자원이 필요하게 된다.

분산 데이터 처리의 주 역할은 나중에 분석하기 쉽도록 데이터를 가공해서 그 결과를 외부 데이터베이스에 저장하는 것이다.

  • 빅데이터를 SQL로 집계하는 방법
    1. 분산 스토리지 상의 데이터를 SQL로 집계하기 위해 쿼리 엔진(query engine) 을 도입하는 것.

      title: 예시
      
      Hive
      
      
      • 현재는 Hive보다도 고속인 대화형 쿼리 엔진(interactive query engine) 도 개발되었다.
    2. 외부의 데이터 웨어하우스 제품을 이용하는 것.

      • 분산 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한 형식으로 변환한다. (이 절차를 ETL(extract-transform-load) 프로세스라고 한다.)

f. 워크플로 관리

전체 데이터 파이프라인의 동작을 관리하기 위해서 워크플로 관리(workflow management) 기술을 사용한다. 매일 정해진 시간에 배치 처리를 스케줄대로 실행하고, 오류가 발생할 경우 관리자에게 통지하는 목적으로 사용된다.

데이터 파이프라인이 복잡해짐에 따라, 그것을 한 곳에서 제어하지 않으면 전체의 움직임을 파악하는 것이 곤란해진다. 빅데이터의 처리에는 크건 작건 간에 시스템 장애가 발생하므로 오류 발생 시의 처리와 다시 처리하기 위한 기능을 만드는 것을 빼놓아서는 안된다.

B. 데이터 웨어하우스와 데이터 마트

데이터 파이프라인 기본형

데이터 파이프라인의 기본형으로 기존 방식대로의 데이터 웨어하우스를 구축하는 프로세스부터 살펴보자.

  • 데이터 웨어하우스
    • 웹 서버나 업무 시스템에서 이용되는 일반적인 RDB와는 달리 대량의 데이터를 장기 보존하는 것에 최적화되어 있다.

    • 정리된 데이터를 한 번에 전송하는 것은 뛰어나지만, 소량의 데이터를 자주 쓰고 읽는 데는 적합하지 않다.

      title: 예시
      
      업무 시스템에서 꺼낸 데이터를 하루가 끝날 때 정리하여 쓰고, 이것을 야간 시간대에 집계해서 보고서를 작성한다.
      
      

데이터 웨어하우스 구축에는 ETL 도구라는 전용 소프트웨어가 자주 이용된다.

데이터 웨어하우스는 아무때나 함부로 사용해 시스템에 과부하를 초래하는 것은 곤란하다. 따라서, 데이터 분석과 같은 목적에 사용하는 경우에는 데이터 웨어하우스에서 필요한 데이터만을 추출하여 데이터 마트(data mart) 를 구축한다.

데이터 마트는 BI 도구와 조합시키는 형태로 데이터를 시각화하는 데에도 사용된다.

C. 데이터 레이크

데이터를 그대로 축적

모든 데이터를 원래의 형태로 축적해두고 나중에 그것을 필요에 따라 가공하는 구조가 필요하다. 빅데이터의 세계에서는 여러 곳에서 데이터가 흘러들어 오는 데이터를 축적하는 호수에 비유해 데이터의 축적 장소를 데이터 레이크(data lake) 라고 한다.

데이터 레이크는 미가공의 원시 데이터를 그대로 저장소에 저장한다는 점이 데이터 웨어하우스와 다르다.

a. 데이터 레이크와 데이터 마트

필요한 데이터는 데이터 마트에 정리

데이터 레이크는 단순한 스토리지이며, 그것만으로는 데이터를 가공할 수 없다. 그래서 MapReduce 등의 분산 데이터 처리 기술을 사용한다. 데이터 분석에 필요한 데이터를 가공, 집계, 데이터 마트로 추출한 후에는 데이터 웨어하우스의 경우처럼 데이터 분석을 진행할 수 있다.

D. 데이터 분석 기반을 단계적으로 발전시키기

팀과 역할 분담, 스몰 스타트와 확장

데이터 분석에 필요한 기술은 다방면에 걸쳐 있기 때문에 주로 팀을 이루어 작업한다. 특히, 시스템의 구축 및 운용, 자동화 등을 담당하는 데이터 엔지니어(data engineer) 와 데이터에서 가치 있는 정보를 추출하는 데이터 분석가(data analyst) 는 요구되는 지식뿐만 아니라 사용 도구도 다르다.

a. 애드 혹 분석 및 대시보드 도구

일회성 데이터 분석이라는 의미로 애드 혹 분석(ad hoc analysis) 라고 한다. SQL 쿼리를 직접 작성해서 실행하거나 스프레드시트에서 그래프를 만드는 것까지 포함해 모든 수작업이 애드 혹 분석에 포함된다.

애드 혹 분석에서는 데이터 마트를 만들지 않은 채 데이터 레이크와 데이터 웨어하우스에 직접 연결하는 경우가 많다. 이 부분에 있어 사용자는 작업하기 쉬운 환경을 선호한다. 쿼리를 실행해 결과를 즉시 확인할 수 있도록 대화형 분석 도구를 사용한다.

수작업으로 데이터 분석뿐만 아니라 정기적으로 그래프와 보고서를 만들고 싶을 때는 대시보드 도구를 도입하여 사용한다. 일부 대시보드 도구는 데이터 마트가 없어도 동작하도록 설계되어 있어 설정한 스케줄에 따라 데이터 레이크와 데이터 웨어하우스에 접속해 쿼리를 실행하고 그 결과로부터 그래프를 생성한다.

b. 데이터 마트와 워크플로 관리

복잡한 데이터 분석에서는 먼저 데이터 마트를 구축한 후에 분석하거나 시각화하도록 한다. 특히 시각화에 BI 도구를 사용할 경우는 집계 속도를 높이기 위해 데이터 마트가 거의 필수적이다. 데이터 마트 구축은 배치 처리로 자동화되는 경우가 많기 때문에 그 실행 관리를 위해 워크플로 관리 도구를 사용한다.

워크플로 관리를 도입하는 단계가 되면, 데이터 분석보다는 엔지니어링 작업이 많아진다. 그렇기 때문에 일손이 부족하지 않은 상황에서라면 워크플로 관리는 그다지 필요없다. 그러나 데이터 처리를 자동화해서 장기적으로 운용해 나가기 위해서는 안정된 워크플로 관리가 필수적이다.

ps. 데이터 파이프라인의 큰 흐름은 변하지 않는다.

도구 선택의 두 가지 힌트

빅데이터를 다루는 도구는 어떤 것을 선택해도 실제로 하는 일은 그다지 크게 다르지 않다. 달성하고자 하는 목표가 같으면 그다음은 절차상의 문제뿐이다. 기본적으로 다음 두 가지만 파악해두면 크게 문제 될 일은 없다.

  • 저장할 수 있는 데이터 용량에 제한이 없을 것
  • 데이터를 효율적으로 추출할 수단이 있을 것

새로운 도구와 서비스가 계속해서 개발되고 있지만, 데이터 파이프라인 전체의 기본적인 흐름은 변하지 않는다. 이 책에서는 데이터를 모아서 축적하고 이를 통합하여 데이터 마트로 만들고 시각화 도구에서 접속하는 것이 큰 흐름이다. 중요한 것은 이러한 데이터의 흐름을 만드는 것이며, 그 과정에서 사용되는 기술은 교환할 수 있다.

E. 데이터를 수집하는 목적

검색, 가공, 시각화의 세 가지 예

여기서는 예로써 3가지 패턴을 생각해본다.

a. 데이터 검색

데이터 검색으로 대량의 데이터 중에서 조건에 맞는 것을 찾고 싶은 경우가 있다. 언제 무엇이 필요할지조차도 모르기 때문에, 시스템 로그 및 고객의 행동 이력 등 발생하는 모든 데이터를 취득해 놓도록 한다.

title: 예시

어떤 시스템에 장애가 발생했을 때 그 원인을 특정하거나 고객으로부터 문의가 있으면 로그를 확인하는 것과 마찬가지다.

데이터 검색에 너무 많은 시간이 걸리는 것은 의미가 없고, 필요할 때 신속하게 검색할 수 있도록 해야 한다. 따라서, 시스템에는 실시간 데이터 처리나 검색 엔진을 사용하여 키워드를 찾는 기능이 필요하다.

b. 데이터의 가공

데이터 가공에 있어서는 업무 시스템의 일부로서 데이터 처리 결과를 이용하고 싶은 경우가 있다. 이 경우는 목적이 명확하기 때문에 필요한 데이터를 계획적으로 모아 데이터 파이프라인을 설계한다.

title: 예시

웹사이트에서 추천 상품을 제안하거나, 센서 데이터의 비정상적인 상태를 감지하여 통보하는 경우다.

데이터의 가공에는 자동화가 필수적이다. 따라서, 워크플로 관리를 도입하여 꼼꼼하게 테스트를 반복적으로 실행해서 시스템을 구축한다. SQL이 아닌 프로그래밍 언어를 사용하는 경우도 있다. 이것은 시스템 개발 영역에 해당한다.

c. 데이터 시각화

데이터 시각화로 데이터를 시각적으로 봄으로써 알고 싶은 정보를 얻는 경우가 있다. 통계 분석 소프트웨어나 BI 도구 등으로 그래프를 만들고 거기서 앞으로의 상황을 예측해 의사 결정에 도움이 되도록 하는 경우다.

데이터 시각화는 시행착오의 연속이며, 확실한 해답은 없다. 임의의 분석 환경을 갖추고 여러 번 데이터 집계를 반복한다. 시각화를 고속화하려면 데이터 마트도 필요하다. 또한, 집계 결과를 대시보드에 정리해서 계속 변화를 감시하고 싶을 때도 데이터 시각화는 필요하다.

이것 중에서 어느 것을 우선하는지에 따라 시스템 구성이 달라진다. 이 책에서는 주로 데이터 시각화를 우선 과제로 하고, 특정한 데이터 분석 환경의 정비 및 데이터 마트를 구축하는 파이프라인의 자동화를 다룬다. 시각화만이 데이터를 활용할 수 있는 수단은 아니지만, 시각화를 위해 필요한 기초 지식의 대다수는 다른 용도를 위해서도 응용할 수 있을 것이다.

ps. 기간계 시스템과 정보계 시스템을 분리하자.

컴퓨터 시스템은 종종 기간계 시스템(mission-critical system)정보계 시스템(information system) 으로 구분한다.

  • 기간계 시스템
    • 비즈니스 근간에 관련된 중요한 시스템으로 이것이 정지되면 업무가 멈추기 때문에 완벽하게 테스트를 반복하고 신중하게 운용해야 한다.
  • 정보계 시스템
    • 사내 커뮤니케이션과 의사 결정 등을 위해 이용하는 시스템으로, 이것은 정지되어도 그 영향 범위가 제한되어 있기 때문에 기간계 시스템만큼 엄격한 운영 정책을 갖고 있지는 않다.

데이터를 취급하는 시스템에서는 그것이 기간계 시스템인지 아니면 정보계 시스템인지를 구분해서 양자가 혼합되지 않도록 한다. 사내에서만 필요로 하는 기능을 기간계 시스템에 통합하면 그 운영 정책에 구속되어 나중에 업데이트하는 것이 어렵다. 데이터를 효율적으로 분석하려면 그것을 정보계 시스템으로 분리해야 한다.

데이터란 기간계 시스템과 정보계 시스템을 연결하는 것이다. 기간계 시스템은 그 실행 과정을 로그 파일이나 데이터베이스 등에 기록한다. 정보계 시스템은 데이터를 복사하는 데서부터 시작한다. 데이터 복사 없이는 정보계 시스템이 기간계 시스템에 연결되지 못한다. 기간계 시스템에 예상치 못한 부하가 걸리면 업무에 악영향을 미칠 가능성이 있다.

기간계 시스템 일부로 빅데이터를 통합하는 것이 아니라면, 데이터 분석 시스템은 원칙적으로 정보계 시스템으로 취급한다. 따라서 ,모든 데이터는 처음에 복사하는 것부터 시작한다. 동일한 데이터를 여러 번 꺼낼 수 있다고 단정할 수는 없으므로, 한 번 복사한 데이터는 지우지 않도록 주의해야 한다. 그 후에 필요한 데이터만을 가공하여 사용한다.

F. 확증적 데이터 분석과 탐색적 데이터 분석

일반적으로 데이터 분석이란 가설을 세우고 그것을 검증하는 확증적 데이터 분석(confirmatory data analysis) 과 데이터를 보면서 그 의미를 읽어내려고 하는 탐색적 데이터 분석(exploratory data analysis) 으로 나눌 수 있다.

확증적 데이터 분석은 주로 통계학적 모델링에 의한 데이터 분석이고, 탐색적 데이터 분석은 데이터를 시각화하여 사람의 힘으로 그 의미를 읽는다.

이 책에서는 탐색적 데이터 분석의 프로세스를 모두 데이터 탐색이라고 하고, 대화식으로 데이터를 집계하여 시각화하기 위한 환경을 만든다. 구체적으로는 스크립트 언어를 사용한 데이터 처리와 BI 도구를 사용한 데이터 디스커버리 등을 들 수 있다.

참고문헌

[1] 니시다 케이스케, 장성두 옮김, "빅데이터를 지탱하는 기술", 3쇄, 제이펍, 2021년

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.