본문 바로가기

전체 글42

개발일지 - 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.
개발일지 - 9일차: 좋아요 기능 추가 코로나가 얼추 나은 줄 알았는데 목이 아직 아프다.. 9일차에는 목표 페이지에 누를 수 있는 좋아요 기능을 추가했다. 이전 프로젝트에서 좋아요를 만들 기회가 있었지만, 직접 만들어 본 경험은 이번이 처음이다. 일단은 좋아요 정보를 담는 테이블이 필요하다는 생각이 들었다. 같은 사용자가 좋아요를 여러번 누를 때 좋아요 수가 계속 올라가면 안되기 때문이다. 테이블은 이런 식으로 구성했다. @Entity @Table(name = "likes") class Like( @ManyToOne(fetch = FetchType.LAZY) @OnDelete(action = OnDeleteAction.CASCADE) @JoinColumn(name = "user_id") val user: User, @ManyToOne(fet.. 2024. 3. 6.
개발일지 - 8일차: daily Check 추가 3일간의 연휴동안 코로나에 걸려버려서 추가적인 공부를 못했다... 역시 건강해야 뭘 하던지 하는걸 느꼈다. 8일차에는 이전에 작성하던 resolution에 일일 달성 체크 항목을 구현하기 위해 Daily-check 도메인을 추가했다. 코드는 아직까지는 기본적인 CRUD만 작성하고 서비스와 리포지토리를 기본적인 요소만 추가했다. 다른 팀원이 작성한 코드를 리뷰하던 도중 한가지 팀끼리 정할 코드 방칙이 있었다. 이전 4일차에서(4일차는 블로그에 작성하는걸 잊어먹었다.. 관련 내용은 다시 포스팅할 예정이다.) 튜터님에게 질문했던 내용이 from과 of메서드의 위치이다. from() 메서드는 Entity를 DTO로, of() 메서드는 DTO를 엔티티로 변환하는 메서드이다. 원래 해당 메서드는 엔티티 클래스 내부.. 2024. 3. 5.