개발은 재밌어야 한다
article thumbnail
[MSA] Hystrix 와 resilience4j를 통한 circuit breaker
Spring/Spring 2023. 8. 30. 10:22

MSA 환경에서의 장애 양상MSA에서 더 위험한(빈번한) 실패 시나리오는 서버가 완전히 뻗어버리는게 아니라,버벅거리지만 동작하는 서버가 더 위험할 수 있다. Feign Client와 같이 호출하는 쪽에서는 다른 서비스로 호출을 동기식으로 하기 때문에 응답에 오랜 시간이 걸리더라도 호출을 중단하지 않기 때문입니다. 위 처럼 A,B,C의 서비스가 MSA를 구성하고 있다고 했을때. 서비스 C는 DB를 읽어오는 역할을 하고 있습니다. 지속적으로 DB에서 응답 지연이 발생하고 있는 상황에서 서비스 B가 지속적으로 C를 호출하게 된다면 C에서는 DB에 붙는 커넥션 풀이 고갈되고, B는 C를 반복 호출하면서 C의 스레드 풀을 모두 소진하게 된다. 서버 A 역시 B의 스레드 풀이 소진되면 장애가 발생할 가능성이 높습니..

article thumbnail
엑셀 다운로드 에러 발생 해결 - FontConfiguration에서 NullPointerException 발생
Spring/Spring 2023. 4. 5. 19:19

엑셀 다운로드 기능이 갑자기 안되는 일이 생겨났다 에러 로그를 살펴보니 FontConfiguration쪽에서 NPE(NullPointerException)가 발생했다 발생로그 더보기 org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.l..

article thumbnail
스프링 부트 config 사용법
Spring/Spring 2022. 7. 12. 14:01

스프링 부트에서 컨피그 서비스 사용법 1 Spring에서 제공하는 Environment를 활용하는 방법이다. Legacy( Spring3.x) 에서 사용한 방법과 동일하다. 사용법 2가 스프링 부트에서 권장하는 방법이다. @Slf4j @Service public class TempService { @Autowired private ConfigurableEnvironment environment; public void test() { environment.getProperty("gateway.test"); } } 스프링 부트에서 컨피그 서비스 사용법 2 스프링부트에서 지원하는 @ConfigurationProperties를 활용하는 방법이다. 스프링 부트에서 설정이 편리해진 이유 중 하나이다. https:/..

article thumbnail
@RequiredArgsConstructor란?
Spring/Spring 2022. 6. 10. 19:08

Lombok으로 스프링에서 DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해주는 어노테이션이다. @RequiredArgsConstructor는 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 줍니다. 새로운 필드를 추가할 때 다시 생성자를 만들어서 관리해야하는 번거로움을 없애준다. (@Autowired를 사용하지 않고 의존성 주입) 예시) @RequiredArgsConstructor 를 사용한 예시 @RestController @RequiredArgsConstructor @RequestMapping("/example") public class RequiredArgsConstructorControllerExample { private f..

article thumbnail
spring-boot-starter-data-rest가 어떻게 Rest API 주소를 자동 생성해주는가?
Spring/Spring 2022. 1. 9. 00:54

스프링 부트에서 REST URL을 자동으로 생성해주는 spring-boot-starter-data-rest가 어떻게 주소를 자동으로 생성해서 Rest URL을 생성해주는가에 대해서 알아보겠습니다. 우선 공식 문서 스프링 데이터의 공식문서를 참조해서 보겠습니다. https://docs.spring.io/spring-data/rest/docs/current/reference/html/ Spring Data REST Reference Guide Spring Data REST presents a default view of the domain model you export. However, sometimes, you may need to alter the view of that model for various ..

article thumbnail
[Spring 스프링] Http status 에러 405 Method Not Allowed
Spring/Spring 2021. 6. 22. 15:22

HTTP 상태 에러 코드중에 405에러가 나왔습니다. 콘솔 에러에서 잡힌 로그 Resolved exception caused by handler execution: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 친절하게도 POST를 지원하지 않는다라고 합니다. 브라우저에서 호출할때 POST로 호출하고 Controller에서는 당당히 @RequestMapping(value = "호출URL.do", method = RequestMethod.GET) '매핑하여 받는 주소에 대한 method를 GET으로 지정해서 POST 방식으로 지정해서 Request를 받아라'라고 GET은 허용..

article thumbnail
REST API란?
Spring/Spring 2021. 4. 6. 16:29

REST API란? Representational State Transfer API라는 용어의 약자이다. REST란 "자원을 URI(Uniform Resource Identifier)로 표시하고 해당 자원의 상태(정보)를 HTTP를 이용하여 자원을 주고 받는 것"을 의미한다. 따라서 Restfult API는 REST 특징을 지키면서 API를 제공하는 것을 의미한다. Q) URI 과 URL의 차이점은? URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미합니다. 자원의 위치라는 것은 결국 어떤 파일의 위치를 의미합니다. 반면에 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로, URI는 URL을 포함하게 됩니다...