글에서는 그냥 데스노트서비스라고 칭하겠습니다!
일단, 이 데스노트 서비스로 말씀드릴 것 같으면 아이디어를 갖고있던 것은 벌써 2년이 지났습니다.
2년 전에 정말 간단하게 개발을 진행했었는데, 시간도 없었고 여러 가지 문제가 발생하여 멈추었다가 최근에 다시 개발을 시작하게 되었습니다.
2년 사이에 제게는 많은 변화가 있었습니다.
각각 5만 명 유저, 400만 명 유저가 생긴 서비스들을 개발하고 운영했었고, 창업을 하기도 했고, 아마존 셀러가 되어 퍼즐을 판매해보기도 하고, 창업을 포기하기도 하는 등,, 정말 많은 일들이 있었습니다.
지금은 다시 학교에 돌아와 개발자로서의 커리어를 준비하고 있는 상황입니다.
그렇다고, 제가 포트폴리오를 위해서 데스노트 서비스를 개발하고 있느냐?
그렇지 않습니다. 더이상 서비스를 규모있게 성장시킬 수 있는 상황과 여건이 있지는 않지만 소소하게라도 꾸준히 가지고 있는 아이디어로 서비스를 개발하고 운영하고 싶습니다. 이게 제 취미이자 삶의 원동력이니까요..!
서론은 이 정도로 하고, 개발 과정을 설명드려보려 합니다.
1. 문제
2. 컨셉
3. 기술 스택
일단, 기술 스택으로는 백엔드단은 Spring Boot를 선택했고, 프론트단은 React를 선택했습니다.
그리고, 이번 프로젝트에서는 ML Classification 모델을 사용해야 하는데, 모델을 서버에 넣어둘 필요는 없기에, Spring Boot를 선택했습니다.
4. 개발 계획
#1. Riot API에서 데이터를 요청하자.
일단, 데스노트 서비스는 특정 사용자에 대한 리뷰를 남기고, 트롤 점수를 알려주는 게 핵심 기능입니다.
그런 상황에서 가장 기본이 되는 것은 결국 유저 각각에 대한 정보였기 때문에, Riot ( 롤 개발사 ) API를 사용해야 했습니다.
비교적 명세가 잘 정리되어 있다고 생각이 들었습니다. 처음에는 이해하기가 쉽지는 않지만, 문서를 잘 읽어보면 이해하실 수 있으실 거에요!
하지만, 여기서 문제가 하나 있습니다. Riot에서 서비스 단계별로 ( 각각의 단계는 인증받아야 합니다. 여기서 단계는 서비스 규모를 말합니다. ) API 요청량에 한계가 정해져있는 것이죠.
( 나중에, 이 부분 때문에 스케줄러를 사용해서 데이터를 수집해야 했습니다. )
#2. 데이터 수집을 진행하자.
트롤을 분석하기 위해서 직관적인 UI를 위해 100점 만점의 점수로 그것을 표현하려 생각했습니다.
하지만, 이 때 발생하는 문제는 그렇다면 트롤을 가려내는 기준을 어떻게 정할 것인지에 대한 문제였습니다.
이를 위해서 Riot API에서 제공해주는 많은 지표들을 정제해서 한 게임당 10개의 데이터를 만들어낸 다음에 Tier별로 승/패를 Output으로 삼아, Classification 모델을 사용하는 것을 생각했습니다.
이 때, 중요한 것은 가중치를 찾아내야 했기 때문에,
Feature Selection이 가능한 모델들을 선택해서 돌려보기로 정했습니다.
그래서 전처리를 진행하게 되었습니다. OpenCSV 라이브러리를 사용해서 바로 CSV로 Export할 수 있었습니다.
#3. 백엔드&프론트 프로토타입 수준으로 개발
위에서 언급한대로, ML Classification을 통해서, 가중치를 찾아내기 전에, 제가 임의로 가중치를 매겨서 감히 Hide on Bush ( Faker )선수의 전적을 분석해보았습니다.
저는, 서비스를 개발할 때 항상 MVP를 구현하는 것 ( 퀄리티 보다는 구현이 중요함 )을 최우선 과제로 삼습니다. 그 이유는, 항상 프로젝트를 진행할 때 지치는 타이밍이 오기 마련인데, 구현이 되어있는게 있고 유저가 있는 상황에서는 그런 지치는 타이밍을 잘 이겨낼 수 있기 때문입니다.
일단 현재까지 구현한 부분은 이 정도까지입니다.
추후에, 코드도 리팩토링해서 어떻게 코드를 짰는지도 자세하게 설명드려보도록 하겠습니다!!😀
감사합니다~~!!
github.com/dong149/deathnote-api-server
'Project' 카테고리의 다른 글
interviewer 서비스 개발기 ( 1 ) (0) | 2021.08.04 |
---|---|
deathnote.gg 서비스 개발기 ( 2 ) (0) | 2021.07.16 |