회원탈퇴 때 삭제되어야 할 데이터들이 무엇인지 고려해 보았다.
user테이블에서 해당 유저 정보,
score 테이블에서 해당 유저의 퀴즈 기록,
solved_quizzes 테이블에서 해당 유저가 풀었던 문제들,
quiz_accuracy_statistics 퀴즈 문제별 풀었던 정보(정답 횟수, 전체 시도 횟수) 등등
quiz_accuracy_statistics의 경우 전체 통계로 사용되고 개인 정보가 남지는 않기에 탈퇴한 유저의 문제 시도 횟수를 남기는 것은 괜찮다고 판단하였다.
그 외에 당연하지만 user, score, solved_quizzes 테이블에서 탈퇴 유저 정보는 지우기로 하였다.
탈퇴하고서 1~2년간 데이터를 보관하고 해당 유저가 계정복구를 하면 살려두는 방식이 있다고 듣기는 하였지만
우리 서비스의 경우 그런 점은 감안하지 않았다.
탈퇴를 원하면 유저와 관련된 데이터를 다 삭제하는 것으로 정책을 정하였다.
탈퇴할 때, 여러 테이블의 데이터를 변경해야 하므로 이 부분을 하나의 트렌젝션으로 묶었다.
트렌젝션으로 묶은 부분에서 DB 요청에 대한 병목현상이 발생할 수 있다 보여 메시지 큐를 써서 구현해야 하나 잠깐 고민되었지만
아직은 이용자 수가 적기에 메시지 큐는 쓰지 않기로 하였다.
'Project' 카테고리의 다른 글
[간단한 퀴즈 서비스] 무한 퀴즈 챌린지 설계 고려 (0) | 2024.11.23 |
---|---|
[간단한 퀴즈 서비스] 퀴즈 결과 api 에러 (0) | 2024.11.22 |
[간단한 퀴즈 서비스] 퀴즈 데이터 DB 이관 (1) | 2024.11.20 |
[간단한 퀴즈 서비스] 배포 3/3 (0) | 2024.11.19 |
[간단한 퀴즈 서비스] 배포 2/3 (4) | 2024.11.18 |