프로젝트 회고

Optimizer 프로젝트 소개

iksadnorth 2023. 11. 27. 11:07

👣 개요

그동안의 프로젝트는 기능 구현에 초점이 맞춰져 있을 뿐 서버 최적화에 대해
진지한 논의가 있던 프로젝트는 없었다. 때문에 오로지 서버 최적화에 대해서만
실험하는 프로젝트를 진행하고자 하여 Optimizer 프로젝트를 진행하고자 한다.

Optimizer 프로젝트는 다음과 같은 형식으로 진행될 예정이다.

1. 다양한 연관 관계의 엔티티들을 정의한다.

더보기

Item, Member라는 기본 엔티티

오직 Member 만으로 연관 관계가 설정된 Follow 엔티티

Member와 Item과의 연관 관계가 설정된 Wish 엔티티

차후 평균 별점과 같은 통계를 위한 Rating 엔티티

 

2. 각 엔티티를 위한 더미 데이터를 최소 1만개 ~ 최대 100만개 적재한다.

 

GitHub - iksadNorth/sql-maker

Contribute to iksadNorth/sql-maker development by creating an account on GitHub.

github.com

3. 테스트 코드를 이용해 각 코드마다 n번 실행 후 n번 동안의 실행 시간을 로그로 기록하기

 

👣 실험 목록

다양한 최적화 전략에 의한
최적화 여부와 성능 개선 정도를 확인하기 위해 
다음과 같은 최적화 전략들을 실험하고자 한다.

1. 인덱스 여부에 따른 검색 속도 향상

 

Optimizer 中 인덱스 여부에 따른 검색 속도 향상

👣 개요 인덱스의 여부에 따른 검색 속도 향상 여부를 확인하는 실험. 👣 실험 계획 Item은 name에 인덱스가 부여되지 않았고 해당 Item 테이블의 Row 갯수는 100만 개 입니다. 실험을 위해 사용된 코

ikadnorth.tistory.com

 

2. 캐싱에 따른 검색 속도 향상

 

Optimizer 中 캐싱에 따른 검색 속도 향상

👣 개요 캐싱에 따른 검색 속도 향상 여부를 확인하는 실험. 👣 실험 계획 Item 테이블의 Row 갯수는 100만 개 입니다. 테스트를 위해 2개의 메서드를 구성했습니다. 1번째 메서드는 'readById' 메서드

ikadnorth.tistory.com

 

3. 인덱스에 따른 삽입 속도 저하

 

Optimizer 中 인덱스에 따른 삽입 속도 저하

👣 개요 인덱스의 여부에 따른 삽입 속도 저하 여부를 확인하는 실험. 👣 실험 계획 Item은 name에 인덱스가 부여되지 않았고 해당 Item 테이블의 Row 갯수는 100만 개 입니다. 실험을 위해 사용된 코

ikadnorth.tistory.com

 

4. 반정규화에 의한 통계 쿼리 실행 속도 향상

 

Optimizer 中 반정규화에 의한 통계 쿼리 실행 속도 향상

👣 개요 반정규화에 의한 통계 쿼리 실행 속도 향상 확인. Item 테이블과 연관 관계에 놓여 있는 Review 테이블의 Rating 칼럼을 이용해 Item 당 평균 평점값을 계산하는 통계 쿼리를 반정규화를 통해

ikadnorth.tistory.com

 

5. N+1 문제 해결 시 검색 속도 향상

 

Optimizer 中 N+1 문제 해결 시 검색 속도 향상

👣 개요 N+1 문제 해결 시 검색 속도 향상. 의도적으로 Dto에서 요구하는 엔티티를 Lazy Fetch로 불러와서 N+1 쿼리를 내보내도록 유도함. 그리고 다양한 방법으로 N+1 문제를 해결하면서 성능 향상을

ikadnorth.tistory.com

 

6. Projection 연산 적용 시 검색 속도 향상

 

Optimizer 中 Projection 연산 적용 시 검색 속도 향상

👣 개요 Projection 연산을 통해 꼭 필요한 정보만 가져와 검색 속도 향상. 👣 실험 계획 Review 테이블의 Row 갯수는 10만 개 입니다. 그리고 Review 테이블의 칼럼 갯수는 총 5개 입니다. 만약 DTO에서 5

ikadnorth.tistory.com