mail 알림을 구현하면서 응답 지연 이슈가 있었다.
사용자에게 알림 메일을 발송해야 했는데 메일 발송이 끝날 때 까지 클라이언트가 응답을 받지 못해 처리가 늦어지는 문제가 발생했다.
나는 이 문제를 스프링에서 제공하는 비동기 처리 기능을 이용하여 해결하고자 했다.
해결 전 요청 - 응답 과정은 아래와 같았다.
팀원 신청 api 호출 - 팀장에게 신청 알림 메일 발송 - 신청 완료 응답
보기엔 간단한 로직이지만 메일이 발송되는 시간 동안 사용자가 응답을 받을 수 없고 그 시간이 사용자가 불편함을 느낄 수 있는 시간이었다. 메일을 1개 발송할 때도 지연이 있었는데 발송해야하는 메일이 늘어나면 그만큼 시간이 지연됐다.
👉🏻 User Thread
👉🏻 Kerner Thread
스레드를 미리 만들어 놓은 하나의 집합
작업 요청이 늘어나도 스레드의 전체 개수가 늘어나지 않음
→프로그램 성능 저하 방지
크기를 너무 크게 지정하면 메모리 낭비 야기함