728x90

이번에 읽고 정리할 책은 "빅데이터를 지탱하는 기술" 이다.

빅데이터 시대가 대두하면서, 데이터 관련 업종 및 기술도 크게 떠오르고 있다보니, 데이터 관련 공부를 하기 전에 시장에서의 빅데이터는 어떠한 지, 이와 관련된 데이터 기술은 어떠한 것들이 있는지에 대해서 정리하면 좋겠다 싶어서, 여기저기서 추천받은 이 책을 읽어보고 정리해 보려 한다. 

 

Intro

하드웨어의 발전이 이루어 지면서 이를 뒷받침 하여 소프트웨어 발전이 이루어 졌고, 이는 시스템이란 이름 하에 기술적 발전이 이루어졌다. 이러한 시스템들이 작동할 때마다 데이터를 만들어 내는데, 이 데이터를 토대로 무슨 일이 일어나고 있는지를 파악할 수 있고 더 나아가, 앞으로 시스템을 어떻게 운영할 지에 대한 전략을 세울 수 있게 된다. 

 

실제로 눈에 보이는 것과 달리, 이렇게 데이터를 통해 무언가를 하기 위해서는 데이터 자체에 대한 가공이 이루어 져야 한다. 즉 데이터를 어떻게 활용할 지가 아닌, 데이터 자체를 어떻게 전달하고 처리하고 보관할 지에 대한 엔지니어 적인 고민이 중요한 것이다. 이 책은 이러한 엔지니어 적인 부분에 대한 기술적인 고민을 다루었다. 

 

가령 커머스에서 물건을 구매할 때, 배후에서는 결제, 재고관리, 배송 등 다양한 시스템이 연결되어 작동한다. 이러한 시스템들은 데이터를 생성하고, 이러한 데이터를 토대로 현 상황을 파악하고 다음의 지시가 담긴 사이클을 자동화하고, 이 프로세스를 다시 시스템에 통합해서 새로운 작업의 효율화를 꾀할 수 있다. 

 

앞으로 데이터를 활용해 업무를 개선하거나 데이터처리 그 자체를 시스템 일부로 하는 일이 증가할 것이다. 
다수의 장치에서 데이터를 수집하기 위한 구조는 빅데이터 기술의 근간이 되어, 실시간 메시지전달, 중복제거 그리고 분산스토리지 등이 중요한 개념으로 작용된다.

 

CH 01. 빅데이터의 기초 지식

1-1. 빅데이터의 정착

* ~2011년 : 하둡이나 NoSQL 데이터 베이스 등 기반 기술의 발전
* ~2012년 : 클라우드 방식의 데이터 웨어하우스나 BI 도구의 보급
* 2013년~ : 스트림처리, 애드 혹(adhoc) 분석 환경의 확충

분산시스템에 의한 데이터 처리의 고속화

- 빅데이터의 취급하기 어려운 점을 극복한 두 가지 대표 기술

 

데이터 처리 분산 시스템을 도입하면서 말그대로 Big데이터 즉, 많은 양의 데이터를 처리 가능하게 하면서 빅데이터라는 용어가 화두에 오를 수 있게 되었다.

그러나 현재까지도 '빅데이터의 기술이 큰 어려움 없이 안심하고 사용할 수 있다'고 말하기는 어려운 상황이며, 실제로 '데이터를 모아서 무엇을 할 것인가?'에 대해서도 명확하게 해답을 내리기 어려운 상황이다. 

 

실제로 내가 데이터 분야에 들어와서 공부를 할 때마다 느껴지는 의문점이다. 그 많은 비용과 노력을 들여서 데이터 플랫폼을 구축하는 이유는 무엇인가? 단순히 유저 분석등에 활용하기에는 이미 좋은 Saas 툴이 많다. 
즉 빅데이터시대가 오면서 데이터의 중요성이 대두되었고, 이를 효율적으로 처리해야한다는 중요성 또한 인지되고 있지만 여전히, 그 이후에 대해서는 명확하게 목표가 잡혀있지 않다. 

 

