
1. 세션에서 JWT로 전환 세션은 브라우저에 세션 ID를 저장하고 서버 메모리에 사용자 정보를 저장하는 stateful 방식이다. 이 구조는 두 가지 문제가 있다. 서버를 재시작하면 메모리에 저장된 세션이 모두 사라져 전체 로그아웃이 발생한다. 서버가 여러 대로

0. 들어가며 독크독크 플랫폼에서 개선 포인트를 찾는 중에 데이터 양이 증가할수록 성능 저하를 유발할 수 있는 비효율적인 로직을 발견했다. 특히 페이지네이션 처리 방식에서 개선할 지점을 포착하게 되었고, 이에 대한 고민과 해결 과정을 기록해보고자 한다.

0. 프로젝트 개요 현재 나는 독크독크라는 독서모임 플랫폼을 개발하는 프로젝트에 참여하고 있다. 독크독크는 독서모임을 진행하는 사람들을 위한 플랫폼으로, 모임 중 나눈 대화와 생각들이 모임이 끝난 뒤 단순한 기억으로 사라지지 않고 개인과 모임의 기록으로 남을 수

## 0. 들어가며 이전 포스팅에서는 카테고리 데이터에 로컬 캐시를 적용해 상품 조회 성능을 개선했었다. 당시에는 변경은 드물지만 조회는 잦은 데이터를 대상으로, TTL과 명시적 무효화를 함께 쓰는 전략을 선택했다. 이번에는 조금 다른 케이스였다. 관리자 대시보드

0. 프로젝트 개요 이 프로젝트는 상품 홍보 블로그 포스팅 자동화 플랫폼이다. 사용자가 상품 홍보를 위해 반복적으로 글을 작성하여 발행하는 과정을 자동화할 수 있다. 예약 시간을 지정하여 워크플로우를 생성하면, 예약한 시간에 맞춰 다음 과정이 자동 실행된다. 트

0. 들어가며 카페 주문 플랫폼 프로젝트를 리팩토링하던 중 장바구니 조회 페이지에서 예상보다 많은 쿼리가 실행되고 있는 것을 로그를 통해 발견했다. 특히 장바구니에 음료를 하나씩 추가할수록 조회 시 실행되는 쿼리 수가 함께 증가하는 현상이 나타났다. 이러한 패턴

0. 들어가며 이번 포스팅에서는 로컬 캐시를 이용한 카테고리 캐시 적용으로 상품 조회 성능 개선 과정을 다뤄보려고 한다. 카페 주문 플랫폼에서 카테고리는 사용자가 상품을 조회할 때 가장 먼저 접하는 정보 중 하나로, 조회 빈도는 높지만 변경은 드문 데이터라는 특징을

0. 들어가며 문제 발견 지금까지 개발하면서 조회용 메서드에는 습관적으로 @Transactional(readOnly = true)를 붙였다. 조회에 @Transactional(readOnly = true) 를 설정함으로써 성능상 이점을 얻을 수 있다고 알고있지만,

## 0. 들어가며 카페 주문 플랫폼 장바구니 비우기 기능을 테스트하던 중, Hibernate SQL 로그에서 이상한 점을 발견했다. 단 10개의 상품을 삭제하는데 DELETE 쿼리가 11번이나 실행되고 있었다. "왜 이렇게 많은 쿼리가 실행될까?" 이 문제를 해

조원들과 자주 이용하던 바나프레소를 벤치마킹하여 카페 주문 시스템을 개발했다. 이번 글에서는 카페 주문 시스템을 개발하며 경험한 동시성 이슈 중 하나인 즐겨찾기 동시성 문제에 대한 원인과 해결 과정을 정리해보고자 한다. 1. 문제 발견