반응형 성능최적화2 [백엔드]Singleflight 디자인패턴 최근 회사에서 특정 API에 트래픽이 몰릴 때 서버가 뻗는 현상을 경험했습니다. 캐시를 도입했는데도 캐시가 만료되는 순간 동시에 들어온 수백 개의 요청이 모두 DB를 호출하면서 발생한 문제였죠. 결국 당장의 극약 처방으로 스케일인아웃으로 해결하긴했지만 백엔드 java 코드 설계상의 개선 필요성은 분명 했습니다.해당 문제를 개선하기위해 구글링을 하던와중 다른 언어에선 이런 사례를 어떻게 해결할까 , Go 언어의 singleflight 패키지와 이를 활용한 패턴을 발견했습니다.📌 문제의 시작: 캐시 Stampede 현상우리 서비스와 일치하는 건 아니지만 이해가 쉬운 예제로 인기 상품 정보를 조회하는 API가 있었습니다:@RestController@RequiredArgsConstructorpublic cla.. 2025. 7. 11. [프론트엔드] useMemo와 useCallback 제대로 이해하기 최근 개발하면서 useMemo와 useCallback을 제대로 이해하지 못하고 사용했다가 문제를 겪었습니다. 오히려 성능이 나빠지거나 예상치 못한 버그가 발생하는 경험을 했습니다.📌 문제의 시작: 무작정 사용했던 최적화 훅들제가 작성했던 코드 형식의 간단예제입니다:// 내가 작성했던 코드function MyComponent({ data }) { // useMemo 사용 const processedData = useMemo(() => { return data.map(item => item.value); }, []); // 😱 의존성 배열에 data를 빼먹음 // "함수는 무조건 useCallback" 이라고 생각 const simpleHandler = useCallback(() => {.. 2025. 7. 11. 이전 1 다음