가장 처음으로 NoSql , Hadoop 등장. 즉 기존의 정형화된 데이터 뿐 아니라 비정형화된 데이터를 대량으로 다룰 수 있는 시스템이 필요했고, 이러한 처리 엔진 시스템인 Hadoop이 등장한 것.

 

Hadoop(이하 하둡)은 다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템이다. 대량의 데이터를 처리하기 위해 이를 저장해 둘 스토리지와 데이터를 순차적으로 처리할 수 있는 구조가 필요하다. 이를 위해서는 수 백, 수 천대의 컴퓨터가 이용되어야 하며, 하둡은 이를 관리하기 위한 프레임 워크이다. 

초기에는 하둡에서 분산 처리 프레임 워크인 MapReduce를 동작시키려면 해당 내용을 자바 언어로 프로그래밍 해야 했다. 그래서 활용도가 좋지 못했다. 그래서 SQL과 같은 쿼리 언얼르 하둡에서 실행하기 위한 소프트웨어로 Hive가 개발되어 출시 되었다. 이에 대한 도입으로 별도의 프로그래밍없이 데이터를 집계할 수 있게 되었다.

 

NoSQL은 빈번한 읽기/쓰기 및 분산처리에 강점이 있어서, 전통적인 RDB의 제약을 제거하는 것을 목표로 사용되기 시작했다. 

 

NoSQL과 합쳐져서 NoSQL로 데이터를 기록하고 하둡으로 분산처리 하는 시스템에 2011년 후반 즈음에 정착하게 된다. 

-> 하둡은 저장 후 집계를 분산처리하기 위함. NoSQL은 온라인으로 접근 시 분산작업을 하기 위함

 

분산시스템의 비즈니스 이용개척

 

기존에 대량의 데이터를 이미 DWH(data warehouse) - 엔터프라이즈 데이터 웨어하우스 에서 처리하고 있었으나, 확장성등을 고려하면 하드웨어까지 교체해야하는 DWH보다는 하둡이 빅데이터 처리에는 더 용이했다. 따라서 대량의 데이터 처리를 하둡에서 전처리 및 저장하고, 정말 중요한 데이터만을 DWH에 저장하여 분석에 활용하는 식으로 하둡은  DWH의 부하를 줄여주었다. 

 

직접 할 수 있는 데이터 분석 폭 확대

-클라우드 서비스와 데이터 디스커버리로 가속하는 빅데이터의 활용

 

다양한 클라우드 서비스가 등장했으며, 대표적으로 aws나 구글에서 하둡을 실행할 수 있는 클라우드 서버를 제공하거나 데이터웨어하우스 자체를 서비스로 제공하기 시작했다.

(aws EMR / redshift , 구글 bigquery/Azure HDInsight)

스몰데이터란 빅데이터와 비교하여 기존 기술을 이용해서 취급할 수 있는 작은 데이터들이다. 가령 한 대의 노트북에서 큰 부담없이 처리할 수 있는 작은 데이터다. 레코드 수로는 약 수백만에서 수천만 건, 데이터양으로 따지면 '수GB'까지이다.

스몰데이터도 빅데이터처럼 중요한 데이터다. 빅데이터의 경우, 과거에는 기술적으로 버릴 수 밖에 없는 데이터였지만, 기술의 발전으로 처리할 수 있게 된 것이고, 데이터 분석 방법은 스몰데이터 시절부터 이미 존재했다. 스몰데이터는 일반적으로 사내에서 작업되는 엑셀파일, 웹에서 다운로드한 csv 파일등이다.

스몰데이터의 기술은 데이터 양이 증가하면 처리 시간이 급격히 증가하지만 빅데이터는 시간의 증가는 억제되지만, 사실 데이터 양이 적은 상황에서는 크게 효율적인 기술은 아니다. 

빅데이터 기술이 등장하면서, 저장된 데이터를 시각화하는 방법으로 데이터 디스커버리가 인기를 끌게 되었다. 

'대화형으로 데이터를 시각화하여 가치있는 정보를 찾으려고 하는 프로세스'를 의미하며, 또 다르게는 '셀프 서비스용 BI도구'로 불린다. 

