본문 바로가기
사이드 프로젝트/음악추천 챗봇 서비스

음악추천 챗봇0. 서비스기획과 아키텍쳐 설계(Serverless)

by 카프리썬_ 2021. 5. 25.
728x90

목표

이번 프로젝트의 목표는 데이터파이프라인 구축을 실습해보고 경험해보는 것이다. 

늘 이야기만 들어봐서 이론적으로만 찾아보고 혼자 공부해봤지 

2021.03.10 - 데이터파이프라인(datapipeline)이란?

 

데이터파이프라인(datapipeline)이란?

데이터엔지니어의 주요업무 중 하나, 데이터파이프라인 개발 특히 이때 데이터는 대용량데이터, 실시간데이터 등등 다양한 데이터이다. 데이터파이프라인을 통해 어디에서든지 데이터를 편하

pearlluck.tistory.com

직접 구축하고 직접 경험해본 적은 없었기 때문에 꼭 한번 해보고 싶은 프로젝트이다. 

 

그리고 이왕이면 aws를 사용한 서버리스 아키텍쳐기반이였으면 좋겠따.

이전에 한번 해봤지만 람다와 api gateway를 사용해서 개발하는게 딱 내스타일이라고 느껴졌기 때문이다. 

 예전에 serverless 챗봇어플리케이션을 한번 만들어봤긴 했다.

2020.03.26 - Serverless아키텍쳐 구성5 - 챗봇 애플리케이션구축

 

Serverless아키텍쳐 구성5 - 챗봇 애플리케이션구축

1. 목표 서버리스 아키텍쳐 기반의 웹애플리케이션 구축 2. 요구사항 Client : Slack App Server : serverless아키텍쳐로 api 게이트웨이 & 람다 aws서비스사용 DB: NoSQL 데이터베이스로 DyanmoDB aws 데이터베이..

pearlluck.tistory.com

그땐 메세지를 슬랙을 썼고, 챗봇어플리케이션이라는게 개발목적이라기 보단

그냥 서버리스 아키텍쳐를 학습하기 위한 예시 중 하나로 개발을 해서 아쉬웠다. 

 

그래서 데이터엔지니어 프로젝트를 한참 검색해봤다. 다행히도 몇가지 예시를 찾게 되었다.

어떤 교육기관에서 진행한 프로젝트 예시 중 하나 같은데 이번이 기회다!!

특히 저번에 kafka도 제대로 이해하지 못한것 같아서

데이터엔지니어를 꿈꾸는 입장에선 아직도 갈길이 한참 멀다

 

그래서 이번에는 제대로된 서비스를 만들고 운영한다는 완성도까지 집중해보겠다 

 

서비스기획

전체적인 구성

이거랑 유사한데, 유저가 사용하는 메신저는 카카오톡이다. 

그리고 데이터수집을 위해서 aws의 데이터베이스 서비스를 사용할 것이다. 

아래 그림은 람다가 두개인데 두개나 필요한지 잘 모르겠다. 

출처 https://it-sunny-333.tistory.com/118

 

예상 시나리오 

예상되는 시나리오와 기능은 아래와 같다. 

사용자가 카카오톡 챗봇으로 아티스트를 request하면 spotifyAPI를 통해 저장한 데이터를 가져온다. 

그래서 관련 아티스트의 노래 정보를 알려주는 것이다. 

출처 https://sulmasulma.github.io/data/2020/06/07/kakaotalk-chatbot2.html

또 시간이 된다면 이렇게 단순히 정보를 나타내는 것 뿐만 아니라 

입력한 아티스트와 관련된 다른 노래를 추천해주는 기능이다.

출처 https://sulmasulma.github.io/data/2020/06/07/kakaotalk-chatbot2.html

 

사용기술

 

이번에 사용할 메세지 플랫폼은 카카오다. 

안그래도 카카오API를 써보고 싶어서 사실 이전부터 developer에 가입을 해두긴 했었다.

