profile
서두르지 않으나 쉬지 않고
post-thumbnail

Prometheus와 Spring Actuator 엔드포인트 문제 해결

아침에 EC2에 Prometheus랑 Spring Actuator를 연결해보려고 했더니, Actuator Prometheus 엔드포인트가 잡히지 않는 문제를 겪었다. 어떻게 해결했는지 내 TIL을 정리해본다.로컬에서는 Prometheus가 localhost:8080/a

2025년 6월 4일
·
0개의 댓글
·
post-thumbnail

GitHub Actions 테스트 실패 원인과 해결 과정 (Spring Boot + YML 설정)

CI/CD 설정하면서 ./gradlew test만 유독 GitHub Actions에서 계속 실패했다.CI 파이프라인은 다음 순서로 짜놨음:Redis 설치테스트 실행Gradle 빌드EC2 배포테스트는 로컬에선 -Dspring.profiles.active=test 옵션 주

2025년 5월 25일
·
0개의 댓글
·
post-thumbnail

AWS SES 스팸함 전송

초기에는 간단하게 Spring Boot에서 구글 SMTP를 사용하여 메일을 보내고 있었다.메일 전송은 성공적으로 되었지만, 중요한 문제가 있었다.❌ 메일이 전부 스팸함으로 분류됨운영 서비스에서는 치명적인 문제라 판단했고,도메인 기반 인증이 가능한 AWS SES(Simp

2025년 5월 23일
·
0개의 댓글
·
post-thumbnail

SSE 연결 실패 트러블슈팅

프론트엔드에서 SSE(Server-Sent Events)를 이용해 알림을 구독하려 할 때, 다음과 같은 에러가 발생했다.또한 연결이 되자마자 readyState는 2(closed)로 바뀌며, onerror 콜백이 실행되었다.HTTP 응답 코드는 200이었기 때문에, 일

2025년 5월 18일
·
0개의 댓글
·

임시

2025년 5월 18일
·
0개의 댓글
·
post-thumbnail

JavaMailSender에서 설정값이 null로 인식된 원인과 해결

이메일 인증 기능을 구현하기 위해 Gmail SMTP 설정을 application-secret.yml에 저장했다. 스프링 프로파일도 정상적으로 지정한 상태였다. ✅ 실행 시 출력도 분명히 두 개의 profile이 활성화된 것으로 확인됨:그런데도 메일 발송 기능은 항

2025년 4월 13일
·
0개의 댓글
·
post-thumbnail

equals() 미구현으로 발생한 JPA Entity 비교 오류

클럽 가입 신청을 관리자가 승인하는 기능을 만들던 중, 관리자가 본인의 클럽에 대해 승인하려 했는데, "유효하지 않은 클럽 관리자입니다" 라는 오류가 발생했다. 분명히 로그인한 사용자는 해당 클럽의 관리자였는데도 말이다.아래는 클럽 관리자인지 검증하는 로직이다:로그를

2025년 3월 30일
·
0개의 댓글
·
post-thumbnail

FairLock을 활용한 순서 보장 확인

문제 상황 처음에는 Redis getFairLock을 사용하여 처리 순서를 보장하려 했으나, 테스트 로그를 통해 순서가 보장되지 않는다고 잘못 판단했다. 이로 인해 FairLock은 성능만 저하시킨다고 생각해 사용을 배제했다. 그러나 서비스 로그를 통해 Redis Fa

2024년 12월 20일
·
0개의 댓글
·
post-thumbnail

Redis Lock 요청 순서 처리 트러블슈팅

쿠폰 발급 API에서 다수의 요청이 동시에 들어왔을 때, 동시성 문제와 요청 순서 처리 문제가 발생했다. 초기 코드는 Redis의 RLock을 사용하여 동시성 문제를 해결했으나, 요청을 순서대로 처리하는 데 실패했다. 이를 해결하기 위해 다양한 방법을 시도했으나, 동시

2024년 12월 20일
·
0개의 댓글
·
post-thumbnail

비관적 락, 레디스 락, 낙관적 락 쿠폰 발급 테스트 비교 분석

테스트 도구: nGrinder 테스트 스크립트: 로그인 후 쿠폰 발급 API 호출 (동일한 API 테스트) Vuser 수: 99명 → 99명의 가상 사용자가 동시에 부하를 발생시킴 Processes/Threads: 3 프로세스, 각 프로세스당 33 쓰레드 Dur

2024년 12월 19일
·
0개의 댓글
·
post-thumbnail

낙관적 락 동시성 제어 이슈와 해결 과정

낙관적 락(Optimistic Lock)을 적용하여 동시성 제어를 시도했지만, 버전 충돌이 발생했을 때 재시도 로직이 제대로 작동하지 않음. 재시도가 실행되어야 하는 상황에서 기타 예외가 발생하며 스레드가 종료되는 현상을 겪음.기타 예외 로그 분석로그에 출력된 메시지:

2024년 12월 19일
·
0개의 댓글
·
post-thumbnail

비관적 락과 레디스 락 쿠폰 발급 테스트 비교 분석

테스트 도구: nGrinder 테스트 스크립트: 로그인 후 쿠폰 발급 API 호출 (동일한 API 테스트) Vuser 수: 99명 → 99명의 가상 사용자가 동시에 부하를 발생시킴Processes/Threads: 3 프로세스, 각 프로세스당 33 쓰레드 Dura

2024년 12월 18일
·
0개의 댓글
·
post-thumbnail

RedissonMultiLock과 isHeldByCurrentThread()의 문제

쿠폰 발급 기능에서 Redisson RedLock을 활용해 동시성 제어를 구현했다. 락 해제 시 중복 해제를 방지하기 위해 isHeldByCurrentThread()를 사용했지만, RedissonMultiLock에서 UnsupportedOperationException

2024년 12월 17일
·
0개의 댓글
·
post-thumbnail

Redisson 락을 활용한 동시성 문제 해결

쿠폰 발급 기능에서 Redis 분산 락을 활용하여 동시성 문제를 해결하려고 했지만, 레이스 컨디션으로 인해 남은 쿠폰 수량과 발급된 쿠폰 수량이 불일치하는 문제가 발생했습니다.증상:락이 해제된 시점에 트랜잭션이 아직 커밋되지 않아 다른 스레드가 동일한 리소스에 접근하게

2024년 12월 16일
·
0개의 댓글
·
post-thumbnail

동시성 제어 테스트에서 비관적 락 실패 문제 해결

목표: 쿠폰 발급 기능에서 동시성 제어를 테스트하기 위해 비관적 락 (Pessimistic Lock)을 적용.증상: 테스트 코드 실행 결과:쿠폰 수량: 100발급된 쿠폰 수량: 0동시성 문제가 해결되지 않았으며, 비관적 락이 제대로 동작하지 않음.비관적 락은 트랜잭션

2024년 12월 16일
·
0개의 댓글
·
post-thumbnail

@Transactional과 동시성 테스트의 문제점 및 해결 방법

Spring Boot 테스트에서 @Transactional을 사용할 때 동시성 테스트에서 예상치 못한 문제가 발생할 수 있다. 이러한 문제는 트랜잭션 격리 수준과 롤백 동작으로 인해 발생하며, 동시성 테스트를 정확히 진행하기 위해선 @Transactional의 동작을

2024년 12월 13일
·
0개의 댓글
·
post-thumbnail

H2 임베디드와 Mockito: 테스트 코드에서의 활용과 차이점

테스트 코드는 프로젝트의 품질을 보장하는 핵심 도구입니다. 특히 데이터베이스와 연동된 코드를 테스트할 때, 테스트 환경이 실제 데이터베이스와 유사한지 여부는 매우 중요한 요소입니다. 이 글에서는 H2 임베디드 데이터베이스와 Mockito를 사용하는 방식의 차이를 비교하

2024년 12월 10일
·
0개의 댓글
·
post-thumbnail

빌더 패턴 & Optional 활용으로 배우는 객체 생성과 조회 로직

이 코드는 Optional, 빌더 패턴, 람다 표현식을 활용하여 객체 조회와 생성 로직을 간결하게 처리하는 매우 유용한 예제입니다. 이 코드에서 배운 점과 주요 개념들을 정리했습니다.Optional:데이터가 있을 수도, 없을 수도 있는 상황을 처리하는 Java의 클래스

2024년 12월 4일
·
0개의 댓글
·
post-thumbnail

허용 가능한 중복과 멀티 모듈 설계의 균형

허용 가능한 중복은 도메인별 요구사항이나 특수성 때문에 모듈 간 유사한 코드가 반복되지만, 이를 완전히 제거하지 않고 설계의 유연성을 위해 일부 중복을 허용하는 접근 방식이다. 도메인별 요구사항의 차이 각 API(User, Boss, Admin)의 비즈니스 로직이 다

2024년 12월 3일
·
0개의 댓글
·
post-thumbnail

멀티 모듈 프로젝트 셋팅 순서

루트 프로젝트 생성:Gradle 기반의 프로젝트를 생성한다.프로젝트 이름은 팀 프로젝트 이름에 맞게 설정한다.Gradle 설정 파일 생성:settings.gradle 파일에서 멀티 모듈을 정의한다.하위 모듈의 경로를 지정.settings.gradle 예시:디렉토리 구조

2024년 12월 3일
·
0개의 댓글
·