기존의 BI도구는 사내에서 지표를 시각화하여 볼 수 있는 도구를 의미하며, 셀스서비스용 BI도구는 단순히 조직을 넘어서 개인이 쉽게 도입하여 각 데이터에 접근하여 시각적으로 볼 수 있는 도구를 의미한다. 

 

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

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

 

빅데이터의 기술

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

 

데이터 파이프라인은 어디서 데이터를 수집하여 어떻게 가공하고 전달하는 지에 대한 개념이다. 처음에는 간단할 지 몰라도 점차적으로 어떻게 조합할 지에 따라서 복잡해진다.

데이터 파이프라인의 시작은 데이터를 모으는 즉, 수집부터 시작한다. 데이터는 여러 장소에서 발생하고 각각 다른 형태를 보인다. 데이터 베이스부터, 임베디드 장비에서 보내진 센서 데이터 등 각각 서로 다른 기술로 데이터를 전송한다. 

데이터 수집에에서 데이터를 전송하는 방법은 크게 다음의 두가지가 있다. 크게 벌크형 배치처리와 스트림처리로 나뉜다.

- 벌크형 배치 처리 : 이미 어딘가에 존재하는 데이터를 정리해서 추출하는 방법. 데이터 베이스와 파일 서버등에서 정기적으로 데이터를 수집하는 데에 사용. 

- 스트리밍 형 처리 : 생성되는 데이터를 끊임없이 계속해서 보내는 방법. 모바일 애플리케이션, 임베디드 장비 등에서 널리 데이터를 수집하는 데 사용.

 

기존에는 데이터웨어하우스에서 다루는 데이터를 전송하기 위해 벌크형 배치 처리 방법을 주로 이용했다. 그러나 실시간 데이터 처리를 해야할 필요성이 대두되면서 스트림처리를 주류로 사용하기 시작했다. 

그러나 장기적인 데이터 분석을 위해서는 스트림 처리 또한 적합하지 않다. 따라서 이런 경우에도 분산 시스템이 적절하며, 스트림 데이터라도 장기적으로 정리된 데이터를 효율적으로 가공 하려면 배치처리가 적절하다, 

분산 스토리지 : 여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템
객체 스토리지 : 한덩어리로 모인 데이터에 이름을 부여해서 파일로 저장하며 대표적으로 S3

분산 스토리지 즉 여러 컴퓨터에 데이터를 분산하여 저장했다면, 이를 처리하기 위해서는 분산데이터 처리의 프레임워크가 필요하다. 대표적으로 맵리듀스가 있다. 분산 데이터 처리의 역할은 나중에 분석하기 쉽도록 데이터를 가공해서 그 결과를 외부 데이터 베이스에 저장하는 것이다. 

 

스토리지에 저장된 데이터를 집계하기 위해서는 두가지 방법이 있는데,

1. 분산 스토리지 상의 데이터를 SQL로 집계하기 위해 쿼리엔진을 도입하는 것. 대표적으로 하이브

2. 외부의 데이터웨어하우스(MPP 데이터베이스)를 사용하는 것. 이를 위해서는 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한 형식으로 변환한다. 

이 일련의 절차가 ETL 프로세스 이다. 

기본적으로 데이터 파이프라인은 RDB, csv 파일 등 실질적인 서비스에 활용된 로우 데이터들이 모여있는 데이터 소스에서 데이터를 추출(Extract), 가공(transform),  로드(load) 되어 데이터 웨어하우스에 쌓이게 된다.

이러한 전체 데이터 파이프라인 동작을 관리하기 위해서 워크플로 관리 기술을 사용한다. 정해진 시간에 배치처리를 스케줄 대로 실행하고 오류 발생시 통지하는 목적으로 사용된다. 이러한 워크플로를 도입하면 데이터 파이프라인 작업이 자동화 되게 되는데, 이를 도입하게 되면 엔지니어링 적인 요소가 필요해지므로, 꼭 필요하지는 않다.(하지만 결국 자동화해서 장기적으로 운용하려면 필요하다.)

데이터 웨어하우스는 분석을 위한 데이터 장기 보관소라서, 데이터가 늘어나면 실질적으로 데이터 웨어하우스에서 바로 데이터를 꺼내가서 분석하기에는 용이하지 않다. 즉 소량의 데이터를 자주 쓰고 읽는 데는 적합하지 않다. 

