[Spring Boot] ThreadPoolTaskExecutor을 이용하여 Slack에 서버 에러 알림 송신하기

윤진원·2023년 6월 18일
1

Spring Boot

목록 보기
4/6
post-thumbnail

문제 상황❗️

필자는 현재 졸업 프로젝트로 의류 중고 거래 웹 서비스를 개발중이다.
그러던 와중, 프론트엔드 팀원과의 연동이 시작되었다.

하지만, 백엔드 서버에서 예외가 발생하면 팀원들이 모두 바로 파악하기 쉽지 않았고, 그에 따라 팀 Slack 채널에 서버에서 예외나 에러가 발생할 시, 에러 메시지로 수신받을 수 있게 만들려고 한다.


Slack에서 제공하는 의존성을 주입하면 쉽게 개발할 수 있으니, 소스 코드는 필자의 Pull Request 링크를 첨부한다.
메시지 포맷만 입맛에 맞게, 변경해주면 되겠다.
스크린샷 2023-06-18 오전 2 59 25


성능 비교 🧠

우선 서버 에러 알림 송신 기능 개발은 성공했다! 하지만, 응답 속도가..?

  • 3가지 상황으로 나누어 Apache JMeter를 통해 살펴보자!
    정상적인 API 호출, ThreadPoolTaskExecutor를 사용한 예외 알림 전송, 사용하지 않은 예외 알림 전송
  • 10명의 유저가 1회씩 총 10번의 예외를 발생하도록 하였다.

  1. 정상적인 API 호출의 경우
    스크린샷 2023-06-18 오후 4 11 59

  1. ThreadPoolTaskExecutor 를 사용하지 않은 예외 알림 전송
    스크린샷 2023-06-18 오후 4 23 17

  1. ThreadPoolTaskExecutor 를 사용한 예외 알림 전송
    스크린샷 2023-06-18 오후 4 24 56

결론💡

정상적인 API를 호출할 경우, 평균 20~30ms의 응답 속도를 보였다.
하지만, Slack으로의 예외 알림 기능을 추가하고 예외를 발생시켰을 때, 평균 300ms 이상의 느린 응답속도를 보였다!

  • ThreadPoolTaskExecutor 로 커스텀 스레드풀을 작성하고, 예외 발생과 Slack으로의 메시지 전송을 비동기로 처리하였을 때는 평균 10ms~20ms의 응답속도를 보였다.

결론적으로, 약 95% 이상의 높은 성능 개선을 할 수 있었다!

profile
기억보단 기록을

0개의 댓글