분산 락 구현 - 비관적락, Lettuce보다 부하가 덜 가기 때문에 선정 - 제대로 비교해서 다시 확인해보기
이번 주 한 일
팀 전체 (리더님께서 필두로 정리해 주세요.)
팀원 개인별로 작성해 주세요.
이지훈 : ELK 스택 구현
이준영 : 주문 생성 동시성 문제 처리, kafka 적용 위한 학습, 추가기능 구현
조인희 : 카테고리 인덱싱 적용, kafka 적용 위한 학습, 추가 기능 구현
김호원 : 상품 데이터 확보, 검색 기능 개선, 분산 처리 위한 학습(spring cloud,
kafka 우선
이외에도 기술적인 방향을 잡기 위한 질문을 정리해오시면 가장 좋습니다!
장바구니에 물품을 담을 때 BasketProduct를 생성해서 db에 저장하는데 이것도 동시성 문제를 고려해야 하는지 - 해야될 것 같음
대용량 데이터를 조회할 경우 클라이언트에게 반환할 때 얼마나 보여줘야 하는지 전체 데이터를 다 반환하지는 않을 것 같고, 페이징해서 15개만 반환하는지? 그리고 페이징이 정확히 어떤 원리로 작동하는지 -db에서 데이터를 150개 가져온다면 뷰에 150개를 다 끌고와서 프론트에서 page와 size 별로 잘라서 보여주는 것인지
캐싱 전략에서 ReadThrough는 캐시를 거쳐 db에서 읽어와서 캐시에 저장하고 캐시에서 반환한다고 그러는데 이게 redis에서 db를 읽어온다는게 어떻게 이루어지는것인지 이해가 잘 되지 않음.
인기 검색어 api 구현에 사용되는 스택은 무엇이 있을까요? - 캐싱, 검색 동시성으로 예상중
프로젝트에서 캐싱을 언제 사용해야 하는지, 주로 어떻게 사용하는지 예시, Redis를 어떻게 활용할지 - 카테고리별 검색을 캐싱할 필요가 있을지
지금 현재 서비스에서 title 기준으로 검색하고 응답받는 시간은 매우 짧은데 해당 데이터를 new PageImple<>하는 시점에서 시간이 오래 걸리는데 이것을 줄일 방법이 있을까요?
현재 두 가지 검색 방법을 구현했습니다. Query와 Stream을 활용한 방법1, ElasticSearch를 활용한 방법2. 두 방법 모두 1명의 사용자가 사용할 때에는 응답시간이 매우 빨랐습니다. 하지만 과부하가 걸린 상황에 경우 방법1은 응답시간이 거의 변화가 없었지만 방법2의 경우 약 40배 정도 시간이 증가했습니다. 그러나 만약 데이터베이스의 없는 정보를 방법 1로 검색하는 경우 시간이 1000배 증가하고 방법2는 변화가 없습니다. 어떤 방법을 쓰는 게 좋을까요?
방법1의 경우 상품 검색을 Stream으로 검색을 할 때 일반적인 검색어를 사용해서 검색을 할 경우 속도가 빠르지만 검색 조건에 맞지 않는 상황(DB에 없는 검색어 or 조회 개수가 15개일 때 해당 페이지에서 15개가 조회 되지 않았을 때)이 오면 DB전체를 탐색을 하게 되어 속도가 현저히 느려진다.