profile
끝까지 가면 내가 다 이겨

Sale Commerce 조회 API DTO 직접 조회

조회 API에서 엔티티 전체를 가져올 필요가 있을까?

2026년 8월 28일
·
1개의 댓글
·

Sale Commerce 결제 실패 재고 복구

재고 복구 과정에서도 동시성 문제가 발생할 수 있었다.

2026년 8월 28일
·
0개의 댓글
·

Sale Commerce PortOne 환불 부분 실패

PortOne에서는 실제 환불에 성공했는데 이후 우리 서버의 주문 상태 변경이나 재고 복구가 실패하면 어떻게 해야 할까?

2026년 8월 28일
·
0개의 댓글
·

Sale Commerce Redisson 분산 락

재고가 5개뿐인데 20명의 사용자가 거의 동시에 구매 버튼을 누르면 어떻게 될까?

2026년 8월 28일
·
0개의 댓글
·

Sale Commerce 결제 승인 트랜잭션

같은 주문에 접근하려는 다른 요청은 PortOne의 응답과 아무런 관계가 없음에도 Lock이 풀릴 때까지 기다리게 된다.

2026년 8월 28일
·
0개의 댓글
·

RoomPick 인기 숙소 Redis 랭킹 / 캐시

과거에 조회수가 높았던 숙소가 계속 상위에 남는다.

2026년 8월 28일
·
0개의 댓글
·

RoomPick Cache Stampede / Single Flight

문제는 캐시가 만료되는 순간이었다.

2026년 8월 28일
·
0개의 댓글
·

RoomPick 위치 검색 최적화

📍 5만 건 위치 검색, 573ms를 91ms로 줄인 과정 — Bounding Box와 Elasticsearch 비교

2026년 8월 28일
·
0개의 댓글
·
post-thumbnail

🚀 Redis 인기 숙소 캐시 V1 → V2 고도화: 빠르기만 한 캐시에서 최신성까지 고려한 구조로

RoomPick의 인기 숙소 기능은 사용자가 숙소 상세 페이지를 조회할 때 Redis에 점수를 기록하고, 점수가 높은 숙소를 인기 숙소 목록으로 제공한다. 처음에는 동일한 인기 숙소 요청이 반복될 때마다 Redis와 MySQL을 다시 조회하는 비용을 줄이기 위해 인기 숙소 응답 캐시 V1을 구현했다. V1을 적용한 뒤 응답 속도와 처리량은 크게 개선됐...

2026년 8월 5일
·
2개의 댓글
·
post-thumbnail

🚨 캐시가 있는데 DB 조회가 10번? Cache Stampede를 Single Flight로 해결한 과정

인기 숙소 조회 성능을 개선하기 위해 Redis 응답 캐시를 적용했다. 캐시가 존재하는 동안에는 동일한 인기 숙소 요청이 들어와도 Redis에 저장된 완성 응답을 바로 반환하기 때문에 Redis 랭킹 조회와 MySQL 조회를 생략할 수 있었다. 그런데 캐시를 적용했다고 해서 모든 문제가 끝난 것은 아니었다. 캐시의 TTL이 만료되는 순간 동일한 요청...

2026년 8월 5일
·
0개의 댓글
·
post-thumbnail

[트러블슈팅] Kafka + Outbox를 붙이면서 만난 Spring Boot 테스트 실패 해결기 📨🔥

커피 주문 프로젝트에 Kafka + Outbox 패턴을 적용하면서 발생한 여러 문제와 해결 과정을 정리한 글입니다. 1. 구현하려던 기능 🚀 커피 주문 프로젝트에서 주문이 완료되면 주문 데이터를 외부 데이터 플랫폼으로 전송해야 했다. 처음에는 주문이 성공한 뒤 바로 Kafka로 이벤트를 보내는 방식을 생각했다. 하지만 그렇게 하면 이런 문제가 생길...

2026년 7월 20일
·
0개의 댓글
·
post-thumbnail

[트러블슈팅] Postman은 성공했는데 Docker MySQL에는 데이터가 없었다 🐳🧐

