JpaRepository Save 시, Lock 문제 발생 오류
·
트러블 슈팅
📌 문제 상황토이 프로젝트에서 JPA 엔티티의 PK를 래퍼 클래스 Long으로 지정하고 Repository의 save에 대한 테스트 코드를 작성하던 중, 다음 오류가 발생했습니다.Hibernate: select ue1_0.id,ue1_0.created_at,ue1_0.email,ue1_0.nickname,ue1_0.password,ue1_0.updated_at from users ue1_0 where ue1_0.id=?Hibernate: select ue1_0.id,ue1_0.created_at,ue1_0.email,ue1_0.nickname,ue1_0.password,ue1_0.updated_at from users ue1_0 where ue1_0.id=?Row was updated or delete..
EC2 CPU 사용량 급증 문제
·
트러블 슈팅
⚠️ 문제 상황프로젝트에서 프리티어로 사용하고 있는 EC2 CPU 사용량이 98%를 유지하다가 서버가 내려가는 문제가 발생했습니다.원인을 파악해보려고 하였지만, 쉽게 유추할 수 없었습니다. 해당 문제가 발생한 시각은 약 새벽 2시 30분쯤이었습니다.  🤔 문제 원인이전에 프로젝트 발표할 때의 CPU 사용량을 확인해본 결과, 최대 약 20%까지 사용되었던 것으로 확인하였습니다. 따라서, 일단 트래픽에 의한 증가는 아닐 것이라고 생각하였습니다.하지만 이 원인을 제외하고 다른 원인을 유추해내기는 어려웠습니다. 문제가 발생한 시각도 새벽 2-3시로 팀원이 개발중이지 않은 시간대였습니다. 또한 스케쥴러를 이용하긴 하지만, 새벽에 이루어지는 작업은 존재하지 않았습니다.해당 원인을 찾아보려고 검색한 결과, 프리티어..
배포 시 레디스 초기화 문제
·
트러블 슈팅
⚠️ 문제 상황프로젝트에서 재배포 시, 레디스 데이터가 초기화되는 문제가 발생했습니다.그 원인은 재배포할 때 마다 컨테이너가 다시 올라가게 되는데 이때, 도커로 관리되는 레디스 또한 다시 올라가게 되어 데이터가 초기화되었기 때문이었습니다.이를 해결하기 위해 찾아본 결과, 도커의 Volume을 설정하여 해결할 수 있었습니다.Docker Volume도커 볼륨은 컨테이너와 호스트 간에 데이터를 공유하거나 저장하기 위한 기능으로, 볼륨을 사용하면 데이터의 지속성을 유지하면서 컨테이너를 생성하거나 삭제할 수 있습니다.볼륨은 컨테이너 내부의 데이터를 외부로 링크를 걸어주는 기능입니다. 볼륨을 걸어준 데이터의 경우 컨테이너 내부에서 수정되는 즉시 볼륨이 걸려있는 외부의 데이터도 같이 수정되게 됩니다. 그리고 그 데이..
Spring Data JPA 구현체 순환참조 오류
·
트러블 슈팅
프로젝트 내에서 Mybatis에서 JPA로 마이그레이션을 계획하고 진행 중 한 객체에서 순환참조가 발생하는 상황이 있었습니다.📌 순환참조가 발생한 상황순환참조는 Repository 계층에서 발생했는데요, 구조는 다음과 같았습니다.JpaUserRepositoryImpl은 JpaUserRepository를 주입받아서 사용합니다. JpaUserRepository와 JpaUserRepositoryImpl은 다음과 같습니다.(설명을 위해 간략하게 작성하였습니다.)public interface JpaUserRepository extends JpaRepository {}@Repository@RequiredArgsConstructorpublic class JpaUserRepositoryImpl implements U..