본문 바로가기

Back-end/Project2

[Cache] 다수 key로 CacheEvict, Page 직렬화 (CacheResolver, Mixin, DefaultTyping, Custom Se/Deserializer) 목차 해결 과제: 한 번에 다수의 캐시를 Evict 하기, Page 직렬화하기 문제: @CacheEvict는 복수의 key 불가 해결. SpEL과 CacheResolver를 통해 해결 개선. RedisCacheMange 설정들 문제: 직렬화 실패 해결Java8부터 추가된 LocalDateTime -> JavaTimeModule 모듈 추가 Lazy Loading으로 인한 Hibernate Proxy -> Mixin을 등록하여 직렬화 무시 문제: 역직렬화 실패 LinkedHashMap으로 역직렬화 -> ObjectMapper에 DefaultTyping 설정 기본 생성자가 없어 역직렬화 불가 -> Customize Serializer / Deserializer 성능 테스트 with JMeter 해결 과제 배.. 2023. 6. 16.
Fetch join와 Batch size를 이용한 N+1 문제 해결 문제상황 배달 서비스의 서버를 개발하며, N+1 문제가 발생했습니다. 아래와 같이 테이블을 설계했는데, 주문 상세 내역을 조회할 때 유저, 주소, 가게, 메뉴, 세부 메뉴(ex. 짜장면), 메뉴의 옵션 그룹(ex. 추가메뉴), 옵션 그룹의 옵션(ex. 콜라, 단무지)가 함께 조회되는 구조입니다. 위와 같은 구조에서 3개의 메뉴와 각 메뉴마다 3개의 옵션그룹 그리고 각 옵션그룹마다 3개의 옵션있는 주문을 조회하면, 아래와 같이 총 번의 조회가 발생합니다. 총 18번 = Order(1번) + CanceledOrder(1번) + Store(1번) + User(1번) + Address(1번) + OrderMenu(1번) + OrderGroup(3번) + OrderOption(9번) 참고로 주문에서 실제 음식 정.. 2023. 6. 2.