개요 주라벨의 프로젝트를 진행하며 시음노트 관련 엔티티 설계 및 기능 개발을 진행했습니다. Map을 활용한 데이터 그룹화를 통해 조회 기능을 개선한 경험을 공유하고자 합니다. Sensory (촉각 정보) 테이블설명sensory술의 촉각 정보를 정의하는 테이블sensory_level술의 촉각 정보를 점수화하여 정량적으로 평가한 테이블alcohol_type술의 종류(주종)를 정의하는 테이블alcohol_type_sensory특정 주종과 촉각 정보를 연결하는 테이블tasting_note술의 알코올 도수, 양조장, 내용, 평점, 색상, 주관 평가 등을 저장하는 시음 노트 테이블tasting_note_sensory_level시음 노트에 저장된 촉각 정보와 그에 대한 점수 및 설명을 기록하는 테이블 [트러블 슈팅]..
개요 주라벨의 프로젝트를 진행하며 @FeignClient를 사용한 토큰 및 회원 정보 조회 기능을 구현했습니다. FeignClient를 사용한 토큰 및 회원 정보 조회 기능을 구현한 경험을 공유하고자 합니다. FeignClientConfig FeignClient는 Spring에서 HTTP 요청을 처리하기 위해 사용되는 도구이며 REST API를 호출을 간단하게 할 수 있도록 합니다.Kakao와 Google과 같은 소셜 로그인 기능을 구현하기 위해 FeignClient를 활용했으며, 각 소셜 플랫폼의 API를 호출하고, 사용자의 인증 정보를 받아오는 기능을 구현했습니다.build.gradle dependencies { implementation 'org.springframework.cloud:sprin..
개요 [아파트너] 플랫폼에서는 각 아파트마다 사용자가 접속하는 페이지와 이를 관리하는 관리자 페이지가 아파트별로 구분되어 있습니다. 이에 따라 사용자가 자신의 아파트 정보를 확인한 후, 아파트 정보 조회, 각 게시판의 게시글 작성 및 조회를 할 수 있도록 개발해야 했습니다. 이러한 문제를 공통으로 처리하기 위해, Spring Security를 활용하여 커스텀 어노테이션과 PermissionEvaluator를 작성하여 각 사이트의 아파트 코드를 받아 회원의 매핑 정보를 확인하고, 이를 통해 인증 및 인가 처리를 진행한 경험을 공유하고자 합니다.기업 협업 프로젝트 [아파트너] 백엔드 개발을 진행하고 작성한 글입니다. 인증/인가 커스텀 @Target(ElementType.METHOD)@Retention(Ret..
개요 [아파트너] 민원에 대한 답변이 등록되었을 경우 사용자에게 알림을 발송하는 기능을 구현했습니다. 여기서 알림 발송을 위해 @TransactionalEventListener를 사용했으며, 민원 답변이 작성되면 이벤트가 발행되고 리스너에서 발행된 이벤트를 받아 알림을 전송하도록 구현했습니다. 그 과정에서 알림 데이터는 생성이 되었으나 저장 쿼리가 발생하지 않는 문제가 발생했습니다. 트랜잭션 전파 단계를 변경하여 문제를 해결한 경험을 공유하고자 합니다. 기업 협업 프로젝트 [아파트너] 백엔드 개발을 진행하고 작성한 글입니다. [아파트너] 알림 서비스 @Slf4j@Service@RequiredArgsConstructorpublic class QnaServiceImpl implements QnaService..
개요 (주)아이톡시와 진행했던 기업 협업 프로젝트 "펫누리"를 진행하며 펫톡 게시글의 인기순 조회를 구현해야 했습니다. 이를 위해 PM 팀과 인기순 조회 구현에 대해 논의한 후 "Hacker News Ranking 알고리즘을 적용하여 최근 3일간 시간 대비 이모지의 개수가 많은 순서대로 노출"을 기준으로 작업을 진행했습니다. 이후 리팩토링 과정에서 View 테이블을 통해 조회하도록 변경하여 성능을 개선했습니다 Hacker News Ranking Algorithm Q) "펫누리의 펫톡 인기순 조회 알고리즘은 왜 Hacker News Ranking 알고리즘을 사용하셨나요?"A) 시간 대비 이모지(추천)를 많이 받을수록 더 상위에 노출되야 하는 펫톡에 적합한 랭킹 알고리즘이라고 생각했습니다.펫톡은 추천 ..