1.문제 요약 발생 일시:2025-12-04 관련 모듈 / 서비스: 전체 에러 메시지: java.lang.OutOfMemoryError: Java heap space jakarta.servlet.ServletException: Handler proces

공동구매 참여 API에 낙관적 락 + Spring Retry를 적용하는 과정에서 계속해서 다음 에러가 발생했습니다. 처음에는 @Recover 메서드 시그니처 문제라고 생각했지만, 실제 원인은 Spring Retry의 동작 방식과 프록시 한계에 있었습니다. 이번 글에서
MSA 환경에서 여러 서비스가 각각 Spring Batch를 사용하는 경우, 배치 메타 테이블을 어떻게 관리할지는 중요한 설계 포인트가 된다고 생각합니다.서비스별로 Spring Batch 메타 테이블을 분리하는 과정에서@EnableBatchProcessing 하나로 인
1. 문제 상황 서비스의 메서드마다 권한 체크 로직을 반복적으로 작성해야 한다. 기존 방식의 문제점 문제점: 모든 메서드에 권한 체크 코드가 중복됨 권한 체크 로직이 비즈니스 로직과 섞임 새로운 권한 추가 시 모든 코드를 수정해야 함 실수로 권한 체크를 누락할
해당 글은 0909 프로젝트 세미까지 과정에 대한 회고글입니다. 1. 프로젝트 개요 0909(공구공구)는 여러 사용자가 함께 구매에 참여하여 목표 인원 달성 시 할인된 가격으로 상품을 구매할 수 있는 공동구매 이커머스 서비스입니다. 본 프로젝트는 Spring Cl

1. 문제 상황 — 주문이 사라지는 시스템 이커머스에서 주문은 단순 데이터가 아니다. 주문은 다음 모든 흐름의 출발점이다. 즉 주문은 비즈니스의 기준 데이터다. 실제 문제 초기 구조에서는 주문 생성 과정에서 결제 모듈을 동기 호출(openfeign)했다. 문

1. 문제 상황 주문 취소는 단순히 주문 레코드를 지우는 게 아니다. 이 복잡한 플로우를 어떻게 관리할 것인가가 핵심 설계 과제였다. 2. 도메인 모델 CancelStatus — 취소 상태 CancelReason — 취소 사유와 귀책 구분 취소 사유가 귀책을 결정하고, 귀책이 플로우를 결정한다. 상태 전이 3. 취소 요청 플로우 POST /...

1. 이전 코드 — 무엇이 문제였나 이전 cancelOrder() 이전 OrderCancellationPolicy 2. 발견한 문제들 문제 1 — 전략 패턴이 아니라 enum dispatch다 OrderCancellationPolicy는 인터페이스가 아니라 단

시스템 운영 중 발생하는 예외 상황을 실시간으로 파악하는 것은 매우 중요합니다. 디스코드 웹훅을 통해서 애플리케이션의 에러를 디스코드 채널로 전송하는 방법에 대한 글입니다. 1. Webhook이란? Webhook(웹훅)은 서버에서 특정 이벤트가 발생했을 때, 다른 서