Spring Cloud OpenFeign 소개 eureka에 여러 application이 등록되었으면 이제 이 정보를 사용하여 호출을 할 수 있게 된다. msa를 사용하게 되면 각 서버들 간 호출의 종속성을 끊어 사용할 수 있다. 도메인도 마찬가지인데 이렇게 끊어놓은 각 서버 간 호출을 매번 restTemplate을 사용하여 작성하면 작성하는 것도 일이고 유지보수 하는 것도 일이다. https://github.com/OpenFeign/feign OpenFeign을 사용하면 api 호출 설정을 간소화하여 interface 선언만으로 호출을 관리할 수 있게 된다. 이런 방식을 선언적 웹 서비스 클라이언트(declarative web service client)라고 한다. Feign은 Neflix OSS 프로..
Eureka 소개 msa를 구성하면 각 application은 서비스 상황에 따라 트래픽이나 부하가 증가할 경우 인스턴스를 추가로 생성하거나, 반대로 트래픽이나 부하가 감소할 경우 인스턴스를 줄이는 등 microservice에 대한 개별 관리를 하게 되고 이러한 확장과 축소를 수동이 아닌 자동으로 처리를 하여 빈번하게 변화하게 된다. 수시로 변하는 환경을 감지하고 로드 밸런싱을 할 수 있어야 각 msa 간 연계를 관리할 수 있다. 이렇게 동적으로 변하는 환경을 감지하기 위해 Service Discovery 기능을 제공하는 것이 Eureka Server이다. 각 application은 Eureka Client를 통해 Eureka Server로 스스로의 정보를 전달한다. Eureka Server는 이렇게 전..
Spring Framework web의 기존 에러 처리 기존 Spring Framework를 사용하여 웹을 구현하면 기본적으로 제공되는 에러 처리를 사용한 에러 응답 결과는 다음과 같은 형태였다. { "timestamp":1417379464584, "status":400, "error":"Bad Request", "exception":"org.springframework.web.bind.MethodArgumentNotValidException", "message":"Validation failed for argument at index 0 in method: public org.springframework.http.ResponseEntity test.UserController.testUser(test.U..
eureka server를 사용해 보려고 설정을 진행하였다. 적절하게 설정을 하고 각 client에서 @EnableDiscoveryClient annotation을 설정하니 instance 등록이 정상적으로 되었다. 이제 잘 사용하면 되는데 문제는 eureka server를 재기동할 때 등록된 instance가 초기화된다는 점이었다. eureka server의 경우 별도의 back end store를 사용하지 않는다. eureka server가 이 문제를 해결하는 방법은 Peer Awareness이다. https://docs.spring.io/spring-cloud-netflix/docs/current/reference/html/#spring-cloud-eureka-server-peer-awareness..
Spring Cloud Config Server를 jdbc profile로 사용하여 db를 연동하는 경우 4.0.0 버전으로 변경하고 나서 올바르게 동작하지 않는 문제가 있었다. 별다른 오류가 보이지 않고 호출이 되지 않아 찾기 애매한데 문제가 되는 원인은 바로 다음 변경점 때문이다. https://github.com/spring-cloud/spring-cloud-config/commit/7627b230541a3426345c500efa770545cc81c7ab#diff-a3eaa2bb41eb88db463409fe07bb6422e521ae439216ee450f5d3806f6483310 기존에는 전체 공통으로 사용하는 값은 "default"라는 값의 profile로 저장하면 조회가 되었다. JdbcEnvir..
https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x 이 페이지에서는 Spring Framework 6.0으로 upgrade 하는 방법에 대한 지침을 제공합니다. Upgrading to Version 6.1 69 revisions 기준으로 작성됨 Baseline upgrades Spring Framework 6.1은 다음 library를 통해 최소 요구 사항을 높였다: SnakeYAML 2.0 Jackson 2.14 Kotlin Coroutines 1.7 Kotlin Serialization 1.5 Removed APIs 더 이상 사용되지 않는 여러 class, constructor 및 metho..
전체 Release Notes 목록은 이 곳에서 확인할 수 있습니다. https://luvstudy.tistory.com/tag/Release%20Notes https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2022.0-Release-Notes 30 revision 기준으로 작성됨 Breaking Changes Spring Cloud CLI 이 project는 release train에서 제거되었습니다. Spring Cloud Cloudfoundry 이 project는 release train에서 제거되었습니다. Spring Cloud Commons AsyncRestTemplate은 Spring Framework 6에서 제거되었..
https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.xWhat's New in Version 6.2156 revision 기준으로 작성됨Core Containercore container의 관대한 locking; 23501 참조singleton availability에 대한 callback; 21362 참조singleton pre-instantiation 전에 bean factory initionalization을 위한 callback; 32836 참조local root directory 및 jar caching을 통한 multi scan operation으로 component scanning..
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide 3 revision 기준으로 작성됨 이 문서는 application을 Spring Boot 3.0으로 migration 하는데 도움을 주기 위한 것입니다. Before You Start Upgrade to the Lastest 2.7.x Version upgrade를 시작하기 전에 사용 가능한 최신 2.7.x 버전으로 upgrade 해야 합니다. 이렇게 하면 해당 라인의 최신 dependency에 대해 빌드하고 있는지 확인할 수 있습니다. Review Dependencies Spring Boot 3으로 이동하면 많은 dependency가 upgrade 되며..
전체 Release Notes 목록은 이 곳에서 확인할 수 있습니다. https://luvstudy.tistory.com/tag/Release%20Notes https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes 21 revision 기준으로 작성됨 Upgrading from Spring Boot 2.7 이것은 Spring boot의 주요 release이기 때문에 기존 application을 upgrade하는 것은 평소보다 조금 복잡할 수 있습니다. 기존 Spring Boot 2.7 application을 upgrade하는데 도움이 되는 전용 migration guide를 마련했습니다. 현재 이전 버전의 Sprin..