[AWS/Spring Boot] 영화 페이지 프로젝트 설계

djawnstj·2022년 9월 15일
1

백엔드 이직을 결심하고 Spring 공부를 하던 중 13년차, 5년차, 2년차 분들이 진행하던 스터디를 알게돼서 바로 참여하고싶다고 연락을 드렸다.

운 좋게 합류를 하게되었고 스터디는 AWS와 Spring을 이용해서 네이버 영화 클론 페이지를 제작하는 것이었다. 다만 모두 직장인이다보니 시간적 여유가 부족해 완전 라이트한 기능구현을 하기로 했고 나는 특히 기능을 덜어냈다..

사용 스킬

  • JAVA 17, Kotlin 1.7, Spring Boot 2.7.x, JPA
  • DB: MariaDB, H2
  • Server: AWS(EC2, S3), (minikube)

우선 사용스킬은 이렇다. Kotlin lover인 만큼 코틀린으로 프로젝트를 제작할거고 영화 포스터 이미지는 S3 스토리지를 한번 써볼 예정이다.
나는 스프링 프로젝트야 기간안에 충분히 끝낼 수 있다 생각하지만, AWS를 다루는데 아직 부족함이 많기때문에 스프링쪽 기능을 최소화하기로 했다.
만약 다 하고도 시간이 남는다면 WAS와 API 서버를 나눠 minikube를 사용해볼 생각이다.

ERD 초기 설계


일단 구상한 테이블은 이렇다. 물론 프로젝트 중간에 변경사항이 있을 수 있다.
일단 난 거의 모든 프로젝트를 유저테이블 중심으로 짰는데 우아한 형제들의 김영한 개발자님이 회사에서 주문테이블이 메인이라고 한 이유를 이번에 조금 이해했다.
설계를 하다보니 영화테이블을 중심으로 테이블이 설계가 됐다.

일단 기본적으로 create_time과 update_time은 BaseEntity로 모든 엔티티에 넣을 예정이다.

user 테이블

비지니스와 아무 관계없는 uid를 식별키로 두고 다른 정보는 간단하게 id, pw, 이름 정보만 넣었다.

movie 테이블

이미지 정보와 영화 이름, 상영시간, 개봉일, 줄거리가 들어간다.
설계시점엔 영화와 이미지를 1:1로 잡아놨는데 글을 적다보니 나중에 이미지가 1:N 관계로 한 영화에 다수의 이미지가 들어갈 수 있다는 생각에 연관관계 주인을 이미지 테이블로 변경해야겠단 생각이 든다.

movie_image 테이블

이미지 경로가 들어있다.

genre 테이블

기능을 단순화하기 위해 장르 이름만 넣어주었다.

movie_genre 테이블

영화와 장르의 N:M 관계를 위한 중간 테이블이다.

movie_rate 테이블

유저키와 영화키를 외래키로 받고 별점과 평가를 넣어주었다.

ERD-1


위에서 적은 영화, 영화 이미지 연관관계 주인 변경, 오타 수정사항!을 반영한 ERD이다.

사용 절차

회원가입, 로그인은 액티비티 다이어그램으로 그렸고 영화 홈은 유즈케이스 다이어그램으로 그렸다.(사실 제대로 한건진 모르겠다...)

회원가입

로그인

영화 홈

마무리

정말 오랜만에 프로젝트 기획을 했는데 ERD 설계할때 너무 재밌었다. 스프링을 다시 해본다는점도 좋았고 JPA, AWS 등 새로 배울점들도 너무 기대된다.
결과물이 어떻게 나올진 모르겠지만 2~3개월 정도의 스터디 기간이 성장을 조금이라도 할 수 있는 시간이 되도록 열심히 해야겠다.

profile
이용자가 아닌 개발자가 되자!

0개의 댓글