코드개선, 성능개선 (5) 썸네일형 리스트형 비동기 결제 수정 이전 고민 글 https://aha2246.tistory.com/165 고민 요약 비동기 결제 처리를 위해 카드정보를 미리 입력, 결제를 처리하는 메소드에 단순하게 @Async를 붙여서 비동기로 처리함. 궁극적으로 결제를 비동기로 처리하려는 이유는 사용자가 결제 시에 추가적으로 처리되야할 로직들(ex. 결제 시 이벤트 참가, 사용한 쿠폰 삭제, 포인트 삭감 등)이 길어질경우 그 로직들을 다 기다리지 않고 다른 작업을 할 수 있도록 해야함 하지만 지금 코드대로라면 결국에 전체적인 로직은 계속 동기적으로 처리하고 결제 서비스 메소드만 비동기로 처리, 즉 결국에는 반환값을 받을떄까지 기다리는 동기적인 흐름으로 진행된다고 생각됨. 고민 결과 결제 이후에 들어가는 로직들이 많아지고 이 로직들은 비동기로 흘러가는 .. N+1 없애보기 1. 쿼리 최적화 1) 마이페이지 조회 - 기존 코드 - 서비스 메서드들을 호출할 때 User를 한 번 더 호출해줘서 생기는 문제 // UserPageController @GetMapping("/my-page") public String myPage(Model model, @AuthenticationPrincipal UserDetailsImpl userDetails) { Long userId = userDetails.getId(); String userName = userDetails.getUser().getUserName(); String userEmail = userDetails.getUser().getUserEmail(); String streamKey = userDetails.getUser().g.. 비동기 결제 처리 고민 아임포트를 이용해 결제를 구현 클라이언트단 async function requestCardPay() { const isAuthenticated = checkCookieExistence('Authorization'); const orderContainer = document.querySelector('.order_container'); const orderId = orderContainer.getAttribute('data-order-id'); if (isAuthenticated) { const quantity = parseInt(document.getElementById("orderQuantity").textContent); const totalPrice = parseInt(productPrice) * .. 검색 성능 개선 - 2 지난 번 서비스적인 관점에서 QueryDsl을 적용해 조건검색을 수월하게 하도록 수정을 했다. 그래서 서비스적 관점에선 개선된 부분이 맞으나 검색 속도 측면에선 역시 개선점은 없었다 하지만 쿼리를 보니 필요 없는 쿼리들이 나가는걸 확인했고 DTO 및 엔티티를 다시 살펴보기로 했다. 문제점 확인 1. 필요없는 필드들이 많은 DTO를 사용해서 반환 @Getter @RequiredArgsConstructor @Builder public class RestaurantResponseDto { private final Long id; private final String restaurantName; private final String address; private final Category category; pr.. 검색 성능개선 - 1 현재 코드 컨트롤러 서비스 현재 코드의 문제점 - JPA 메소드 쿼리로 모든걸 해결하려고 하다보니 if문을 통해 직접 분기점을 나눠서 코드를 작성해야함 -> 코드의 양이 많아짐 - 조건검색이 안됨(하나의 조건으로만 검색이 가능하고, 카테고리, 주소, 가게명 같은 조건들을 동시에 만족하는 결과물을 조회할 수 없음) -> 서비스적 관점에서 치명적인 결함 Jmeter를 통한 테스트 1차 개선 : QueryDsl 적용 컨트롤러 서비스 @Repository public class SearchRepositoryImpl extends QuerydslRepositorySupport implements SearchRepository { @Autowired public JPAQueryFactory jpaQueryFacto.. 이전 1 다음