반응형 개발/백엔드2 [백엔드]Singleflight 디자인패턴 최근 회사에서 특정 API에 트래픽이 몰릴 때 서버가 뻗는 현상을 경험했습니다. 캐시를 도입했는데도 캐시가 만료되는 순간 동시에 들어온 수백 개의 요청이 모두 DB를 호출하면서 발생한 문제였죠. 결국 당장의 극약 처방으로 스케일인아웃으로 해결하긴했지만 백엔드 java 코드 설계상의 개선 필요성은 분명 했습니다.해당 문제를 개선하기위해 구글링을 하던와중 다른 언어에선 이런 사례를 어떻게 해결할까 , Go 언어의 singleflight 패키지와 이를 활용한 패턴을 발견했습니다.📌 문제의 시작: 캐시 Stampede 현상우리 서비스와 일치하는 건 아니지만 이해가 쉬운 예제로 인기 상품 정보를 조회하는 API가 있었습니다:@RestController@RequiredArgsConstructorpublic cla.. 2025. 7. 11. Bean scope Spring bean scope 스프링 빈(bean)에서의 scope(스코프)란 빈 이 생성되고 제거되는 생명주기라고 정의할 수 있다. 흔히 알고 스프링의 기본 빈은 싱글톤으로 생성되며 해당 빈의 스코프는 스프링의 컨테이너가 시작부터 종료까지 유지되는 가장 긴 생명주기를 가지고 있다. 주로 필드 주입, 기본 생성자 방식으로 DI 하는 클래스 나 인터페이스 객체들이 이 빈 스코프 생명 주기에 해당한다. 스프링 빈들의 스코프는 스프링 컨테이너가 관리를 하며 일반적으로 클라이언트가 관리하지 않는 스프링에 의존적인 빈 들이다. 하지만, 일반적인 스코프를 가지지 않는 빈들 또한 스프링에 존재한다. prototype scope: 이름 그대로 사용자 정의 빈 스코프이다. 빈의 생성과 DI만 스프링이 관여하고 빈을 제.. 2023. 3. 17. 이전 1 다음