클라우드

GCP 로 데이터 분석을 위한 파이프라인 구성하기 (1/6) 개요

Sophia Lee 2019. 10. 10. 16:40

 

해당 글은 Coursera Specialized course: Data Engineering, Big Data, and Machine Learning on GCP Specialization 를 바탕으로 작성되었습니다.


GCP 로 데이터 분석을 위한 파이프라인 구성하기 (1/6) - 개요 Big data and ML on GCP

GCP 로 데이터 분석을 위한 파이프라인 구성하기 (2/6) - 스트리밍 데이터 파이프라인 Pub/Sub, Dataflow

GCP 로 데이터 분석을 위한 파이프라인 구성하기 (3/6) - 비정형 데이터 Cloud Dataproc

GCP 로 데이터 분석을 위한 파이프라인 구성하기 (4/6) - 서버리스 데이터 분석 BigQuery, Cloud Dataflow

GCP 로 데이터 분석을 위한 파이프라인 구성하기 (5/6) - 서버리스 머신 러닝 Tensorflow on GCP

GCP 로 데이터 분석을 위한 파이프라인 구성하기 (6/6) - 스트리밍 시스템 구축하기 


1. Introduction

Big Data Challenges

 

회사에 데이터가 수십만 데이터 포인트가 쌓인다. 이를 빅데이터 분석을 통해 사업적인 성공으로 이끌어 내고자 한다면 다음과 같은 도전과제들이 있을 것이다.

 

 

1. 기존에 유지하던 데이터 워크로드를 클라우드 환경으로 이주시키기

2. 규모적 측면에서 큰 데이터셋을 분석하기

3. 스트리밍 데이터 파이프라인 구축하기

4. 기계 학습 기술 적용하기

 

위와 같은 도전과제를 적용하기에는 GCP나 AWS같이 클라우드 환경의 서버리스 데이터 아키텍쳐가 더 효율적일 수 있다. 자원을 경제적인 측면에서 유리하게 운용할 수도 있고, 데이터 환경에 대한 큰 투자 없이 큰 기업의 자원을 빠르게 자원을 활용할 수 있다. 추가적으로 데이터 분석을 위한 유용한 툴과 APIs를 제공해주어 추가되는 워크로드 없이도 분석 업무의 고도화를 꿰할 수 있다는 것도 장점이다. 

 

초기 투자 비용을 최소화 할 수 있다는 점에서 작은 규모 기업들에게 줄 수 있는 이점은 명확하다. 중간 규모 기업에서도 빠르게 분석 트렌드를 적용시키기 위해서 사용할 수 있다. 소프트웨어가 메인이 아닌 대규모 기업에서 역시 자신의 역량에집중하기 위해서 자체 개발보다 이런 클라우드 컴퓨팅 기술을 선호할 수도 있을 것이라 생각된다.

 

 

Fundamental aspects of Bigdata on GCP

 

다른 클라우드 컴퓨팅 서비스와 마찬가지로 GCP 역시 보안, 컴퓨팅 파워, 스토리지, 네트워킹이 큰 구조를 이후로 그리고 그 위에 데이터 분석과 머닝 제품을 쌓아 올리는 형태를 구현하고 있다. 

 

이러한 형태를 갖춘 건 Microsoft Azure나 AWS도 마찬가지 인데, GCP는 유난히 인기가 없다. (또르르) 

 

BigData Organization

 

빅데이터 팀도 역할 분담이 필요하다. 규모에 따라서 데이터 엔지니어가 모두 다 하는 팀도 있겠지만... (Ethicist 까지..?) 구분해 보자면, 앞단에서 데이터를 구성하고, 의사결정을 하고, 데이터를 분석, 리포팅 해주는 인원도 필요할 것이고 좀 더 발전된 비즈니스 통찰력을 이끌어 내기 위해서 통계학자, ML 엔지니어, 데이터 과학자도 필요할 것이다. 이와 더불어 다각도에서 기술적, 사회적 impact를 연구하는 연구자, 윤리학자도 필요하다. 그러나 이정도 장기간 투자는 대기업이 아닌 이상 불가능하므로 대부분의 회사는 가장 왼쪽의 데이터 엔지니어, 의사결정자, 애널리스트의 Role로 구성된다.  밑에 그림상 오른쪽으로 이동할 수록 규모가 좀 더 크고 투자를 많이 할 수 있는 여력이 있는 회사이며, 그 끝판왕은 인도 액센트

 

성공적인 데이터 조직에는 인도 액센트를 가진 자가 필요합니다.

 

Big data products on GCP

 

각각의 포지션이 GCP Product 로 만든 workflow map에서 어떤 프로덕트를 주로 사용하게 될지 살펴보자. 

 

 

데이터 엔지니어라면 storage와 ingestion을 중심으로

데이터 분석가라면 analytics, data studio

데이터 사이언티스트라면 analytics와 machine learning을

어플리케이션 개발자라면 ingestion과 App engine 을 위주로 보게 될 것이다.

 

데이터 엔지니어 중에서도 Engineer oriented한 Role이라면 Compute engine, kubernates engine도 다루겠지만 이는 데이터 분석과 또 다른 어나더월드의 영역이라, 분석가와 걸쳐 있는 Role이라면 Dataflow나 Pub/Sub 쪽을 좀 더 많이 확인하게 될 것이다. 

 

Case study - GOJEK

