AI, 데이터 분석 등 공부를 하면서 그 어느 것보다 데이터가 중요하다는 것을 깨달은 순간,
데이터를 활용할 수 있는 다양한 기술에 대한 궁금함이 밀려왔다.
조금씩 알아보면서 시중에 있는 다양한 기능의 제품들을 눈동냥했고,
강의나 세미나를 통해서 이들의 활용 사례를 접하면서 이 체계에 대한 정리가 필요함을 느꼈다.
그리하여 빅지기를 정독하며 중요한 내용과 용어 등을 정리해보도록 하겠다.
📖 이 책의 구성
- 빅데이터의 기초 지식 : 빅데이터 기술의 역사적 배경과 스몰 데이터 기술을 포함한 기본적인 용어 정리
- 빅데이터의 탐색 : 데이터의 대화적인 집계와 시각화, 데이터 마트의 성질
- 빅데이터의 분산 처리 : Hadoop, Spark 등 분산 처리 프레임워크를 사용하여 데이터 마트를 만들어 내는 프로세스
- 빅데이터의 축적 : 데이터를 수집해서 보존하는 절차
- 빅데이터의 파이프라인 : 데이터 처리 자동화 절차, 워크 플로 관리의 사고 방법
- 빅데이터 분석 기반의 구축 : Spark 활용 대화적 세션 데이터 분석, Airflow 활용 워크 플로 관리, 클라우드 활용
📌 데이터 처리 자동화의 종류
- 배치 처리 : 정기적으로 자동화 스케줄 실행
- 스트림 처리 : 끊임없이 자동화 진행
📖 챕터 1. 빅데이터의 기초 지식
빅데이터 기술의 역사적 배경과 스몰 데이터 기술을 포함한 기본적인 용어 정리
📗 1-1. 빅데이터의 정착
📍 분산 시스템에 의한 데이터 처리의 고속화
- 빅데이터의 취급하기 어려운 점을 극복한 두 가지 대표 기술
많은 기업들이 데이터 처리에 분산 시스템을 도입하며 비즈니스에서 빅데이터를 활용하자는 움직임이 활발해졌다.
RDB로는 취급할 수 없을 만큼 대량의 데이터가 쌓이게 되자, 이를 효율적으로 처리(사용)하기 위한 기술로 가장 먼저 Hadoop과 NoSQL이 발전했다.
Hadoop : 다수의 컴퓨터에서 대량의 데이터 처리
방대한 데이터를 저장하는 스토리지와 순차적으로 데이터를 처리할 수 있는 구조에서는 수천대 단위의 컴퓨터가 이용되어야하며, 이것을 관리하는 것이 Hadoop라는 프레임워크다.
SQL과 같은 쿼리를 Hadoop에서 실행하기 위한 소프트웨어로 Hive가 2009년 출시
기존 자바 언어 프로그래밍없이 쿼리를 활용한 데이터 집계가 가능해짐
NoSQL 데이터베이스 : 빈번한 읽기/쓰기 및 분산 처리가 강점
RDB보다 고속의 읽기, 쓰기가 가능하고 분산처리에 뛰어난 특징을 가지고 있어
RDB의 제약을 제거할 수 있는 DB의 총칭으로 대표적으로 다음과 같은 세가지 종류가 있다.
key-value store | 다수의 키와 값을 관련지어 저장 | Redis, Riak, Oracle Berkely, AWS DynamoDB |
document store | JSON과 같은 복잡한 데이터 구조 저장 | MongoDB, CouchDB, Couchbase |
wide-column store (column family) | 여러 키를 사용하여 높은 확장성을 제공 | Cassandra, Hbase, GCP BigTable, MS Azure Cosmos DB |
Hadoop과 NoSQL 데이터베이스의 조합 : 현실적인 비용으로 대규모 데이터 처리 실현
2012년부터 NoSQL DB에 기록하고 Hadoop으로 분산 처리하는 흐름이 널리 퍼지게 되었다.
📍 분산 시스템의 비즈니스 이용 개척
- 데이터 웨어하우스와의 공존
분산 시스템의 발전에 따라 기존 사용해오던 엔터프라이즈 데이터 웨어하우스(DWH)와 Hadoop을 동시에 사용하는 경우가 증가했다.
일부 DWH 제품은 안정적인 성능을 위해 HW와 SW가 통합된 통합 장비로 제공되어 확장하기가 쉽지 않았다. 따라서 대량으로 발생하는 데이터의 처리는 Hadoop에 맡기고 집계 후 중요한 데이터를 DWH에 넣는 방식으로 DWH의 부하를 줄이는 것이다.
📍 직접 할 수 있는 데이터 분석 폭 확대
- 클라우드 서비스와 데이터 디스커버리로 가속하는 빅데이터의 활용
위와 비슷한 시기부터 클라우드 서비스가 보급되며 클라우드 환경으로 DWH를 구축하여 자체적으로 데이터 분석 기반을 마련하게 되었다.
데이터 디스커버리의 기초 지식 : 셀프서비스용 BI 도구
DWH에 저장된 데이터를 시각화하려는 방법으로 데이터 디스커버리(BI 도구)가 등장했다.
BI 도구는 DWH와 조합되어 사용된 경영자용 시각화 시스템으로 Tableau 등이 있다.
2013년 이후에도 Apache Spark와 같은 새로운 분산 시스템용 프레임워크가 보급되어 더 효율적으로 데이터 처리를 할 수 있게 되었다.
📗 1-2. 빅데이터 시대의 데이터 분석 기반
📍 빅데이터의 기술
- 분산 시스템을 활용해서 데이터를 가공해 나가는 구조
이 책에서의 '빅데이터 기술'이란 분산 시스템을 활용하면서 데이터를 순차적으로 가공해 나가는 일련의 구조다.
데이터 파이프라인 : 데이터 수집에서 워크플로 관리까지
과업에 따라 시스템은 점차 복잡해지고 시스템의 조합이 해결해야할 문제가 된다.
데이터 수집 : 벌크 형과 스트리밍 형의 데이터 전송
- 벌크(bulk)형 : 이미 존재하는 데이터를 정리해 추출하는 방법으로 DB나 파일 서버에서 정기적으로 데이터를 수집하는 데 사용
- 스트리밍(streaming)형 : 차례로 생성되는 데이터를 끊임없이 보내는 방법으로 모바일 또는 임베디드 장비 데이터를 수집하는 데 사용
스트림 처리와 배치 처리
스트리밍 방식으로 수집한 데이터를 실시간으로 처리하는 방식을 스트림 처리라고 한다.
이를 위해 시계열 DB와 같은 실시간 처리를 지향한 DB가 자주 사용된다.
장기적인 데이터 분석을 위해서는 보다 대량의 데이터를 저장하고 처리하는 분산 시스템이 좋다.
이 때 어느 정도 정리된 데이터를 효율적으로 가공하는 방식을 배치 처리라고 한다.
분산 스토리지 : 객체 스토리지, NoSQL DB
수집된 데이터는 여러 컴퓨터와 디스크로 구성된 분산 스토리지에 저장된다.
[데이터를 저장하는 방법]
- 객체 스토리지 : 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장.(Amazon S3)
- NoSQL DB : 거대한 데이터를 읽고 쓰려면 NoSQL DB가 성능면에서 우수
분산 데이터 처리 : 쿼리 엔진, ETL 프로세스
분산 데이터 처리의 주 역할은 데이터를 가공해서 그 결과를 외부 DB에 저장하는 것.
[빅데이터를 가공하기 위해 SQL을 활용하는 방법]
- 쿼리 엔진 도입(Hive), 현재는 Hive보다 고속인 대화형 쿼리 엔진도 개발됨
- 외부의 DWH 제품 이용 : ETL 프로세스를 거쳐 분산 스토리지의 데이터를 DWH에 적합한 형태로 변환
워크플로 관리 : 전체 데이터 파이프라인의 동작 관리
배치 처리를 스케줄대로 실행하고, 오류 발생 탐지 및 통지하는 목적
빅데이터 처리에는 시스템 장애가 발생하므로 오류 발생 시 처리와 다시 처리하기 위한 기능이 필수
📍 데이터 웨어하우스와 데이터 마트
- 데이터 파이프라인 기본형
DWH는 일반적인 RDB와는 달리 '대량의 데이터를 장기 보존'하는 역할이기에
데이터 전송은 뛰어나지만 소량의 데이터를 읽고 쓰는 데는 적합하지 않다.
DWH의 데이터 전체를 목적에 맞게 사용할 수 있으나, 시스템에 과부하를 초래할 수 있다.
데이터마트는 데이터 분석과 같은 목적으로 사용하는 경우, DWH에서 필요한 데이터만을 추출한 것
데이터마트를 BI도구와 조합하여 데이터 시각화로 사용한다.
DWH와 데이터마트 모두 SQL로 데이터를 집계하기에, 테이블 설계를 명확히한 후에 데이터를 투입한다.
따라서 DWH를 중심으로 하는 파이프라인에서는 테이블 설게와 ETL 프로세스가 중요하다.
📍 데이터 레이크
- 데이터를 그대로 축적
DWH 구조에서는 테이블 설계를 해놓고 데이터를 투입하지만, 빅데이터를 다룰 때에는 여러 형태의 데이터를 다뤄야하기에 데이터를 우선 담고, 나중에 테이블을 설계한다.
이를 위해 모든 데이터를 그대로 축적하고 나중에 가공할 수 있도록 하는 장소인 데이터 레이크가 등장했다.
데이터 레이크와 데이터 마트 : 필요한 데이터는 데이터 마트에 정리
데이터 레이크는 단순한 스토리지이기에 업무 시에는 분산 데이터 처리 기술을 활용해 필요한 데이터를 가공, 집계하여 데이터 마트 형태로 추출하여 사용한다.
📍 데이터 분석 기반을 단계적으로 발전시키기
- 팀과 역할 분담, 스몰 스타트와 확장
[데이터 팀에서의 역할 분담]
- 데이터 엔지니어 : 시스템의 구축 및 운용, 자동화
- 데이터 분석가 : 데이터에서 가치 있는 정보 추출
애드 혹 분석 및 대시보드 도구
- 애드 혹 분석(ad hoc analysis) : 자동화없이 수작업으로 데이터 집계 및 시각화(일회성 데이터 분석)
데이터 마트를 만들지 않은 채 대화형 분석 도구로 데이터 레이크나 DWH에 직접 연결
- 대시보드 도구 : 설정한 스케줄에 따라 데이터 레이크나 DWH에 접속해 데이터 집계 및 시각화(주기적 데이터 분석)
데이터 마트와 워크플로 관리
복잡한 데이터 분석 또는 BI 도구를 사용하는 경우에는 집계 속도를 위해 먼저 데이터 마트를 구축하는 것이 필수이다.
데이터 마트 구축은 배치 처리로 자동화되는 경우가 많고, 이 실행 관리를 위해 워크 플로 관리 도구를 사용한다.
📍 데이터를 수집하는 목적
- '검색', '가공', '시각화'의 세가지 예
데이터 수집의 목적과 우선 순위에 따라 시스템 구성이 달라진다.
데이터 검색 : 대량의 데이터 중에서 조건이 맞는 것을 찾는 경우
언제 무엇이 필요할지 모르기에 모든 데이터를 가지고 있어야한다.
검색에 너무 많은 시간이 걸리는 것은 의미가 없기에, 실시간 데이터 처리나 검색 엔진을 활용한다.
데이터 가공 : 시스템 일부로서 데이터 처리 결과를 활용
명확한 목적에 따라 필요한 데이터를 모아 파이프라인을 설계한다.
자동화가 필수적이기에 테스트를 통해 워크플로 관리를 도입한다.
SQL이 아닌 프로그래밍 언어를 사용하는 경우도 있다.
데이터 시각화 : 알고 싶은 정보를 시각적으로 표시
통계 분석 SW나 BI 도구 등으로 그래프를 작성해야 한다.
시각화를 고속화하거나, 대시보드를 통해 지속적으로 확인하기 위해서 데이터 마트가 필요하다.
📌 기간계 시스템(mission-critical system) vs 정보계 시스템(information system)
- 기간계 : 비즈니스 근간에 관련된 중요 시스템으로 이것이 정지되면 업무가 멈춘다.
- 정보계 : 사내 커뮤니케이션 및 의사 결정을 위한 시스템으로 정지되어도 영향 범위가 제한되어 있다.
📌 확증적 데이터 분석과 탐색적 데이터 분석
- 확증적 데이터 분석 : 가설을 세우고 그것을 검증하기 위한 분석
- 탐색적 데이터 분석 : 데이터를 통해 의미를 읽어내기 위한 분석
📗 1-3. 스크립트 언어에 의한 특별 분석과 데이터 프레임
📍 데이터 처리와 스크립트 언어
- 인기 언어인 파이썬과 데이터 프레임
데이터 엔지니어들에게 파이썬이 인기있는 이유
- 통계 분석에 특화된 R과 비교했을 때 범용적으로 사용된다.
- API를 호출하거나, 복잡한 문자열 처리에 적합하다.
- 과학 기술 계산 분야에서 오랜 기간 사용되어 수치 계산용 라이브러리와 머신러닝 프레임워크가 충실하다.
📍 데이터 플레임, 기초 중의 기초
- '배열 안의 배열'로부터 작성
데이터 프레임은 표 형식의 데이터를 추상화한 객체다. 하나의 표(테이블 or 시트)를 통째로 하나의 객체로 취급한다.
데이터 프레임을 사용하면 스크립트 언어 안에서 데이터 가공과 집계가 가능하다.
📗 1-4. BI 도구와 모니터링
📍 스프레드시트에 의한 모니터링
- 프로젝트의 현재 상황 파악하기
애드 혹 분석 : 일회성으로 데이터를 살펴보는 것
모니터링 : 보다 계획적으로 데이터의 변화를 추적해 나가는 것
데이터는 현재 상황을 파악하기 위한 도구로 사용할 수 있다.
데이터의 집계 결과로부터 알아낸 현상에 대해 어떤 조치를 해야하는지는 분명하지 않다.
데이터의 의미를 제대로 이해하려면 배경에 대한 사전 지식이 필요하다.
📍 데이터에 근거한 의사 결정
- KPI 모니터링(Key Performance Indicator)
프로젝트 현황을 파악하기 위한 숫자로 KPI가 자주 이용된다.
KPI 모니터링에서 의식하고 싶은 것은 그것이 행동 가능(actionable)한 것인가이다.
즉 그 결과에 따라 다음 행동이 결정될지의 여부이다.
이 행동 가능한 숫자를 만들기 위해 목표와 기준을 정하고 이를 객관적인 데이터를 근거하여 판단해야한다.
'독서, 강의 기록' 카테고리의 다른 글
빅데이터를 지탱하는 기술 - 챕터 2 : 빅데이터의 탐색 (0) | 2023.12.13 |
---|---|
[세미나] 데이터리안 SQL 코딩테스트 노하우 강의 (0) | 2023.12.12 |
07.27.데이터 과학자&분석가 모임 3회 밋업 (0) | 2023.07.28 |