Spring Boot 콘서트 예약 시나리오 동시성 문제 분석
·
프레임워크/Spring
개요https://github.com/hhpb-code/hhplus-concert GitHub - hhpb-code/hhplus-concert: 콘서트 예약 서비스콘서트 예약 서비스. Contribute to hhpb-code/hhplus-concert development by creating an account on GitHub.github.com콘서트 예약 시스템은 다수의 사용자가 동시에 접근할 수 있기 때문에 여러 동시성 문제가 발생할 수 있다.특히 좌석 예약과 같은 경우, 동일 좌석이 중복 예약되거나 잘못된 예약 내역이 처리될 가능성이 높다.이 글에서는 콘서트 예약 서비스에서 발생할 수 있는 대표적인 동시성 문제를 분석하고 이를 해결하기 위한 방안을 제시한다.동시성 문제란?동시성 문제는 여러 프..
필터(Filter) vs 인터셉터(Interceptor)
·
프레임워크/Spring
개요콘서트 프로젝트에서 대기열을 구현하는 과정에서, 대기열 검증 로직을 어디서 처리할지 고민하게 되었다.대기열 토큰을 가지고 입장 가능 여부를 검증하는 로직을 작성했는데, 이 로직을 필터나 인터셉터 중 어디에 두는 게 적절할지 알아보면서, 필터와 인터셉터의 차이점과 용도에 대해 정리해보았다.필터(Filter)필터는 J2EE 스펙에서 제공하는 기능으로, 디스패처 서블릿(Dispatcher Servlet) 요청 전에 부가적인 작업을 처리할 수 있다. 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 프론트 컨트롤러이며, 필터는 스프링의 범위를 벗어나 톰캣과 같은 웹 컨테이너에서 관리된다. 즉, 디스패처 서블릿의 전후에 처리되는 것이다.필터는 디스패처 서블릿 전에 특정 요청을 선별하거나, 요청과 응답을 가로채는..
Spring Global Exception Handler (전역 예외 처리)
·
프레임워크/Spring
Spring Global Exception Handler개요Spring에서 예외 처리 방법은 여러 가지가 있다.가장 흔히 사용되는 방법으로는 try-catch 문을 이용한 예외 처리, @ExceptionHandler를 이용한 예외 처리, 그리고 전역에서 예외를 처리할 수 있는 @ControllerAdvice를 이용한 방법이 있다.이 글에서는 각 방법의 특징과 장단점을 알아본다.1. try-catch 문을 이용한 예외 처리@RestControllerpublic class TestController { @GetMapping("/test") public String test() { try { // 예외 발생 코드 throw new Exception..