조회2 [Spring Data JPA] 한방 쿼리의 효능 (feat : JPQL) 백엔드 개발의 기본 소양인 SQL을 작성하는 실력은 뛰어날 수록 더할 나위 없다. 실제로 대규모 트래픽이 발생하는 서비스에서는 이 성능을 매우 중요시 하는데, 일반적인 환경에서는 DB 조회적 측면에서 큰 성능 개선을 이끌 수 있으므로, 가장 기본이 되는 개선 방안이라고들 한다. SQL을 공부하고, JPA 를 공부하며 항상 빠질 수 없는 얘기, 성능 최적화. 항상 고민하다가 개선을 할 수 있는 기회가 주어졌고, 공부한 내용을 바탕으로 내 생각과 결과를 정리해보겠다. DB ERD Model opnions entity를 paging 처리해서 여러 개를 뽑아야 하는 상황. 주어진 중요 파라미터는 user_id 뿐이다. 1. 보통 같으면 Document Entity를 먼저 조회한 후, opinions 를 페이징 .. 2023. 2. 1. 동시성 조회 문제 해결 및 성능에 관한 고민 [Lock, Queue, Redis] 주문 건에 대한 상품 재고 파악 동시성 관련 이슈에 대해 고민한 하루다. 프로젝트 리팩토링을 시작하며 지난 도메인들은 기본 crud API만을 다루었다. 5일동안 JPA 강의들을 수강하며 본격적으로 주문 및 결제 API 리팩토링에 다시 착수했다. 아무래도 프로젝트의 토픽이 쇼핑몰이니 주문 및 결제 파트에서 단순 CRUD가 아닌 핵심 비즈니스를 고려하고 싶어, 외부 결제 API 및 디자인 패턴을 적용한 깔끔한 코드들을 고려하며 작성하는 중이다. 대략적인 틀을 만든 뒤, 본격적으로 주문을 구현하던 중, 동시성 이슈 문제에 직면했다. 기존 동시성 문제 해결 방법 MSA를 고려했기에, 데이터 정합성 문제를 해결하기 위해 Outbox pattern을 이용중이었다. 이 방식을 통해 상품 동시성 문제를 해결했었다. .. 2022. 9. 14. 이전 1 다음 반응형