최검기 ‐ Exception Filter & Slack Notification - boostcampwm2023/iOS04-HeatPick GitHub Wiki
Exception Filter
Exception Filter는 NestJS에서 예외 처리를 중앙화하고 표준화하는 역할을 수행합니다. 이를 통해 프로그램에서 발생하는 모든 에러에 대해서 일관된 에러 처리 및 응답 형식을 제공할 수 있습니다.
개발을 진행하는 과정에서, 서버 내부에서 예상하지 못한 Internal Error가 발생하는 경우가 많았고 이에 대한 처리가 없는 경우 서버가 다운되는 현상이 계속해서 발생했습니다. 서버가 다운될 때 마다 서버를 재부팅하는 불편한 과정을 줄이기 위해서 이러한 에러들을 한 번에 처리할 방법을 고민하게 되었고, NestJS의 Exception Filter 기능을 알게 되어 적용하기로 하였습니다.
위와 같이 코드를 구성하여, throw된 모든 에러에 대해 에러 코드, 타임스탬프, 메세지를 담은 response를 client측으로 송신하게 하였습니다.
동시에 서버에서 발생한 구체적인 에러정보를 iOS팀과 공유하기 위해 Slack에 에러 메세지를 전송하는 기능을 추가하였습니다.
HTTP 응답 자체에 구체적인 메세지를 담는 방법도 있지만, 이러한 구현 방법은 보안에 취약하다는 문제가 있습니다. 응답에 구체적인 에러 사유를 담는 경우 서버의 취약점에 대한 정보를 제공할 수 있기 때문입니다.
따라서 서버 내부에서 발생하는 구체적인 에러는 개발을 진행하고 있는 팀원들끼리만 공유하기 위해 Slack으로 에러 메세지를 전달하는 기능을 구현하였습니다.
위와 같이, SlackUrlHook을 사용하여 미리 만들어둔 채널로 에러 메세지가 전송될 수 있도록 하였습니다.
다음과 같이 구체적인 에러 메세지를 슬랙에서 확인할 수 있습니다.