작성
·
370
0
안녕하세요!
강사님 강의를 듣고 msa 적용하는 프로젝트를 진행중인데, 프로젝트 controller단 전역에서 발생하는 예외를 처리하고 싶어 @@RestControllerAdvice를 활용하려고 생각중입니다.
msa에서 예외를 전역으로 처리하려면 gateway에서 @RestControllerAdvice를 활용해야 될까요? 아니면 각각의 마이크로서비스마다 @RestControllerAdvice를 활용해야 될까요?
둘중 어떤 설계가 더 효율적일지 답변주시면 감사하겠습니다🙏🙏
답변 2
0
안녕하세요, 이도원입니다.
예외에 대한 처리 중 전체 애플리케이션에 적용되는 문제라면, 말씀하신 전역에서 처리 되도록 수정하는게 필요하다고 생각됩니다. 추가로 개인적인 의견을 말씀드리면, apigateway-service에서 예외 처리 시, 단순한 로그 출력이나, 에러 메시지 확인 용도가 아닌, 비즈니스 로직이 포함되어야 한다면 Gateway 보다는 각 컨트롤러 들을 일반화시킨 후에 해당 처리를 넣는 게 좋다고 생각됩니다.
다른 의견 있으시면 말씀해 주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. mnk1106님.
MSA 아키텍처에서 전역 예외 처리를 어떻게 구성하는 것이 좋을지에 대한 질문에 답하기 위해, 유사한 주제의 기존 답변을 찾아보았습니다.
“Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)”에서 비슷한 문제에 대해 이도원 강사님께서 답변해 주셨습니다. 강사님은 @ControllerAdvice
와 ResponseEntityExceptionHandler
에 대해 설명하며, 스프링 부트에서 미리 정의된 특정 예외에 대한 처리 방법을 상속받아 사용할 수 있다고 조언하셨습니다. 이 방법은 Spring MVC 애플리케이션의 전반적인 예외(Global)를 처리하는 데 유리합니다.
또한, “service단에서 exception처리시”라는 질문에 대한 답변에서 예외를 서비스(비즈니스 로직)단에서 처리하는 것에 대한 조언도 제공되었습니다. 이 경우, 예외가 컨트롤러로 넘겨질 필요가 없으면 ServiceImpl에서 처리하는 것이 맞다고 언급되었습니다.
API Gateway에 @RestControllerAdvice
를 적용하는 것과 각 마이크로서비스에 적용하는 것 사이의 선택은 여러 요인을 고려해야 합니다. 마이크로서비스 각각에서 예외를 처리하는 것은 더 많은 유연성을 제공하지만, API Gateway에서 전역 예외 처리를 구성하는 것은 일관성과 보안 측면에서의 이점을 제공할 수 있습니다. 결국 설계의 목적과 요구 사항에 따라 결정이 달라질 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.