daadaadaah / review-study-app

0 stars 0 forks source link

비동기+싱글 스레드로 비즈니스 로직의 성능 4.5배 향상(평균 45초 -> 10초 단축) #77

Closed daadaadaah closed 2 months ago

daadaadaah commented 3 months ago

기존 방식

해결 과정

성과

As-is

스크린샷 2024-08-28 오후 2 40 19

To-be

스크린샷 2024-08-28 오후 2 39 21
daadaadaah commented 3 months ago

이 개선 사항은 동기 -> 비동기로 변경함으로서 성능 향상된걸 따로 뺀 것이다. 싱글 스레드로 안하면, 더 빠른 성능을 얻을 수 있지만, 데이터 일관성 때문에 싱글 스레드로 제한했다. 따라서, #75에 포함시키면, 싱글 스레드 내용을 추가해야 이 내용을 따로

daadaadaah commented 3 months ago

만약, #75 에 포함시킨다면, 다음과 같이 #75 를 변경할 것 같다.

2.@Async로 비즈니스 로직과 Logging 로직을 디커플링하여 장애 격리 및 성능 4.5배 향상 (평균 45초→10초 단축)

문제

해결 과정

  1. (원인) 위와 같은 문제가 발생하는 원인은 관심사가 다른 두 로직간의 강한 결합력 때문이라고 생각했습니다. 왜냐하면, 비즈니스 로직인 Github 작업과 부가 기능 로직인 Google Sheets Logging 작업이 동기 방식으로 이루어지다 보니, 한 쪽의 문제가 다른 쪽에 영향을 주었기 때문입니다.
  2. (해결책) 따라서, 이 강한 결합력을 끊어내기 위해, 비즈니스 로직인 Github 작업과 부가 기능 로직인 Google Sheets Logging 작업을 디커플링 시켜야겠다고 생각을 했고, @Async 어노테이션을 도입하여 비동기 방식으로 변경했습니다.

성과 -> 성능 향상은 싱글스레드 적용했을 때의 성능