본문 바로가기
📕 Spring Framework/Spring Project

2022.05.26 「트래픽이 몰렸을 경우」

by GroovyArea 2022. 5. 26.
이메일을 통해 인증 번호를 전송하는 방식은 매우 느리다. 서버 사용자가 늘어날수록 트래픽이 많이 몰려 인증 번호를 전송하는 시간이 무진장 늘어날 것이다. 이러면 안 된다.

그래서 찾아보았다. 트래픽이 몰렸을 경우에는 어떤 식으로 해결을 하는지?
동기와 비동기 방식이 있다. 동기는 첫 프로세스가 완료되어야 다음 프로세스로 넘어가는 방식이고, 완료 여부와 상관없이 다음 프로세스를 요청하거나 실행하는 것이 비동기 방식이다. 

이메일 전송에 이 비동기 방식을 적용해 보고자 한다.

 

Async Config

스프링에서는 @Async를 통해 비동기 방식을 쉽게 구현할 수 있다. 

configuration을 통해 스레드의 개수를 커스터 마이징 시켰다.

 

 

Async 적용

비동기 방식으로 동작하길 바라는 메서드에 애노테이션을 적용시킨다.

그럼 이 메서드는 비동기식으로 동작할 것이다.

트래픽이 몰렸을 때도 각 사람의 요청마다 메일을 비동기적으로 전송한다.

 

JoinController

스레드가 사용하는 큐의 저장공간이 넘칠 경우 예외가 발생하는데 이건 try catch를 통해 해결했다.

 

결론

트래픽이 몰렸을 경우에 대해 고민을 많이 했지만 의외로 배웠던 기억 속에 답이 있었다. 

실제로 애노테이션을 통해 사용한 건 처음이다. 스프링은 정말 편리한 것 같다.. 이런 걸 어떻게 만들었을까 진짜 대단하다.

이제 남은 건 주문인데 파이팅해보자~

반응형