Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[신윤섭] 5차 과제 제출 #28

Open
wants to merge 26 commits into
base: develop
Choose a base branch
from

Conversation

supsup-hae
Copy link
Member

문제 해결 과정

요구사항

기존 코드 시간 측정

- 기존 코드를 사용해 데이터를 DB에 삽입하고 인기 게시글 조회 소요 시간을 측정합니다.

 

성능 개선 및 시간 측정

- 인기 게시글 조회 API를 여러 방법으로 개선합니다.
- 각 방법 별로 메소드를 분리하고 시간을 측정합니다.
- 메소드 단위로 방법을 분류할 수 없다면 편한 방식으로 진행하고 기록해도 좋습니다.

1. 기존 코드 시간 측정

  • 4차 과제 진행 시 인덱싱을 이미 적용한 상태였기 때문에 해당 부분을 주석 처리하고 10, 100, 500, 1000회 요청을 기준으로 측정을 진행하였다.
  • 300회도 측정에 포함해보았지만 100회와 결과 값이 차이가 유의미하지 않아 제외했다.

    image
    image
    image
    image
  • 500회를 넘어가는 시점에서 결과 값이 8초 대로 급격하게 증가했다. 이제 해결해보자

2. 해결 과정

2-1. Index

  • 4차 과제 제출 시 반영한 Index 구성을 그대로 다시 적용하여 결과 값을 측정했다.

    image
    image
    image
    image
    • 10, 100회 요청 시에는 유의미한 성능 개선이 이루어지지는 않았지만, 500회 요청 부터는 500(8280 -> 3079), 1000(10401 -> 3194)로 대략 60 - 70%의 성능 개선이 진행되었다!.

2-2. cache

  • 기존 인덱싱까지의 성능 개선 결과만 표현하려 했다가 PR 진행을 위해 추가적으로 도입해보았다.
  • Local-Memory를 이용해서 Spring Cache를 구현하여 이를 적용 시킨 결과이다.

    image
    image
    image
    image
    • 이래도 되는 건가 싶을 정도의 성능 개선이 있었다.
    • 10 (331 -> 134), 100(1872 -> 196), 500( 8280 -> 409), 1000( 10401 -> 164)
    • 대략적으로 60% 많게는 95%의 성능 개선이 이루어졌다!
    • 1000회 요청부터는 응답 값의 20%가 오류가 발생했다. 아마도 Local Memory를 이용한 캐시 적용으로 Race Condition이 발생한 게 아닐까 한다.

supsup-hae and others added 26 commits November 9, 2024 14:07
- key 값이 공유 되지 않도록 application.properties 제외
- SaveSinglePostRequest.java
- SavePostsByExcelRequest.java
- id를 기반으로 게시글 생성
- request dto을 record로 변경 시 생긴 코드 수정 반영
- id를 기반으로 게시글 조회 및 영속성 컨텍스트 이용한 조회수 증가
- 오타 수정 및 직관적인 네이밍 반영
- likes를 기반으로한 Pageable 정렬 기능 추가 위함
- 페이지네이션과 추가 기능(현재, 전체 페이지 수) 구현
- likes 값에 따른 DESC 정렬
- 메서드명을 더 정확하게 수정
- URI 경로를 RESTful 원칙에 맞게 수정
  - /search → /{id}
  - /single → /
  - /delete → /{id}
- `PostDto` -> `PostResponse`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant