Continuous Challenge

[항해플러스 7기 백엔드] 8주차 회고 - Index를 활용한 성능 개선, MSA구조에서 트랜잭션 처리의 한계와 해결방안 본문

Study/항해플러스 7기

[항해플러스 7기 백엔드] 8주차 회고 - Index를 활용한 성능 개선, MSA구조에서 트랜잭션 처리의 한계와 해결방안

응굥 2025. 3. 16. 00:14

 

늦어졌지만 이제서야 올리는 8주차 회고 아닌 회고..!

8주차부터는 문서 작성 과제가 주어지면서 개발을 할 때보다 더 머리가 아팠던 기억이 있다.


Index를 활용한 성능 개선

더미데이터 생성부터 쉽지 않았던, 인덱스를 활용하여 성능 개선하기

다양한 케이스에 대하여 인덱스를 설정해보고 테스트 해보면서, 인덱스 설계에서 고려해야할 점들을 생각해볼 수 있었다.

https://github.com/o3ozzvb/hhplus-ecommerce/blob/04e2c333422f30e4e46e06d5bfebff1fa3607c85/docs/index.md

 

hhplus-ecommerce/docs/index.md at 04e2c333422f30e4e46e06d5bfebff1fa3607c85 · o3ozzvb/hhplus-ecommerce

Contribute to o3ozzvb/hhplus-ecommerce development by creating an account on GitHub.

github.com

 

인덱스 비교 및 성능 테스트 방법

0. 테스트 환경 구성

 - 동일한 환경의 DB를 2개 세팅하여 인덱스 생성 전과 후를 비교할 수 있도록 한다.

1. 더미데이터를 생성한다. 
 - 더미데이터를 생성하는 방법도 여러가지가 있는데, 그 중에서 java 파일에서 샘플 데이터를 생성하여 멀티 쓰레드를 활용해 병렬 처리로 데이터를 생성하였다. 이 방법을 사용하면 Enum 필드 값을 랜덤으로 가져올 때 용이하다는 장점이 있다. 또한 더미데이터 생성코드를 repo에 포함할 수 있어 코드 관리와 코드 재사용에 유리하다.

2. 조회 쿼리 추출

 - 서비스 내 모든 조회 쿼리를 추출하여 성능 개선이 필요한 쿼리를 선별한다.

3. 인덱스 후보를 선정하고, 각 인덱스를 적용해가며 성능을 측정 및 비교한다.

 

 

MSA구조에서 트랜잭션 처리의 한계와 해결방안

https://github.com/o3ozzvb/hhplus-ecommerce/blob/92dd491eeb2f58b24af673832e8af7562e621e41/docs/msa.md

 

hhplus-ecommerce/docs/msa.md at 92dd491eeb2f58b24af673832e8af7562e621e41 · o3ozzvb/hhplus-ecommerce

Contribute to o3ozzvb/hhplus-ecommerce development by creating an account on GitHub.

github.com

 

 

728x90
728x90
Comments