카카오 챗봇은 카카오i 오픈빌더에서 쉽게 만들수 있다고 한다. 

https://docs.kakaoi.ai/skill/voice_dev/chatbot/

 

Kakao i 기술문서

개발자 및 IT 전문가를 위해 제공되는 API 레퍼런스, 개발 가이드 및 예시 코드를 확인해보세요.

docs.kakaoi.ai

 

그리고 음악에 관련된 데이터를 써보고 싶었다. 검색을 해보니 Spotify api를 사용한 사례가 많았다.

https://developer.spotify.com/dashboard/

 

My Dashboard | Spotify for Developers

Create and manage Spotify Applications to use the Spotify Web API. Obtain credentials to authenticate with Spotify and fetch metadata.

developer.spotify.com

당연히 국내 음악서비스로 멜론API나 지니API를 가지고 활용해보고 싶었다. 
하지만, 불가능했다.
SK플래닛이 2012년부터 운영하던 개발자센터 내 오픈 API 서비스를
2018년 3월부터 중단한다고 발표함으로써 Melon의 API 서비스를 시기적으로 사용하지 못하게 되었으며,
Genie 또한 API 서비스를 더 이상 제공하지 않고 있다.

물론 단순히 곡명, 아티스트명, 해당곡에 대한 댓글등 Selenim이나 그냥 기본적인 requests 로 가져올 순 있지만 

API를 직접 설계할 수 도 있고, 유사도를 계산해서 추천까지 할 수 있는 스포티파이API를 사용하기로 했다.

 

Serverless아키텍쳐는 AWS로 구축할 것이다. 

이전에도 해봤지만 다시 복습할겸 Lambda, API 게이트웨이를 더 알아볼 것이다. 

그리고 Lambda를 쓰는 만큼 마이크로서비스에 대해서도 알아볼 것이다. 

저번에 쏘카 데이터엔지니어팀 직무인터뷰에서 대부분 마이크로서비스 아키텍쳐라고 들어서 더 깊게 알아볼 생각이다. 

 

그리고 사실 데이터를 저장하는데 큰 의미가 있나 생각하긴 했다.

그래도 목적이 데이터파이프라인을 구축하는 것이니 만큼 MYSQL, DynamoDB, S3까지 다양한 데이터저장소를 사용해서 여러곳에 흩어진 데이터를 한곳에 모아서 저장하는것에 집중해볼까 한다. 

 

참고

데이터워크플로우부터 참고 <<이론적인 부분은 여기를 참고하고

https://heung-bae-lee.github.io/2020/03/01/data_engineering_09/

 

data engineering (데이터 파이프라인 자동화)

데이터 워크 플로우 이전에도 언급했었듯이 데이터 파이프라인은 아래와 같은 서비스들을 S3에 모아 Athena같은 서비스로 분석해준 뒤 그 결과를 저장해놓은 일련의 데이터 작업의 흐름을 일컫는

heung-bae-lee.github.io

spotify 챗봇 + 페이스북 

https://it-sunny-333.tistory.com/118

 

AWS와 python으로 페이스북 챗봇 만들기 (1) - 아키텍처

개요 페이스북 챗봇으로 아티스트 이름을 검색하면 아티스트의 정보와 spotify 링크를 알려주자! FLOW 저장소에 아티스트가 없는 경우 spotify API를 호출한다. spotify에 해당 아티스트가 없는 경우 "Cou

it-sunny-333.tistory.com

음악추천까지 + 카카오챗봇  <<실습과 프로젝트 방향성은 여기 블로그를 중점적으로 참고했다.

https://sulmasulma.github.io/data/2020/08/02/kakaotalk-chatbot3.html

 

AWS Lambda를 이용한 Serverless 카카오톡 챗봇 만들기 3: 관련 아티스트 추천

Data Analysis

sulmasulma.github.io

반응형