유튜브 클론코딩(1)
내가 개발역량이 충분한가?
항상 이런 고민을 하고, 로드맵을 읽어보고는 한다.
이렇게 읽어들인 정보를 활용을 하지 않다보니, 그대로 멈춰있는 기분이 항상 느껴졌다.
그래서 클론코딩을 시작하기로 했다!
+ 마침 방학이네?
구조 분석
유튜브는 일반 사용자를 대상으로 하는 사이트
유튜브 stuido는 채널을 관리하는 사이트
시작 전! 사용할 용어 정리
채널 : 사용자 계정에 주어지는 고유한 채널
영상 : 일반 영상 + 쇼츠
커뮤니티 글 : 커뮤니티 탭에 작성되는 글
컨텐츠 : 일반 영상 + 쇼츠 + 커뮤니티 글
댓글 : 컨텐츠에 작성하는 댓글 덧글 : 컨텐츠에 작성하는 댓글의 댓글
유튜브 클론 (과정)계획
(클론하는 과정에서 변경하지는 않고, 계획한대로 완성 후 추가/변경 할 예정)
구현할 기능 : 채널 + 일반 영상 + 댓글 (시간이 남으면, 나중에 shorts, 스트리밍까지 해볼 예정)
- db 구조 설계
- 회원가입, 로그인 기능 구현
- 일반 영상 관련 기능 구현 (업로드, 조회, 재업로드, 삭제 / CRUD)
- 댓글 기능 구현 (작성, 조회, 수정, 삭제 / CRUD)
기능 구현 계획
사용자
는 두 분류로 나뉜다.
사용자 : 채널(로그인된 사용자) / 비로그인 사용자
채널 -> 영상(일반, 쇼츠)
- 채널은 영상을 업로드 할 수 있음 (1)
- 채널이 삭제되면 업로드 한 영상, 영상에 표시한 좋아요, 싫어요는 삭제됨. 조회수는 유지 (2)
- 채널은 다른 채널이 업로드한 영상에 좋아요 또는 싫어요 표시를 할 수 있음 (2)
- 채널은 다른 채널이 업로드한 영상에 자신이 한 좋아요 또는 싫어요 표시를 취소 할 수 있음 (2)
- 채널이 영상을 시청하면 조회수가 올라감. +조회수 중복 방지 기능 필요 (2)
- 채널은 자신이 업로드한 영상에 대해서 설정 변경이 가능함 (4)
채널 -> 채널
- 채널은 다른 채널을 구독할 수 있음 (1)
- 채널이 삭제되면 구독한 채널에 대한 정보는 모두 사라짐 (1)
- 채널은 구독한 채널에 대해 알림 설정이 가능함 (일단 제외)
- 채널은 채널에 후원할 수 있음 (일단 제외)
채널 -> 댓글/덧글
- 채널은 컨텐츠에 댓글/덧글을 작성할 수 있음 (1)
- 채널이 삭제되면 작성한 댓글/덧글, 댓글/덧글에 표시한 좋아요, 싫어요는 삭제됨 (1)
- 채널은 다른 채널이 작성한 댓글/덧글에 좋아요 또는 싫어요 표시를 할 수 있음 (1)
- 채널은 다른 채널이 작성한 댓글/덧글에 자신이 한 좋아요 또는 싫어요 표시를 취소 할 수 있음 (1)
- 컨텐츠 업로더(채널)가 댓글을 작성하면 이름에 업로더 표시를 해준다. (2)
- 컨텐츠 업로더(채널)가 댓글/덧글에 하트를 달면 업로더 하트 표시를 해준다. (2)
- 컨텐츠 업로더(채널)가 댓글/덧글에 댓글을 달면 업로더 댓글 표시를 해준다. (2)
ERD
db설계에 대해서는 잘 모르지만 블로그 글들을 보고 테이블의 구조를 작성해봤다.
(잘못된 구조가 있을 수 있음)
User와 Channel을 분리한 이유는, 채널을 관리하는 유저를 여러명 두도록 나중에 변경할 때 유용하도록 작성했고,
user_id를 Channel에 포함시킨 이유는 변경할 때, 쿼리를 어떻게 작성하는지 한번 고민해보고 싶어서 하나만 포함시켰다.
대표적으로 참고한 글들 : db설계 틀 잡기, 정규화
물론 video, image의 크기 등 빠진 내용이 많을 것이다.
이 부분에 대해서는 백엔드를 구성하면서 필요한 부분에 대해서 구조를 견고하게 수정할 것이다.
댓글남기기