DB 리모델링 _ 실전 적용하기

박민우·2022년 4월 14일
0

모아부자

목록 보기
7/9
post-thumbnail

DB를 수정하게 되었다.

Why?

사용자가 입금, 출금, 저금한 데이터를 호출할 때마다 사용자가 저장한 record 들을 모두 가져와서 계산해야 한다 !

이 로직을 다 만들고, 메소드로 나눈 것만으로도 엄청난 것이라고 생각한다.
프로젝트 기간이 넉넉하지 않았기에 이만큼 구현한 것도 좋은 아이디어라고 생각한다.

그리고 아. 직. 은. 그렇게까지 호출 시간이 오래 걸리지는 않았다.
하지만 사용자가 오래도록 사용하고 데이터가 쌓이게 되면 홈 화면을 한 번 불러낼 때도 시간이 점점 오래 걸리게 된다. 서비스를 꾸준히 이용해주는 단골 사용자가 점점 더 불편을 느끼게 되는 서비스라니 ...

그래서 어떤 방법으로 개선하면 좋을지 고민하였다.

그리고 바꾸게 된 방식은 DB를 수정하는 것이었다. 데이터를 건드리는 것은 기존의 사용자들에게 불편감을 줄 수 있기에 조심스러운 작업이었다.

Wallet이라는 테이블을 만들어 Member와 @OneToOne 관계를 맺어주었다. 사용자의 재정 상태를 가지고 있는 테이블이라 돈을 입력하는 recordServiceImpl 부분의 로직도 수정해주었다.

이를 통해 사용자가 입력할 때마다 데이터가 수정되고, 불러올 때에는 저장되어있는 데이터를 찾아오기만 하면 되는 구조로 바뀌었다. (훨씬 가벼워진 느낌이다!)

해당 부분의 부하 테스트는 JMeter 테스트 글로 따로 남겨두려 한다.

데이터가 상태 관리의 개념을 갖는 것은 참 찝찝한 일이다.
좀 더 develop 한다면, 이 부분의 정확성을 높이기 위해 스케줄러를 이용해 매일 입력한 데이터와 일치하는지 체크하는 로직을 남겨두면 참 좋을 것 같다.


아래는 수정 전 ERD이다.

profile
KingdomOfGod newPerson = new KingdomOfGod();

0개의 댓글