프로젝트에서 사용하는 기술 스택/라이브러리와, 선정 이유를 적어주세요.
FE
: 변동없음 (Javascript, React(Redux-Toolkit), TailWind, Styled-Components, Axios, React-router-Dom)BE
: 변동없음 (AWS S3, AWS RDS, AWS EC2, AWS CODEDEPLOY, JAVA, SPRING, SPRINGBOOT, QueryDsl)이번 주 한 일
FE
:
BE
:
FE
BE
이외에도 기술적인 방향을 잡기 위한 질문을 정리해오시면 가장 좋습니다!
BE : 전체적으로 코드를 보여드리면서 질문을 드려도 될까요??
데이터 수집방식이 올바른지, 더욱 효율적인 방법이 있는지 궁금합니다.
openApi를 호출하여 데이터를 받아올 때 기존 url커넥션을 통해서 받아온 값을 string builder에 모두 저장해서 그 안에서 값을 찾아오는 방식 에서
Document 객체를 사용하여 받아오는 방식으로 바꿔 보았습니다.
노드의 형태로 자료를 보관하는 것 같아 효율 적이라고 생각했지만 NodeValue를 가져오는 데에는 실패 해 (코드)와 같은 방식으로 받아왔습니다.
이것이 효율적인 방법이 맞는지 더 효율적인 방법이 있을 지 궁금합니다.
데이터를 받아와서 저장하는 테이블, 통계를 내어 저장해놓는 테이블을 따로 구성하는게 효율적인지 저장하는 테이블 하나에서 통계만 내는 쿼리를 그때 그때 날리는 것이 효율적인지 궁금합니다. 지금 생각하는 데이터 저장 과정은, 우선 스케줄러를 사용하여 이미 가지고 있는 데이터를 통계 내는 쿼리를 일정 시간/ 요일마다 실행하여 계산한 값을 새로운 table에 저장합니다. 프론트에서 요청이 들어올 때 데이터가 많이 저장 되어 있는 메인 data table에는 접근하지 않고 새로운 table에서 데이터를 꺼내와서 리턴해주는 것으로 생각하였습니다. 기존에 따로 저장을 하려고 했던 이유는 데이터를 저장하는 상황에 동시에 일어나는 조회들을 고려한 것인데 테스트를 통해 데이터를 받아와 저장하는 동안에도 해당 테이블에 접근 시 별다른 문제를 찾지 못하였습니다. 동시성을 고려 했을 때 생길 수 있는 문제가 무엇이 있는지 궁금합니다.
통계를 조회하여 리턴하는 방식이 올바른 방식인지 궁금합니다.(데이터2)
queryDSL, NativeQuery PostList 조회 시 searchWord와 type과 sort에 따라 다른 쿼리를 보내야 하는 상황에서 지난주에 말씀 해주신 네이티브 쿼리 만으로도 동적인 쿼리를 작성 할 수 있다고 하셔서 시도해봤는데 쉽지 않았습니다. 일단 queryDSL로 동작은 시킨 상태인데 NativeQuery를 구분에 따라 바꾸려면 어떤 방법을 사용하여야 하는지 궁금합니다.
각각의 서비스에서 중복하여 사용하는 함수들을 하나로 묶어 Static 함수로 사용하는 방법이 효율적일 지 궁금합니다. ex) getImgUrl 등
지난주에 말씀해주신 gu검증 로직을 짰는데 DB에 갔다 오는 것 보다 배열로 확인하는게 좋다고 판단하여 25개 원소를 갖는 배열을 초기화 해서 사용했는데 맞는 생각인지 궁금합니다.
N+1
(1)
해결하기 위해 방법들을 찾아보던 중 spring.jpa.properties.hibernate.default_batch_fetch_size = 1000
위와 같은 설정을 찾게 되었고 for문이 돌아갈 때 postId를 in(?, ?, ?, ?) 과 같은 형태로 쿼리를 날려 한번의 쿼리로 해결하는 방법을 알게 되었습니다. 이때 Post.getCommentList 가 쓰기지연 저장소에 쌓여 위와 같은 형태로 변환되는 것 인지 아니면 다른 원리인지 궁금합니다.
(2) 게시글 상세 조회 시 like N+1 혹시 코드를 보여드리면서 질문 드려도 될까요!? likeRepo에 계속 다녀오지 않기위해 어떤 방법이 적합한지 궁금합니다.
(3) 그리고 EntityGraph 나 left join fetch 를 사용했을 경우 자식 row에 따라 중복된 객체가 담기는 문제로 distinct 를 사용하여서 해결했는데 distinct를 사용하면 코멘트가 두개 이상일 시 안가져와져야 되는 것 아닌가요!?
(4) join fetch 시 가져온 일대 다의 자식List의 순서가 변경되는데 원인을 찾지 못하였습니다. 원래 순서가 보장되지 않나요?? 이해가 가지 않습니다..
해결한 방법 : 현재 사용하는 프리티어의 램이 1GB정도 밖에 되지 않아 서버의 가용성이 자주 폭발하는 것이었다고 판단하여 리눅스의 SWAP 메모리를 지정함으로써 반강제적으로 RAM을 증설한 효과를 만들었습니다 !
팀원 개인별로 작성해 주세요.