Spring Boot 프로젝트에서 Postman 테스트는 정상적으로 성공했는데, Docker MySQL에 접속해서 확인하니 테이블이 하나도 보이지 않았던 문제를 정리한 글입니다. 1. 문제 상황 🚨 커피 주문 프로젝트에서 메뉴 조회, 포인트 충전, 주문 API를 구현한 뒤 Postman으로 테스트를 진행했다. Postman 결과는 모두 성공이었다. ...

2026년 7월 20일
·
0개의 댓글
·
post-thumbnail

CH5 플러스 스프링 모의면접 질문범위

CH5 플러스 스프링 모의면접 예상질문 정리 > QueryDSL, Cache, Redis, 인덱스, 쿼리 튜닝, 동시성, AOP, 테스트 영역에서 나올 수 있는 면접 질문과 핵심 답변을 정리했습니다. QueryDSL 영역 Q1. QueryDSL의 BooleanExpression을 활용한 동적 쿼리 작성 방식을 설명해주세요. A. QueryDSL에서...

2026년 6월 29일
·
0개의 댓글
·
post-thumbnail

CH4 클라우드·결제시스템 모의면접 예상질문 리스트

CH4 클라우드·결제 시스템 모의면접 예상질문 정리 > AWS 배포, Docker, HTTPS, PortOne V2 결제, Webhook, 포인트 결제, 환불, 재고 정합성, 정기 구독 결제까지 CH4 프로젝트에서 나올 수 있는 면접 질문과 핵심 답변을 정리했습니다. AWS · 배포 영역 Q1. EC2, RDS, S3를 함께 사용하는 이유가 뭔가요?...

2026년 6월 29일
·
0개의 댓글
·
post-thumbnail

CH1-3 Java ~ 숙련 Spring 모의면접 예상질문 리스트

CH1-3 Java ~ 숙련 Spring 모의면접 예상질문 정리 > Java / OOP, HTTP / Web, Spring, JPA, 인증 영역에서 자주 나올 수 있는 면접 질문과 핵심 답변을 정리했습니다. Java / OOP 영역 Q1. OOP의 4가지 특징을 설명해주세요. A. OOP의 4가지 특징은 캡슐화, 상속, 다형성, 추상화입니다. ...

2026년 6월 29일
·
0개의 댓글
·
post-thumbnail

[트러블슈팅] RedissonClient Bean 등록 후 테스트 빌드 실패 해결

문제 상황 선착순 이벤트 기능에서 Redis Lock을 사용하기 위해 RedisLockManager를 구현했다. 하지만 이후 빌드를 실행하자 테스트 단계에서 실패했다. 처음 발생한 에러는 다음과 같았다. 1차 원인 RedisLockManager는 RedissonClient를 생성자 주입으로 받고 있다. 그런데 프로젝트에 아직 RedissonCli...

2026년 6월 23일
·
0개의 댓글
·
post-thumbnail

[Spring] CH 5 플러스 Spring 과제 초기 설정 트러블슈팅

들어가며 CH 5 플러스 Spring 과제를 진행하면서 본격적인 기능 구현에 들어가기 전, 프로젝트 실행 환경을 맞추는 과정에서 몇 가지 문제가 발생했다. 이번 과제는 기존 GitHub Repository를 fork한 뒤 local로 clone해서 진행하는 방식이었다. 프로젝트를 처음 실행하고 테스트를 돌리는 과정에서 Gradle Wrapper, Ja...

2026년 6월 19일
·
0개의 댓글
·
post-thumbnail

# 🛠️ [트러블슈팅] 전액 환불 시 `ORDER_004` 오류가 발생한 이유

✅ 문제 상황 커머스 결제 시스템 프로젝트에서 주문 환불 API를 테스트하던 중, 요청 Body 형식은 올바르게 작성했는데 계속 아래와 같은 오류가 발생했다. Postman 요청은 다음과 같았다. 테스트 데이터도 정상적으로 준비되어 있었다. 즉, 이미 결제가 완료된 주문이었고, 전액 환불을 진행할 수 있는 상태라고 생각했다. 그런데 계속 ORDE...

2026년 6월 9일
·
0개의 댓글
·
post-thumbnail

CH4. 클라우드 아키택처 설계 & 배포 트러블 슈팅

[AWS RDS] MySQL 접속 중 Unknown database '3306' 오류 해결

2026년 5월 26일
·
0개의 댓글
·