JAVA/Spring (4) 썸네일형 리스트형 Retry 시스템 만들기 왜 필요한가?네트워크 순간 끊김, 외부 API 일시 장애, DB 잠깐 과부하… 이런 일시적(Transient) 오류는 “조금 있다 다시” 하면 종종 해결...이걸 자동으로 해주는 게 Retry. 단, 영구적(Permanent) 오류는 다시 해도 안됨 (예: 잘못된 파라미터)재시도 대상만 고르는 게 핵심1) 기본 원칙대상 선별 : 재시도할 예외만 고르기 (네트워크 타임아웃, 429/503 등). 재시도해도 소용없는 예외는 제외Backoff + Jitter : 점점 기다리는 시간 늘리기(Exponential Backoff) + 최대 대기 시간(cap)서버 힌트 존중 : HTTP 429에 Retry-After 있으면 그만큼 쉬었다 재시도Idempotency : 같은 요청을 여러 번 보내도 한 번만 처리되게 키.. 실무형 Global Exception Handler 만들기 (ErrorCode Enum + 국제화 + 로그 시스템까지) * 에러 응답 표준(Contract)부터 결정클라이언트와 약속이 제일 중요 { "timestamp": "2025-08-19T12:34:56.789Z", "path": "/api/v1/orders", "status": 400, "code": "ORD_001", /** 비즈니스 오류 식별자(사내 표준) **/ "message": "잘못된 주문 요청입니다.", /** 사용자 노출용(i18n 적용) **/ "errors": [ /** 바인딩/검증 상세 **/ {"field": "quantity", "reason": "must be greater than or equal to 1"} ], "traceId": "a1b2c3d4e5f6" /** 로그 추적(MDC)과 연결 **/}1) ErrorCo.. Global Exception Handler 만들기 1. 왜 필요한가?서비스 규모가 커질수록 예외(Exception)가 발생하는 지점이 많아짐매번 try-catch를 넣으면 코드가 지저분해지고 유지보수가 힘들어짐Global Exception Handler를 쓰면, 모든 예외를 한 곳에서 모아서 처리 가능 → 일관성 있는 에러 응답 제공2. 구현 방법(1) @RestControllerAdvice + @ExceptionHandler 사용 @RestControllerAdvicepublic class GlobalExceptionHandler { // 사용자 정의 예외 처리 @ExceptionHandler(CustomException.class) public ResponseEntity handleCustomException(CustomExcepti.. [SPRING]스프링 입문을 위한 자바 객체 지향의 원리와 이해(1) 책을 시작하자마자 작가가 의문을 던진다. 스프링을 이해하려면 이전의 어떤 기술을 이해하고 있어야 하는가? 나는 당연하게 OOP라고 생각했다. 하지만 작가는 다양한 답변을 내놓았고 그중 물론 OOP라는 답변이 있었다. 작가가 원했던 답변은 아래와 같다. SOA CBE OOP 절차적/구조적 프로그래밍 기계어/어셈블리어 5 로 갈수록 작가의 만점과 가까워지는 것 같은데 나는 아쉽게도 OOP만 생각해냈다. 그다음 장으로 넘어가서 작가는 T 메모리 구조를 보여주면서 static, stack, heap 영역들의 역할과 구조 등을 알려 주었는데 정리를 하자면 아래와 같다. 스태틱 영역 스택 영역(메서드들의 놀이터) 힙 영역 스레드 스레트 스태틱 = 클래스의 놀이터 스택 = 메스드의 놀이터 힙 = 객체의 놀이터 위의 .. 이전 1 다음