이번 주 한 일
프로젝트에서 사용하는 기술 스택/라이브러리와, 선정 이유를 적어주세요.
채팅
테스트
매칭 ⇒ Kafka 예정 (API 서버의 역활 분리)
DB ⇒ postgreSQL (데이터의 무결성을 보장하고 새로운 툴에 대한 도전을 위한 선택입니다)
QueryDSL ⇒ ( 조회시 성능 향상 및 JDK단에서 오류 발견이 가능하고 가독성이 좋아 선택하였습니다.)
팀 전체
[완료]
[진행중]
팀원 개인별로 작성해 주세요.
성루비
[1:1 채팅 백엔드 구현]
처음 계획한 redis 캐싱 기능을 빼고 WebSocket, Stomp로만 구현하고 DB에 데이터를 바로 저장합니다. 프론트 ajax를 통해서 소켓 연결 후, 메세지 처리 성공 확인했습니다.
[프론트]
이번 주는 승호님과 함께 전체적인 프론트의 디자인 구현까지 진행할 예정입니다. (html, css)
김시원 : 멤버의 매너포인트 기능을 구현하였고, 관리자 기능을 구현할 예정입니다.
전재형 : 게시판/댓글/좋아요 테스트코드 작성, OAuth2 구글 로그인 기능 구현
임 수 :
[매칭 시스템 , 레디스를 활용한 로그아웃 기능 구현]
큐자료구조를 이용하여 대기열을 생성하여 유저들의 조건에 맞는 매칭구성원이 없으면 대기하고 조건이 만족하면 조건에 맞는 유저들의 인원수 만큼 뽑아 디스코드 봇을 통하여 음성채팅방을 만들고 해당 주소를 유저들에게 보내줍니다.
로그아웃은 레디스를 이용하여 로그인시 어세스토큰과 리프레쉬토큰(쿠키)을 사용자에게 발급하고 레디스에 리프레시토큰을 저장해 줍니다. ⇒ 로그아웃시 해당 리프레시토큰을 삭제하고 어세스토큰의 남은시간만큼 레디스에 등록하여 해당토큰을 무효화 시켜줍니다.
질문
이외에도 기술적인 방향을 잡기 위한 질문을 정리해두시면 가장 좋습니다!
→ DB를 연결하지 않는 테스트 코드는 단일 테스트는 성공하지만, 전체를 시도했을 때 Repository에서 엔티티를 가져올 때 에러가 발생합니다. 각 테스트 종료 후 Repository를 초기화 시켜도 ID를 제공하는 Sequence가 초기화 되지 않을 수 있다는 것을 찾게 되었습니다. 이러한 경우는 해결 방안이 없는건가요? DB를 연결하는 방법이 유일한 지 궁금합니다.
→ 게시판 검색기능에 QueryDSL을 사용하려고 하는데 조회를 게시글 내용과 작성자 닉네임을 조회하는데 이런식으로 QueryDSL을 사용하면 잘못된 방법인가요?
BooleanBuilder booleanBuilder = new BooleanBuilder();
QBoard qboard = QBoard.board;
booleanBuilder.and(qboard.content.contains(searchName));
booleanBuilder.or(qboard.member.profile.nickname.contains(searchName));
Page<Board> boardPage = boardRepository.findAll(booleanBuilder,pageableSetting(1));
→ 채팅 기능에서 모든 데이터가 postgreSQL에 저장될 예정인데 메세지의 경우 지연 시간이 낮아야하고 짧은 시간에 단순 데이터의 입력이 너무 많아서 RDBMS가 적합하지 않다고 생각됩니다. 그래서 채팅 데이터만 mongoDB에 따로 저장할까 고민되는데 괜찮은 생각일까요? 이후에 redis가 적용되어 캐싱을 하더라도 NoSQL을 사용하는게 성능면에서 많은 차이가 있을까요?
숙제: 멘토링 결과 다음 주까지 해올 일