Spring/Spring 기초2025. 6. 19. 00:36[Spring/기초] 외부 Api를 호출해서 서버 날리기 (외부 Api 호출 위험성 낮추기)

그냥 예외처리만 잘했는데요?좋아 그럼 너의 서버는 외부 api장애시 thread pool을 전부다 소모해버릴 것이다.외부 Api 호출시 생길수 있는 문제는 다음과 같다.타임아웃 미설정 - 외부 Api가 느려도 응답을 기다리며 스레드 점유벌크헤드 없음 - 외부 Api호출이 하나의 공유 스레드풀, 리소스풀을 사용해 장애가 전파됨서킷 브레이커 없음 - 실패가 연속해서 발생해도 계속 api를 호출함Retry 백오프 없음 - 일시적인 장애인데도 retry를 짧은 시간동안 계속 반복멱등성 없음 - 재시도 요청이 중복처리됨그럼 이제 이들의 자세한 원인 해결 법을 알아보자타임 아웃 미설정서블릿 서버의 경우 1요청 1스레드를 점유하게된다. 이때 wait time 설정이없어서 무한정 대기한다면 금방 스레드 풀이 소모될 것..

Spring/JPA2025. 6. 12. 18:59[Spring/JPA] JPA ID 생성 전략

JPA에서 Id 생성하기jpa를 사용해서 entity를 만들다보면 @Id 어노테이션을 사용하게된다. 이때 db에 id생성 방식을 잘 만들었다면 자동할당이 되서 신경쓰지 않아도돠나 직접할당을 사용하려면 @GeneratedValue를 사용해서 stretagy 옵션을 사용해서 설정할수 있다. 여기올수있는 값의 코드는 다음처럼 생겼다.Enum값으로 4가지가 있다@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { GenerationType strategy() default GenerationType.AUTO; String gen..

[Spring/Batch] Spring Batch Domain Language of Batch
Spring/Batch2025. 1. 9. 21:23[Spring/Batch] Spring Batch Domain Language of Batch

이번글은 Spring Batch에 관한 글이다.SpringBatch는 Spring 생태계에 입문했다면 한번쯤 듣게되며 주로 대용량 처리에서 듣게 된다.Spring Batch 5.x.x version으로 진행할 것이며 이번글은 이 SpringBatch 카테고리의 2번재인 핵심 객체 및 관계에 대한 정의를 다뤄보려고 한다. 기본적인 개념을 다루기 때문에 코드에 대한 깊은 설명을 진행하지 않는다.공식 문서를 참고했다. Configuring a Step :: Spring BatchAs discussed in the domain chapter, a Step is a domain object that encapsulates an independent, sequential phase of a batch job and..

[Spring/기초] Valid 예외 처리 + 404, 405 (2)
Spring/Spring 기초2024. 9. 13. 01:23[Spring/기초] Valid 예외 처리 + 404, 405 (2)

문제지금 식별한 부분중 처리되지 않는 에러MethodArgumentNotValidException 400MissingServletRequestParameterException 400HandlerMethodValidationException 400NoHandlerFoundException 404HttpRequestMethodNotSupportedException 405이들은 공통응답처리가 되지 않았다valid, validate, 없는 url과 없는 method로 호출할때가 공통응답 처리가 되지 않았다.@RestControllerAdvicepublic class GlobalExceptionHandler extends ResponseEntityExceptionHandler이유는 ResponseEntityExc..

[Spring/기초] api 공통 응답 포맷 + 예외 처리 합치기 (2)
Spring/Spring 기초2024. 7. 15. 17:48[Spring/기초] api 공통 응답 포맷 + 예외 처리 합치기 (2)

공통 응답 포맷을 만드는 이유일관된 응답 형식 유지모든 API 응답을 일관된 형식으로 유지할 수 있다.이는 전체적인 프로그램의 유지 보수성을 높인다.로깅 및 모니터링같은 방식으로 응답을 하니 로깅 및 모니터링이 더 쉬워진다.보안 및 데이터 검증응답을 전역적으로 처리함으로써 민감한 정보를 숨기거나 데이터를 검증하는 등의 보안 작업을 일관되게 수행할 수 있다.ResponseBodyAdvice 공통 응답 포맷1. 공통 응답 코드 형식 정하기public interface ResponseCode { String name(); HttpStatus getHttpStatus(); String getData();}클라이언트에게 공통 응답 코드를 어떤 형식으로 보내줄 것인지 정의한다.@Getter@Requ..

[Spring/기초] 전역 예외 처리 + Test Code (1)
Spring/Spring 기초2024. 7. 14. 22:17[Spring/기초] 전역 예외 처리 + Test Code (1)

전역 예외 처리를 해야하는 이유Spring은 에러 처리를 위한 BasicErrorController를 구현해뒀다. 그래서 예외가 발생한다면 기본적으로 /error로 에러 요청을 다시 전달하도록 WAS 설정을 해놨다.이것은 Springboot의 WebMvcAutoConfiguration을 통해서 자동으로 이루어진다. 일번적 요청의 흐름은 다음과 같이 진행된다.WAS(톰캣)필터서블릿 (디스패처 서블릿)인터셉터컨트롤러예외가 발생했을 때 별도의 처리를 하지 않았다면 WAS까지 에러가 전달된다. 이때 WAS는 애플리케이션에서 처리를 못하는 예외라 exception이 올라왔다 판단, 대응 작업을 진행한다.컨트롤러(예외 발생)인터셉터서블릿 (디스패처 서블릿)필터WASWAS는 스프링 부트가 등록한 에러 설정에 맞게 요..

728x90
image