문제 상황
- 사용자가 비밀번호를 잊어버렸을 때 이메일에 임시 암호를 전송하는 기능을 구현하였다. 구글 이메일을 이용하였는데, 이메일 전송에 1~2초 정도 긴 시간이 소요되었다.
문제점
- 보통 이메일이 바로 도착하지 않더라도 메일 전송을 요청한 후 로그인 페이지로 바로 이동하는 것이 사용자 경험을 더 높인다.
해결
- @Async 어노테이션을 활용하면 메서드를 비동기로 처리할 수 있다.
- Spring어플리케이션이 시작되는 메서드에 @EnableAsync를 추가하고 비동기적으로 처리할 메서드에 @Async를 추가한다.
결과
https://github.com/hanbonghun/spring-QA-board/commit/963f93cd436e31de1e82d95dc9736cd6a7586a84
후기
- 단순히 어떤 기능이 동작되기만 한다고 끝이 아닌 거 같다. 세부적인 처리 과정을 고려해야 사용자가 웹사이트를 쾌적하게 이용할 수 있으므로 여러 상황을 고려하고 코드를 작성하자.