이를 위해 데이터 웨어하우스에서 실질적으로 사용하는 데이터만을 뽑아서 데이터마트를 구축하기도 한다. 복잡한 데이터 분석을 작업해야 하는 경우에는 데이터 마트를 우선 구축하는 것이 중요하다. 

데이터 웨어하우스나 데이터마트 둘다 테이블 설계를 제대로 정한 후에 데이터를 투입해야 한다.

실제로 데이터의 종류가 다양하고 그 양 또한 커져가며, 데이터 웨어하우스가 아닌 데이터 레이크라는 개념을 장기적인 저장소 개념으로 활용하기도 한다. 형태에 상관없이 모든 데이터를 원래의 형태로 축적해두고 나중에 그것을 필요에 따라 가공하는 구조가 필요하며, 이러한 모든 데이터를 우선 저장해 두는 곳이 데이터 레이크가 되는 것이다. 

 

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

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

 

데이터 파이프라인 작업과 관련하여 시스템의 구축 및 운용, 자동화 등을 담당하는 데이터 엔지니어와 데이터에서 가치있는 정보를 추출하는 데이터 분석가는 요구되는 지식이 다르다. 

로드된 데이터들에 대해서 일회성 데이터 분석이라는 의미로 애드혹 분석 또한 중요한 작업 중 하나이다. 대시보드 작업 또한 비슷한 의미에서 이루어 지는데 보통 데이터 마트없이 데이터레이크나 웨어하우스에 직접적으로 연결해서 작업하는 경우도 꽤 있다. 

 

데이터 파이프라인의 핵심

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

데이터를 수집하는 목적

- 검색, 가공, 시각화

 

데이터 파이프라인의 목적은 크게 검색, 가공, 시각화 이다. 

데이터 검색은 대량의 데이터들 중에서 내가 찾고자 하는 데이터를 쉽게 파악하기 위해 필요한 기능이다. 핵심은 필요할 때 신속하게 검색할 수 있도록 해야한다. 

데이터가공은 말그대로 활용하기 좋도록 처리하는 것인데, 자동화가 핵심이다. 보통 시스템 개발 영역에 해당한다. 

 

기간계 시스템 : 비즈니스 근간에 중요한 시스템, 이것이 정지되면 업무가 멈춘다. 
정보계 시스템 : 사내 커뮤니케이션과 의사결정등에 이용되는 시스템. 

데이터를 취급하는 시스템은 위의 두 종류를 잘 구분하여 데이터를 활용해야 한다. 

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

 

확증적 데이터 분석 : 가설을 세우고 그것을 검증 / 통계학적 모델링에 의한 데이터 분석

탐색적 데이터 분석 : 데이터를 보면서 그 의미를 읽어내려고 함. / 데이터를 시각화하여 사람의 힘으로 그 의미를 읽는 것.

 

1-3. 스크립트 언어에 의한 특별 분석과 데이터 프레임

데이터 처리와 스크립트 언어

 

보통 R과 파이썬이 여러 데이터 소스에서 전송된 데이터를 전처리하는데 활용된다. 

  • R은 통계 분석에 특화되어있다. 반면에 파이썬은 좀더 범용적이라 여러 라이브러리를 손에 넣을 수 있다. 
  • 또한 R에서 사용하는 데이터 프레임의 모델을 파이썬에서 판다스를 통해 사용할 수 있다.

데이터 프레임

-배열 안의 배열로부터 작성

 

데이터 프레임은 표 형식의 데이터를 추상화한 객체이다. 가령 스프레드 시트에 있어 하나의 시트, 데이터베이스에서 하나의 테이블을 통째로 하나의 객체로 취급한다고 생각하면 된다. 

표형식의 데이터는 가로와 세로의 2차원 배열로 나누어져 있고 배열안의 배열을 준비하면 데이터 프레임을 만들 수 있다. 

 

보통 스몰데이터를 통해 데이터 프레임을 만들어서 데이터를 분석하려 할때 판다스나 sql을 활용한다.

 

728x90

+ Recent posts