전체 글

개요 - 인덱스는 데이터베이스에 존재하는 데이터의 수가 얼마나 많을 때부터 성능상 이점을 보이는가 - Redis에서 데이터를 가져올 때와 RDB에서 접근할 때 성능 차이가 얼마나 나는가 - 한번에 들어오는 양에 따라서 결과가 달라지는가 위 세 가지에 초점을 두고 테스트를 진행했습니다. 서버 스펙 정말 간단한 데이터 기준으로 테스트 한 것이기 때문에 환경에 따라 상황에 따라 달라질 수 있습니다.! [Standard]centos-7.8-64vCPU 2개, 메모리 4GB, 디스크 50GB [G1] 데이터 수에 따른 단건 조회 시간 비교 Index없이 조회했을 때는 1만건 이후로 조금씩 차이나기 시작하다가 100만건 이후부터는 많이 차이나는 것을 확인했습니다. 데이터 수에 따른 성능 비교(총 5만 번의 요청) ..
개요 실시간 알림을 구현하는 과정에서 페이지 이동시 소켓 연결이 끊기는 이슈가 발생했습니다. - 소켓 연결을 새로고침을 하거나 다른 페이지로 이동을 하면 끊기게 되있습니다. - 이를 막기 위한 방법으로 새로고침 시 경고 창을 띄어주거나 방지하는 방법이 있지만 - 저희 서비스에서는 단순히 새로고침 뿐 아니라 페이지 전역에서 소켓 연결을 유지할 방법이 필요했습니다. 소켓 정보 DB저장 - 우선 저희 서비스에서 알림은 상품에 대한 구독으로부터 시작됩니다. - 판매자는 상품을 등록했을 때, 소비자는 상품에 입찰을 걸었을 때 해당 상품에 구독하면서 알림 서비스를 지원합니다. - 사용자는 소켓에 구독할 때마다 DB에 자신의 소켓 목록을 저장합니다. - 모든 페이지에 접근할 때마다 자신의 소켓 연결 정보를 불러오며 ..
전체 구조 Custom Exception 처리 방식 비슷한 역할이나 동일한 예외에 대해서 공통 예외로 추상화 합니다. NotFound ProgramNotFound BoothNotFound Forbidden ForbiddenUpdate ForbiddenDelete ErrorCode(Enum Type)를 통해 구분하며 에러 코드는 에러 메시지와 HTTP 상태 값을 가집니다. 처리 방법이 나뉘지 않는다면 모두 CustomException으로 묶어 처리하게 됩니다. @ExceptionHandler(CustomException.class) public ResponseEntity handleCustomException(final Custom e) { log.warn(e.ErrorCode.getMessage(), e..
Seung__Yong
기록