재고가 0인데도 대기열을 닫지 못했다: 매진 판정의 조건을 다시 세운 이유
재고 100개 상품에 300명이 몰린 부하에서 대기열은 판매 성공률을 높였지만, 매진 뒤 결제까지 갔다가 거절되는 헛걸음은 140건으로 줄지 않았다. 재고 0과 결제 결과 미확정 예약을 나눠 측정한 결과를 정리한다.
검색 결과가 없습니다
제목, 태그, 카테고리로 검색
재고 100개 상품에 300명이 몰린 부하에서 대기열은 판매 성공률을 높였지만, 매진 뒤 결제까지 갔다가 거절되는 헛걸음은 140건으로 줄지 않았다. 재고 0과 결제 결과 미확정 예약을 나눠 측정한 결과를 정리한다.
실 DB 통합 테스트 잡을 로그로 쪼개 가며 줄였다. 측정용 테스트를 매일 도는 워크플로로 옮기고 MySQL을 한 번만 띄우고 Spring Modulith로 바뀐 모듈의 테스트만 골랐다. 그 과정에서 내가 넣은 종료 훅이 60초를 쓰는 것과 리포트에 안 잡히던 데이터 적재 2.5분을 찾았다. 전부 돌아도 3.2분, 골라 돌면 1.7분이다. 효과가 편차보다 작았던 개선 하나는 닫았다.
결제 대사 담당자가 한 주문의 원인을 판단하려면 API 7회와 목록 검색 6회를 거쳐야 했다. 여러 도메인의 근거를 읽기 전용 타임라인으로 모으고, 확정 가능한 원인만 근거와 함께 제안하도록 바꾼 과정을 정리한다.
BE-commerce는 주문·결제·정산·대사·추천을 하나의 Spring Modulith 애플리케이션으로 구현한 이커머스 백엔드입니다. 기능 소개보다 실패를 재현하고 측정해 경계를 정한 글을 영역별로 모았습니다.