PortOne에서는 실제 환불에 성공했는데 이후 우리 서버의 주문 상태 변경이나 재고 복구가 실패하면 어떻게 해야 할까?
같은 주문에 접근하려는 다른 요청은 PortOne의 응답과 아무런 관계가 없음에도 Lock이 풀릴 때까지 기다리게 된다.
📍 5만 건 위치 검색, 573ms를 91ms로 줄인 과정 — Bounding Box와 Elasticsearch 비교

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

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

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

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

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

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

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

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

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

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

지피티랑 1시간 넘게 싸웠는데 알고 보니 포트 번호 문제;;

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