개발
-
부하테스트를 위한 더미데이터 준비개발 2024. 8. 8. 22:08
SSAFY 11기 공통프로젝트 기능 개발이 완료되었습니다.고가용성을 가진 프로젝트를 만들어보는 것이 팀의 목표였기에 부하테스트를 통한 성능개선을 진행하기로 하였습니다.부하테스트와 관련된 글은 따로 정리하여 게시할 예정입니다. 어플리케이션에서 가장 중요하고 직관적인 신입 개발자가 필수적으로 할 수 있어야하는 성능 개선이 무엇이 있을까? 생각하였습니다. 쿼리 시간 개선을 1순위 목표로 잡고 성능 최적화 작업에 들어갔습니다. 테이블에 데이터가 10건, 100건인 상황에서의 테스트는 무의미하다고 생각하였고, 따라서 테이블마다 더미데이터를 100만건 씩 준비한 뒤 부하테스트를 진행하기로 했습니다. Java 코드로 더미데이터를 준비한 과정들을 공유하고자 합니다.ApplicationRunner 인터페이스Applic..
-
WebSocket, Redis 의 테스트 코드를 작성하며 마주친 에러와 해결개발 2024. 8. 6. 21:39
WebSocketStompClient로 소켓 통신을 하며 Redis에 접근하는 테스트 코드를 작성하며 발생한 에러를 해결하는 과정을 담고 있습니다.WebSocket은 실제로 동작하는 것을 꼼꼼히 확인해야 프론트와 연동하는 과정에서 어려움이 적을 거 같아서 통합테스트를 진행하면서 예기치 못한 상황들을 마주하였습니다.WebSocket에 대한 테스트 코드를 작성하고자 하는 분들에게 조금이나마 참고가 되었으면 합니다. 문제 상황WebSocketStompClient 로 소켓 통신에 대한 테스트 코드를 작성테스트 케이스는 4개로 아래와 같습니다.JWT 토큰 검증이 성공하면 소켓을 연결JWT 토큰 검증이 실패하면 에러 발생소켓이 연결되면 Redis에 사용자를 저장소켓이 해제되면 Redis에서 사용자를 제거테스트 케이..
-
Stomp, Redis 로 현재 접속중인 사용자 조회하기개발 2024. 8. 5. 00:33
현재 진행중인 도서 공유 서비스 프로젝트를 진행하며 새로운 기능을 구현한 내용입니다. 요구사항지역을 기준으로 도서 검색 시 해당 지역에 접속중인 사용자 목록을 조회하는 기능이 추가되었으면 한다는 피드백이 들어왔음접근채팅 기능으로 STOMP를 사용, 메일 인증 기능으로 Redis를 사용중이었음.이 둘을 사용하면 현재 접속중인 유저의 목록을 조회하는 것이 가능하지 않을까? 생각하여 둘을 활용하는 방향으로 접근하였음.구현방법소켓 연결 시, 현재 연결을 시도하는 사용자의 지역코드로 Redis의 Set에 사용자의 정보를 저장하기로 하였음.Set을 사용한 이유는 Redis의 set은 Java와 비슷하게 중복된 값을 허용하지 않으므로 데이터에 신뢰성을 높이기 위함이었음. 같은 유저의 정보가 두명이 있다면 해당 데이..