이전 포스팅에서도 적었지만 위 사진은 우리의 큰 비즈니스 플로우이다. (다른 부분들은 다 제외하고 외부 API 활용 기준으로 그려봤다.) 우리 서비스는 사실상 브랜드가 이용하는 서비스 하나, 인플루언서가 이용하는 서비스 총 2개로 나눠져 있고, 이때 우리는 Cafe24라는 외부 API를 활용해서 보다 쉽게 둘을 연결해 주는데 도움을 준다. 우리 서비스에서 외부(Cafe24) API를 쓰는 3곳상품 조회: 브랜드가 우리 서비스에서 자사 상품 목록을 보고 등록할 협찬 상품을 고를 수 있도록 Cafe24 상품 조회 API을 읽어온다.할인 코드 생성: 협찬 승인 시 인플루언서별 할인 코드를 만든다.주문 조회: 매일 00:10에 전일 주문을 모아서 동기화한다.이처럼 서비스의 핵심 화면 다수에서 외부 API가 사용..
troubleshooting
문제 발견: 중복 회원가입 문제회원가입 로직에는 중복 검증 로직이 존재하지만, 회원가입이 완료되기 전에 사용자가 버튼을 다시 누르면 중복으로 회원가입이 처리되는 문제가 발생한다. 이는 여러 요청이 동시에 처리되면서 데이터베이스의 동시성 제어가 제대로 작동하지 않기 때문이다. 이러한 문제는 데이터의 무결성을 훼손하고 리소스 낭비를 초래하며, 사용자 경험에도 악영향을 끼친다. 실제 서비스의 문제를 확인한 뒤 테스트 코드를 통해서 회원가입이 동시에 발생하는 환경을 만들어 주었을 때도 같은 오류가 나는 것을 확인할 수 있었다. 테스트는 동일한 회원가입 요청이 동시에 처리되는 상황을 시뮬레이션하고, 중복 회원가입이 방지되었는지 확인한다.threadCount = 2으로 2개의 동시 요청을 준비하고, 이를 병렬로 ..
이번에 MDC와 Logback을 활용해 Discord Webhook 연동을 구현하면서 두 가지 주요 문제가 발생했다. 이 글을 통해 문제를 해결하기 위해 고민했던 방법들과 최종적인 해결책을 함께 담아보려 한다. 1. Failed to parse multipart servlet request 오류 해결 MDC (Mapped Diagnostic Context)와 Logback을 활용하여 로그 데이터를 Discord 웹훅으로 연동하는 작업을 진행하고 있었다. 로그를 보다 효과적으로 관리하고 문제 발생 시 빠르게 알림을 받을 수 있도록 하는 것이 목적이었다. 완료한 뒤 테스트 과정에서 예상치 못한 문제가 있었다. 이 문제의 원인과 해결 방법을 공유하고자 한다. { "message": "서버 내부 오류입니다...
최근 프로젝트에서 Course 삭제 시 다음과 같은 404 에러가 발생했다. 이 문제는 다음과 같은 validateCourse 메서드에서 Course의 소유자와 삭제를 요청한 사용자가 동일한지 확인하는 과정에서 발생했다.private void validateCourse(final User findUser, final Course findCourse) { if (!findUser.equals(findCourse.getUser())) { throw new ForbiddenException(FailureCode.COURSE_DELETE_ACCESS_DENIED); }} 디버깅을 해보니, findCourse.getUser()와 findUser는 동일한 User 객체를 참조하고 있음에도 불..