- 트랜잭션(Transaction) 분리하기2025-02-11 15:41:21프로젝트 리팩토링을 진행하다가 트랜잭션의 관리가 미흡하다고 생각되서 정리하게 되었다. 보통 트랜잭션 단위는 일반적으로 짧게 가져가는 것이 이상적이다. 그 이유에 대해 살펴보고, 어떻게 구성해야 하는지 고민해 보겠다. @Transactional 남용의 문제점@Transactional 어노테이션은 Spring Boot 를 쓰는 사람들은 다들 너무나도 편리하다는 생각을 할 것이다.매번 트랜잭션의 시작과 종료를 코드로 명시하지 않아도, Spring AOP를 통해 간단하게 어노테이션으로 트랜잭션 범위를 설정한다.공통적인 횡단 관심사를 해결하는 Spring AOP의 대표적인 사례라고 볼 수 있다.더보기횡단 관심사(Aspect-Oriented Programming, AOP)는 프로그래밍에서 자주 등장하는 개념이다. ..
- [트러블 슈팅] FCM 오류 해결(2024.11.29)2025-02-02 21:37:19현재 fcm 연결 후 로컬 환경에서 제대로 동작되는지 확인을 했고, 알림이 제대로 전송되는 것을 확인했다.이제 배포서버에 적용하기 전 개발서버에서 테스트를 해보려 하는데This browser doesn't support the APIs required to use the Firebase SDK 에러가 발생 뭐가 문제인지 모르겠어서 여러 정보들을 찾아보니 FCM이 적용 안되는 브라우저일 경우 해당 오류가 뜰 수 있다는 것을 찾았다. 하지만 그 원인은 사파리 같은 브라우저에 해당되기 때문에 현재 크롬을 쓰고이는 우리에게는 의미가 없었다. 해당 오류에 대한 정보가 없어서 FCM 공식 홈페이지 를 찾아본 결과 다음과 같은 정보를 알게 되었다. localhost 또는 https에서만 지원된다는 것을 알게 되었..
- [트러블 슈팅] 배포 서버 CI 자동화 적용 이후 오류 발생2025-01-22 14:07:50배포 서버 CI 자동화 적용 이후 오류가 발생했다.AWS EC2 에서 docker에 올라온 log를 확인해보니 IncorrectResultSizeDataAccessException 이 발생한 것을 확인위의 오류 내용을 보면 쿼리 결과값이 유니크하지 않아서 발생했고, 2개의 결과를 반환했다고 되어있다.이 오류는 JPA 레포지토리에서 save 메서드를 통해 데이터 저장을 하면서 발생한 예외이다. 저장하고자 하는 데이터가 db에 이미 존재를 하고 Unique 값을 포함한 데이터인데 데이터 중복이 발생하여 예외가 발생했다. IncorrectResultSizeDataAccessException 에러는 데이터 조회 시 발생하는 에러인데 왜 저장할 때 문제냐고 한다면 // 테스터 생성 코드Member memberA ..
- [트러블 슈팅] 알림 내역 조회 문제2025-01-13 22:43:51문제상황알림 내역은 회원이 읽지 않은 복습 알림을 쌓아두는 기능이다.알림 내역을 확인하려 하니까 404 에러가 발생하는 문제가 생겼다. 아래 코드 부분에서 에러가 발생한 것이다.api를 호출하면서 404에러가 발생할 문제가 무엇인지 확인해보자..// 알림 조회 API 호출const getNotifications = async () => { try { const response = await axiosInstance.get('/v1/api/notification/own/unchecked'); setNotifications(response.data.data); } catch (error) { console.error("알림을 가져오는 중 오류 발생:", err..