2025/04 4

[프로젝트 회고] Redis Pub/Sub 기반 실시간 채팅 기능 도입기

1. 시작하며 - 왜 Redis를 도입했나?프로젝트 초기에 WebSocket을 기반으로 한 1:1 채팅 기능을 구현했을 때는 단일 서버 환경을 전제로 하였다. 하지만 서비스의 확장성을 고려하면, 단일 서버만으로는 한계가 명확했다.특히, 여러 대의 서버가 메시지를 동시에 수신해야 하는 상황에서는 기존 구조만으로는 통신이 불가능했다. 이 문제를 해결하기 위해 Redis Pub/Sub 방식을 도입하였다.Redis는 메모리 기반의 데이터 저장소로 널리 알려져 있지만, Pub/Sub(발행/구독) 기능을 통해 메시지 브로커로도 활용할 수 있다. 이를 통해 서버 간 메시지 전달을 실시간으로 처리할 수 있다는 장점을 살려 시스템을 개선하고자 했다.2. Redis Pub/Sub 개념 정리Redis Pub/Sub는 발행(..

카테고리 없음 2025.04.28

머니톡(Moneytalk) 백엔드 개발 찜하기(좋아요) 기능 설계와 기술 선택기

❤️ 찜하기(좋아요) 기능, 어떻게 설계할까?중고 거래 플랫폼을 만들다 보면 꼭 들어가는 기능이 있죠. 바로 “찜하기”, 또는 “좋아요” 기능입니다.사용자가 관심 있는 상품을 표시하고, 나중에 쉽게 다시 찾을 수 있도록 도와주는 이 UX는 단순해 보여도 설계 단계에서 고민할 게 은근 많았습니다.이번 MoneyTalk 프로젝트에서도 해당 기능을 구현하며 두 가지 방식 사이에서 꽤 많은 고민을 했습니다. 어떤 기술이 현재 팀과 프로젝트의 상황에 적합할까? 확장성은 어떻게 가져갈 수 있을까?✅ 찜 기능, 어떤 방식으로 구현할까?처음엔 당연하게 RDB에 저장해야겠다고 생각했는데, 성능이나 실시간 반영 이슈를 고려하면서 Redis 기반 방식도 후보에 올랐습니다.방식설명DB 기반favorite_products 테이..

카테고리 없음 2025.04.11

머니톡 개발일지 1주차 구현내용 정리

✨ 회원가입 / 로그인 기능 구현 정리깃허브 링크: https://github.com/DoHyunDaniel/moneytalk✅ 구현 목표Spring Security + JWT 기반 인증 시스템 구현회원가입 / 로그인 / 사용자 정보 관리 기능 제공Swagger 문서 자동화공통 예외 처리 적용📌 주요 기능 요약1. 회원가입 (SignUp)POST /api/users/signup요청: email, password, nickname응답: id, email, nickname유효성 검사 및 이메일 중복 방지비밀번호 BCrypt로 암호화 저장2. 로그인 (Login)POST /api/users/login요청: email, password응답: accessToken, refreshTokenJWT 토큰 발급 후 인..

카테고리 없음 2025.04.04

머니톡 프로젝트 트러블슈팅 01 - SpringDoc과 GlobalExceptionHandler 충돌 이슈 해결기

문제 상황springdoc-openapi-starter-webmvc-ui 의존성을 추가하고 @RestControllerAdvice 기반의 GlobalExceptionHandler를 만들었더니, 아래와 같은 NoSuchMethodError 발생:java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.(java.lang.Object)' Swagger UI가 정상적으로 로딩되지 않고, 서버가 부팅 중에 에러가 발생함. 의미springdoc-openapi 라이브러리가 org.springframework.web.method.ControllerAdviceBean 클래스의 특정 생성자(ControllerAdviceBe..

카테고리 없음 2025.04.04