[유튜브 클론] 모델 설계

기석·2022년 6월 10일
1

유튜브 클론 코딩

목록 보기
2/3
post-thumbnail

학습하며 만들고 있어 부족한 부분이 많습니다. 댓글로 피드백 주시면 감사하겠습니다.
추후 업데이트하며 잘못된 부분을 고치고 기능을 넣을 예정입니다.

구현에 앞서 도메인 모델을 설계하려 노력해봤다.
JPA 강의, 쿠팡 클론 코딩, 도메인 주도 개발 시작하기 책 등을 참고했다.
아직 퀄리티가 낮지만 방법론만 배우다가 지쳐 평생 못 만들 것 같아서 일단 시작해봤고 나름의 고민이 들어있다.

도메인 설계


  • 채널과 영상 사이에 영상등록 같은 모델이 하나 더 있으면 좋을지 아닐지 고민 중이다.
    유튜브는 영상을 올리고 적합여부를 판정받는데, 그 기록을 남기려면 필요할 것 같다.
    하지만 프로토타입에서 해당 기능을 구현할 예정이 아니라 보류하겠다.

  • 채널 관리, 영상 좋아요 등은 도메인 안에서 구현할 비즈니스 로직이다.

엔티티 설계


  • 원래 도메인 설계 단계에서 Shorts와 Normal 비디오를 나눴는데, 유튜브에서 두 분류의 영상을 다르게 취급하는 것 같지가 않아 그냥 Video에 videoType 변수를 하나 넣어줬다.

  • Member 엔티티

    • channel: 소유한 채널
    • comments: 작성한 댓글들, 알림 기능을 구현하기 위해 가지고 있음
  • Channel 엔티티

    • owner: 채널의 소유자
      • 양방향 참조의 주인은 Member의 FK를 가지고 있는 Channel이다.
    • videos: 채널의 영상들
    • comments: 채널의 모든 댓글들
  • Video 엔티티

    • videoInfo: VideoInfo 밸류 타입. 비디오에 대한 정보들을 가지고 있음
    • comment: 비디오의 루트 코멘트. 계층적인 구조로 설계해볼 것이다.
    • status: 비디오 상태, 예) 공개, 비공개, 노란딱지 등
    • type: 비디오 타입, 예) shorts, 일반 동영상
    • channel: 비디오를 소유중인 채널
      • 양방향 참조의 주인은 Channel의 FK를 가지고 있는 Video다.
  • Comment 엔티티

    • member: 댓글을 작성한 회원
    • content: 댓글 내용
    • video: 댓글을 남긴 비디오
    • replies: 해당 댓글에 대한 답글리스트

테이블 설계


  • VideoInfo 타입에 있던 값들을 VIDEO에 넣어줬다.
  • 답글을 어떻게 구현할지는 아직 고민중이다.
profile
블로그 이사갔어요 https://kiseoky.tistory.com

0개의 댓글