데이터 엔지니어링 프로젝트 및 인강/3. Spotify Project

Spotify Project 05. Spotify - AWS Data 수집 프로세스 구축

쟈누이 2020. 6. 28. 12:48
반응형

현재 진행하고 있는 프로젝트는 페스트 캠퍼스에서 듣고 있는 인강인

한승수 강사님의 데이터 엔지니어링 강의를 다시한번 복습하고

내재화하고자 진행하는 프로젝트인 점 참고바란다.

 

서비스를 만들기에 앞어 가장 중요한 것은 

 

- 어떤 데이터가 필요한 것인지?

- 데이터들을 어떻게 수집할 것인지? ( API 형태? 로그 데이터? 등)

- 데이터들을 어떻게 저장할 것인지?

 

이 3가지인 것 같다. 

이번에는 데이터를 어떻게 저장할 것인지에 대하여 고민을 하고 이를 

구현한 과정에 대해서 기록한다..

 

우선, 데이터를 수집하고 저장하고자하는 프로세스는 아래와 같다.

 

(한승수 강사님의 강의를 복습하여 엔지니어링 프로세스를 내재화 시키는

 사이드 프로젝트이기 때문에 전반적인 프로세스는 강의 내용과 비슷한 점은 참고 바란다)

 

이번 사이드 프로젝트에서는 Spotify API 만 필요하기 때문에 데이터를 수집, 저장하는 방식은 

의외로 간단하지만, 데이터들을 수집하는 것은 의외로 많은 것을 고민해야 했었기에 놀랐었다.

(처음에는 이마저도 이해하는 것이 힘들었다..ㅎㅎㅎ 몇번을 다시 보니 조금씩 이해가기 시작)

일차적으로는 MySQL 과 DynamoDB에 데이터를 수집하는 프로세스를 기록하겠다. 

 

처음 도면으로 보듯이 수집 프로세스는 단순하기에 수집 시에도 간단하게 

DB 구분 없이 저장하면 되겠지..라는 막연한 생각을 가지고 있었다.

 

하지만, 곧 프로젝트를 진행하면서 어떤 DB를 사용하는 것이 

중요한지에 대한 몇가지 중요한 기준을 배울 수 있었다.

(1) 누가 이 데이터를 사용할 것인지? (유저의 측면)

(2) 어떻게 데이터를 활용할 것인지? ( 서비스의 측면)

누가 사용할 것인지와 어떻게 데이터를 활용할 것인지에 따라서

데이터를 어디에 저장하고 어떻게 가공할 것인지가 결정되는 것 같다. 

 

이제 데이터 수집 프로세스에 대해서 간단하게 설명하겠다.

 

1. MySQL 에 데이터 저장하기

 

MySQL 에는 aritsts, genres 데이터를 저장했다.

 

저장한 위 2개의 데이터는 추후 구현할 예정인 분석 환경

이 환경에서 공통적으로 사용되는 데이터이므로 아래의 사항에 해당된다고 볼 수 있었다.

 

1. 저장되는 데이터의 범위가 명확하고

2. 추후 데이터의 범위가 확장될 가능성이 적다

3. 장기적으로 보존되어야 하는 데이터이다.

4. 두 환경을 구현함에 있어서 가장 중요한 데이터이다.

 

라는 측면을 고려하여 MySQL 을 DB 로 선택했다.

저장된 데이터는 아래의 이미지와 같다.

artist 데이터 항목
artists_genres 데이터 항목

위 프로젝트에서 MySQL은 데이터웨어하우스인 동시에 데이터 마트의 성격도 가질 수 있는 DB라고 생각한다.

위 4가지의 이유로 데이터를 저장하고 있다는 점에서는 데이터 웨어하우스의 특성을 지니지만

 

follwers, popularity, genre 와 같은 간단한 분석의 목적을 지닌 경우에는 특별한 가공없이 바로

데이터를 추출하여 분석을 할 수 있기 때문이다. 

 

 

2. DynamoDB 에 데이터 저장하기

 

DynamoDB 에는 Top tracks, Related Artists 를 저장했다.

추후 챗봇을 구현함에 있어서 아래의 사항을 충족한다고 생각했기 때문이다

 

1. 서비스 확장 가능성에 있어 데이터의 확장성이 좋다

2. RDB 와는 다르게 artist id 로 파티션을 통해 데이터 요청시 속도 및 유연성이 좋다

3. 추후 다른 데이터를 활용할 가능성에 대비해 최대한 많은 데이터를 저장할 수 있다.

4. 많은 데이터들 중에서 원하는 데이터만 추출하여 사용이 가능하다

 

위 사항으로 인해 DynamoDB 를 사용했다.

저장된 데이터는 아래와 같다

 

파이프라인의 구축은 데이터 활용 및 서비스 구현에 있어서 매우 중요한 과정이고

고려해야될 것들이 많기에 2-3 주정도의 기간을 두었다.

 

3. 프로젝트 2-3주차 결과

 

1주차 때 파이프를 구현하고 그 것을 DB에 저장하는 프로세스를 구현했다.

이번 주차를 거치면서 간단하고, 막연하게 생각했던 DB 선택 시 고려사항에 대해서

어떠한 점을 고려해야되는지 배울 수 있었던 2주였다고 생각한다.

 

 

반응형