- 챗봇 페이스북 페이지 바로가기
- 깃허브 레포지토리 바로가기
- 프로젝트 포스팅 목록
문제 정의
- 제일 먼저 클라우드 환경에서의 데이터 파이프라인을 구축해보고 싶었다.
- 파이썬으로 상황에 맞는 데이터 베이스을 사용하여 자유자재로 핸들링하는 기술을 익히고 싶었다.
- 음악 정보를 이용하여 유사도를 구하게 되면, 추천해주는 알고리즘을 만들어서 챗봇 형태로 제공해볼 수 있지 않을까? 란 문제로 시작하게 된 프로젝트이지만, 엔지니어링을 경험하는 것이 우선적인 프로젝트이다.
데이터 파이프라인
- 음악 유사도를 구하기 위한 정보를 위해 스포티파이 API 활용
- Athena에서 S3 적재 데이터 이용 유사도 산출 후 RDS PostgreSQL에 저장
- EMR 이용 스파크(Spark)에서 분석 및 시각화 핸들링
- 람다 서버리스 컴퓨팅(Lambda Severless Computing)
- 챗봇에 API 게이트웨이 경유 정보 전달
- 클라우드왓치 로그(Cloudwatch Logs)에 로깅
- 챗봇 DB에 해당 아티스트 정보 없을 시, 스포티파이 API 호출하여 DB 저장
회고
프로젝트에 착수한 때는 굉장히 오래되었지만, 드디어 마무리할 수 있게 되었다.
지금까지 해보았던 프로젝트 중에 제일 마음에 들면서도 제일 마음에 들지 않는다(?)
이유인즉슨, 지금까지의 프로젝트는 과정보다는 결과에 초점이 맞춰져 있었지만 이번만큼은 결과보다 과정에 많은 초점이 맞춰져서이다.
고로 과정에서의 경험이 다양했기 때문에 재밌고 유익했지만, 결과는 똥이다…ㅎ
거의 모든 파이프라인 구축을 Cloud로 했기 때문에 굉장히 재밌고 어려운 경험이었다.
(이와 함께 청구되는 내 AWS 비용)
어떻게보면 데이터 레이크부터 웨어하우스까지 구축해보고 거기에 RDS와 NoSQL까지 사용해보니 적재에 관련된 지식까지 꽤나 적재되었다.
또 Lambda Severless Computing 같은 경우엔 처음 사용해봤는데, 굉장히 흥미로웠다. 하지만… 굉장히 까다로웠다.
무엇보다 제일 배우고 싶었던 분산처리 시스템인 Apache Spark!
대용량 데이터에 최적화되어 있지만… 사실 개인 프로젝트를 진행할 때 대용량 데이터를 구축하는 것 조차 쉽지 않은 일이라 살짝 맛만 본 기분이긴하다. 그래도 그 맛이 꽤나 달콤했다..ㅎ
전체적으로 구현하는 과정이 너무 많은데 굉장히 까다로운 테스크가 많았고 많은 시간을 오류와 싸웠지만 모두 해결해서 후련하다.
그래도 결과의 아쉬움은 짚고 넘어가야겠다.
- 먼저 아티스트 입력 -> 유사 아티스트 추천 웬말이냐…
- 요즘은 노래 한 곡 듣기만해도 추천해주는 시대인데… 이제 발걸음을 한발 뗀 아기와 같은 내 구현력..
- Spotify에 등록된 가수명이 아닌 경우 등록도, 추천도 하지 못하는 멍충이 내 챗봇…
- 에스파라고 치면 안돼요… aespa라고 쳐야해요…
- 샤이니, shinee도 안돼요…. SHINee라고 쳐야해요….
- 이 문제는 사실 API 수집할때부터 입력까지 대소문자를 통일하는 문제로 해결해야한다. + 통역 시스템까지 마련해야한ㄷ….
- 비지니스적 쓰임새가 전-혀 없다.
어떻게보면 튜토리얼에 맞춰 진행했기 때문에 많은 제약이 있었지만, 하나하나 쉬운 테스크가 하나도 없었기 때문에 굉장히 많은 걸 경험하고 발전할 수 있었다.
이젠 내가 생각한 서비스를 위해 스스로 데이터 파이프라인을 지금까지 배웠던 것을 바탕으로 구축해보고 싶은 마음이 크다.
미리보기
페이스북 메인 페이지
입력한 아티스트의 장르와 유사한 아티스트를 반환
- DB에 저장되어있지 않은 아티스트를 입력하면 자동으로 저장되고, 몇 초 뒤 재입력하면 아티스트의 정보를 반환한다.