케이스스터디로 인도네시아의 GOJEK이 소개되었는데, 오토바이 버전의 우버이고 한마디로 대박나서 별걸 다 하는 회사가 되버렸고, 하루에 5TB+ 이상의 데이터를 매니징 하고 GCP 의 아키텍처를 이용한다고 한다.

 

여기서 Pub/Sub의 역할이 중요한데, 자세한 내용은 이 시리즈 (2/6)의 스트리밍 데이터 파이프라인 인트로에서 다루도록 하겠다.

 

 

2. Storage, Dataproc, BigQuery

 

앞서 말했듯이 클라우드 서비스는 컴퓨팅 환경과 스토리지가 분리된다는 점이 특징이다. 빅데이터 분석을 위한 데이터 엔지니어링 과정은 컴퓨팅 환경보다는 데이터 환경을 클라우드 상에서 어떻게 구축하고, 이를 목적에 따라 어떻게 빠르고 안정적으로 분석할지가 주요 과제이기 때문에 Storage와 Dataproc 그리고 BigQuery에 대해서 간략하게 도표로 나타내보겠다. 자세한 내용은 시리즈가 진행되면서 소개 될 예정이다.

 

2.1 Storage: How to choose storage

 

간단히 설명하자면, Cloud SQL은 상대적으로 작은 데이터의 관계형 데이터베이스를 클라우드 환경에서 구축하고자 할 때 쓸 수 있다. 데이터가 그렇게 크지 않고, 입력 역시 타이핑 몇번으로 감당할 수 있다면 Cloud SQL은 최적의 솔루션이 될 것이다. 그런데 무작위적인 데이터가 쏟아진다면, 다른 솔루션을 고려해 봐야 한다. 뭘 좋아할지 몰라 다 준비해 봤다는 식의 일단 모아 놓고 본 데이터는 일단 가장 기본적인 Storage에 넣어놓는다. 정형화 되어 있고 데이터 파이프라인이 어느 정도 구상된 상태라면  BigQuery나 Bigtable 솔루션을 선택하면 된다.

 

2.2 Dataproc

 

데이터프록을 설명하기 앞서 빅데이터 오픈소스 환경에 대한 이해가 필요하다

 

  하둡은 대용량 데이터를 맵리듀스 방식으로 빠르고, 저렴하게 분산 처리하게 해 주는 프레임워크이다.  2010년대 초만 하더라도 빅데이터와 함께 하둡이나 스파크가 정말 대세였는데, 얼마나 대세였냐면 당시 데이터베이스에 대해 전혀 무지했던 나도 들어볼 정도였다. 그런데 불과 몇년만에 AWS의 엄청난 성장과 함께 Docker/Kubernates의 등장, 모바일 환경 등등 데이터 생태계가 완전히 변화해 버렸다. 채용시장만 보더라도 트렌드 키워드는 하둡이 아니라 클라우드다. 그러나 기존에 가지고 있던 데이터 워크로드를 밀어버리고 클라우드 상에서 새로 구축하자고 하는 데 동의하는 조직은 거의 없을 것이다. 그렇게 되면 맨 처음에 말했던 4 challenges 중 하나, 마이그레이션 (이주) 가 필요하게 된다. 이 때 필요한 것이 Dataproc인데 Dataproc은 클러스터 관리가 빠진 하둡이며, 기존 하둡의 워크로드를 이주시킬 수 있는 곳이다. 간단하게 말하면 Hadoop on GCP. 

 

자세한 내용은 시리즈 3번째 비정형 데이터 Cloud Dataproc에서 다뤄질 것이다.

 

 

2.3 BigQuery

 

Take a look at the green box.

 

  드디어 실전 분석 툴, 빅쿼리에 대한 소개이다. 일반적으로 빅쿼리 데이터 웨어하우스의 구조는 위와 같이 작성된다.

가장 처음의 Input은 실시간으로 발생되는 이벤트(IoT 디바이스, 웹방문, 구매 등등)에 대한 신호를 App Engine이거나 데이터를 일정기간 축적해 놓은 Batch Load이다. 이곳의 스트리밍 데이터나 배치 데이터가 각각 Cloud Pub/Sub 또는 Cloud Storage로 들어가 각각의 파이프라인을 통해 Cloud dataflow로 통합된다. Cloud dataflow에서는 병렬 데이터 프로세싱을 통해 데이터는 분석 엔진인 빅쿼리로 다시 흐르게 된다. 

 

  Query로 원하는 분석 결과를 얻었으면 쉐어 단계다. GCP 상에 Datalab이 있어 간단하게 레포팅을 할 수 있지만, 사용자가 그렇게 많은 것 같지는 않다. 타블로 같은 BI Tools를 사용할 수도 있고, 우리의 영원한 친구 스프레드시트를 사용해도 된다. 아니면 다이렉트로 코워커에게 전달해주는 옵션도 있는데 과연 그 코워커가 기뻐할까

 

구글은 정말 구글 컬러를 사랑하는군요.

  BigQuery에서는 간단한 머신러닝 모델을 쓸 수 있는데, 여기서는 선형 회귀, 로지스틱 회귀, 행렬 인수분해와 클러스터링 분석이 소개되었다. 원하는 분석 목적에 따라 선택해서 사용하면 된다. 의사결정나무나, 랜덤포레스트 같은 모델도 제공된다.