본문 바로가기

캠프 개발일지21

개발일지 - 16일차: 버그 해결 및 원인 분석(2) 2. JsonParseException 어떤 상황에서 발생한 버그인가? 이전 포스트에서 결정한 랭킹 조회 알고리즘을 코드로 작성하고 테스트를 해 보던 와중 발생한 버그이다. 일단 스케줄러를 이용해서 일정 시간마다 resolution 테이블에서 likeCount 내림차순으로 10개를 가져온다. 이 후 해당 값을 redis에 List 형으로 저장한 후, 랭킹 조회 api가 호출될 시 redis에서 랭킹 데이터를 가져오는 방식이였다. 조회 api는 오직 redis만 바라보고 있어야 하기 때문에(RDB에 접근하는 코드가 있어서는 안된다.) redis에 저장된 데이터의 value가 바로 Response로 반환할 수 있어야 하는 값이어야 한다고 생각했다. 따라서 스케쥴러를 이용해 redis에 데이터를 집어넣는 과정.. 2024. 3. 15.
개발일지 - 16일차: 버그 해결 및 원인 분석(1) 어제 작성했던 코드에서 버그가 발생해서 오늘은 그 버그를 해결하는 과정을 기록하겠다. 발생한 버그는 2가지이다. 1. Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Unsupported field: HourOfDay] 어떤 상황에서 발생한 버그인가? 구현을 완료하고 테스트를 하던 도중 목표 페이지의 조회가 갑자기 조회되지 않는 버그가 발생했다. 버그 코드는 403 에러, 즉 인증 관련 예외처리가 발생했다. 아래는 오류가 발생한 API 코드이다. @Operation(summary = "목표 전체 조회(페이징)") @GetMapping fun getResolutionListPa.. 2024. 3. 15.
개발일지 - 15일차: 목표 랭킹 알고리즘 수정 및 오류 직면 어제 계획한 대로 튜터님께 내가 구상한 실시간 랭킹 알고리즘에 대해 어떤지 여쭈어봤다. 물어본 내용은 단순이 랭킹 조회 API에 redis를 사용하는게 맞는지, 아니면 RDB에 접근하는 방식으로 구현해도 되는지, 알고리즘에 문제는 없는지였다. 일단 redis를 사용하는 것은 좋은 방법이라고 하셨다. 팀이 구상한 비즈니스 서비스에서 랭킹은 상당히 노출이 많이 되는 api다. 첫 페이지에 들어가도 존재하며, 실시간 랭킹인 만큼 일정 시간마다 같은 api를 호출함으로써 갱신도 해야 한다. 즉 서비스를 이용하는 인원이 많아질 수록 랭킹 조회 api 또한 사용량이 급격해질 것이다. 때문에 redis를 캐시처럼 이용하면 RDB에 직접 접근하지 않고 redis에 접근하여 서비스의 성능을 개선할 수 있을 것이다. 그렇.. 2024. 3. 14.
개발일지 - 14일차: 랭킹 시스템 구현 코로나에 걸리는 바람에 3월 7일부터 일주일간 아무것도 못했다..... 역시 건강하고 봐야 개발이든 뭐든 할 수 있구나를 뼈저리게 느꼈다. 열 때문에 머리가 지끈거려 도저히 컴퓨터 앞에 앉아있지를 못했다. 하지만 드디어 12일부터 좀 움직일 만 해져서 개발을 이어나가고자 한다. 글을 작성하는 지금은 3월 13일이지만 밤을 새 버렸기 때문에 3월 12일에 했던 내용을 오늘 간단히 정리해 보겠다. 일단 저번에 목표에 좋아요 기능을 추가했었다. 이 좋아요를 기준으로 실시간으로 확인할 수 있는 목표 랭킹을 구현해야 했다. 처음 생각한 목표 랭킹 구현은 단순히 랭킹 조회 api를 불러올 때 목표 테이블에서 10개 씩 like 기준 내림차순으로 불러올 계획이였다. 하지만 실시간으로 변하는 좋아요 수를 적용하고 제대.. 2024. 3. 13.