프로젝트/스위프 프로젝트(Lit Map)

💢 문제현재 우리의 메인 화면에는 조회수 순으로 작품을 나열하는 것이 있다.그렇다면 조회수가 중요해지는데 조회수는 조금만 생각해도 동시성 문제가 발생 할 수 있다.쇼핑몰의 재고값을 다루는 동시성보다는 중요도가 떨어질수는 있어도 중요한 문제이기 때문에 그냥 대충 넘기는 것은 좋지 않다고 생각했다 그래서 이번에도 동시성 문제를 해결해보고자 한다.우선 문제를 봐야한다 기본적인 동작이다.work의 값을 가져오고 직접 그 값을 1 증가시킨 후에 save로 저장한다. 테스트테스트를 진행하는 방법은 매우 간단하다. JMeter를 통해 1000번의 요청을 하는 것이다. 당연히 결과는 view가 1천번 올라가는 것이다.에러가 없고 TPS는 4.8이라는 형편없는 결과를 내뱉었다 역시 동시성 문제가 발생하면서 겨우 106..
현재 구현된 서비스의 검색 기능들 중 대부분은 조건이 한 개이다. 물론 다양한 테이블을 join하는 것은 있을수 있지만 검색의 조건이 다양한 것은 조금 다르다고 생각했다기존의 특정 단어로만 검색하는 것이 아닌 여러가지 조건이 담긴 검색의 성능 향상을 위해 작성해본다💬 쿼리 튜닝이 필요한 작업과 설명검색의 조건은 카테고리와 장르를 기준으로 그곳에 해당하는 작품들을 검색해서 전달하는 것이다1. 카테고리와 장르와 연관된 작품id까지 저장되어 있는 중간 테이블을 제작검색의 성능을 향상시키는 방법은 중간 테이블을 활용하는 것이라고 생각했다. 그렇기 때문에 아래와 같이 카테고리와 장르가 연결된 작품들을 작성하는 중간 테이블을 제작했다.이렇게 해서 좋아지는 것을 짧게라도 생각해본다면 만약 중간 테이블이 없었다면카테..
💥 기존의 버전 테이블을 탐색하는 쿼리현재 프로젝트에서는 버전을 관리하는 테이블이 따로 존재하기 때문에 가장 나중에 업데이트 된 상품을 확인하는 것은 그렇게 복잡하지 않은 쿼리로 작성이 가능했다@Query("select v.work.id " + "from Version v " + "where v.confirm = 'COMPLETE'" + "group by v.work.id " + "order by max(v.updatedDate) desc")Page findLatestUpdateDates(Pageable pageable);이렇게 가져오면 해당 검색 결과를 page형식의 쿼리문으로 날아가는 것을 확인할 수 가 있다. 🧨 요구사항 발생 : 롤백 데이터의 ..