Skip to content

데이터 관리 전략

Kim Gaeun edited this page Apr 7, 2022 · 3 revisions

데이터 관리 전략을 작성하자

  • 현재 우리 서비스는 로그인 기능이 없고, 게임 진행 시 필요한 데이터들은 방을 개설하면서부터 모두 생성된다.
  • 처음에는 게임 진행 후 생성되는 데이터들은 랭킹을 위한 일부 데이터만 남기고 모두 삭제하였다.
  • 그러나 삭제하는 데이터 중 일부 데이터를 남겨서 이용자 분석 및 서비스 개선에 활용할 수 있을 것이라고 생각해서 데이터 관리 전략을 만들게 되었다.

데이터베이스

  • 서버에서 비즈니스 로직과 관련하여 생성되는 데이터는 MySql에서 관리한다.
  • S3는 MySql을 포함하여 서비스와 관련하여 생성되는 모든 데이터들의 저장소 역할을 한다.

데이터 관리 : MySql

  • 데이터는 게임 진행 데이터(Room, User, Quiz, Clue)와 그 외 Rank, Comment, Game Resource 엔티티로 구성된다.

게임 진행 데이터(Room, User, Quiz, Clue)

  • Room, User, Quiz는 Room을 중심으로 연관관계가 설정되어 있다.
  • Room과 Quiz 데이터는 이용자 분석에 활용하기 위해 게임 종료 후 바로 삭제하지 않고, 이후 특정 스케줄에 따라 MySql에서 삭제 후 S3로 이관한다.
  • Clue는 게임 시작과 동시에 생성되며 Quiz의 정답을 맞추기 위한 보조 역할을 하기 때문에 게임 종료 시 삭제한다.
  • Clue는 Room과 연관관계 설정이 가능하나, 비즈니스 로직에서 연관관계가 활용되는 경우가 없고, 게임 종료 후 삭제한다는 점을 고려해 Room과 연관관계 없이 roomId만 저장한다.
  • User는 방 참여 시 랜덤으로 부여된 값들로, 게임 종료 시 인원 수만 Room에 userNum으로 저장하고 삭제한다.

그 외 데이터(Rank, Comment, Game Resource)

  • Rank는 MySql에만 저장하고, 추후 Rank를 일정주기로 reset하는 경우에는 그대로 삭제한다.
  • Comment는 게임 종료 후 유저의 리뷰 정보로 서비스 품질 개선을 위해 주기적으로 검토하며, 이후 특정 스케줄에 따라 MySql에서 삭제 후 S3로 이관한다.
  • Game Resource는 별도의 S3에 저장하며 MySql에는 url만 저장한다. 게임 수정으로 Game Resource가 변경되면 MySql에는 업데이트된 정보만 남기고 변경 전 데이터는 S3로 옮긴다.

서비스 적용

  • MySql에서 S3로 주기적으로 이동하는 부분은 구현하지 못했다.
  • AWS Glue, AWS data pipeline을 사용해서 AWS RDS에서 AWS S3로 데이터를 옮길 수 있다.
  • 특히 Glue를 사용해 추가적으로 다양한 데이터 분석도 가능하다.