Study/Java (194) 썸네일형 리스트형 Spring Security, Spring Security OAuth2 Client를 MSA로 구성해 보기 개인적인 공부를 진행한 과정을 정리한 내용입니다. 구성 개요 MSA로 유저 정보를 제공하는 security api 서버와 그걸 사용하는 서버를 구성하려고 한다. 두 서버 모두 Spring Security를 사용하지만 security api를 제공하는 서버는 외부에 노출되지 않는다는 전제 조건으로 응답을 하고 사용하는 서버는 앞단 웹 서버라고 가정해 본다. 별도로 구성하지 않고 되도록 Spring Security의 기본 설정을 사용한다고 가정해서 진행한다. 서버 구성은 다음과 같다. security api server - api 서버, 인증 정보를 저장/응답하는 역할 담당 gate server - 호출하여 인증을 처리하는 서버 제공하려는 기능은 다음과 같다. 일반적인 user password를 사용한 로그.. Spring Cloud OpenFeign 사용해 보기 Spring Cloud OpenFeign 소개 eureka에 여러 application이 등록되었으면 이제 이 정보를 사용하여 호출을 할 수 있게 된다. msa를 사용하게 되면 각 서버들 간 호출의 종속성을 끊어 사용할 수 있다. 도메인도 마찬가지인데 이렇게 끊어놓은 각 서버 간 호출을 매번 restTemplate을 사용하여 작성하면 작성하는 것도 일이고 유지보수 하는 것도 일이다. https://github.com/OpenFeign/feign OpenFeign을 사용하면 api 호출 설정을 간소화하여 interface 선언만으로 호출을 관리할 수 있게 된다. 이런 방식을 선언적 웹 서비스 클라이언트(declarative web service client)라고 한다. Feign은 Neflix OSS 프로.. Spring Cloud Netflix Eureka Server 사용해 보기 Eureka 소개 msa를 구성하면 각 application은 서비스 상황에 따라 트래픽이나 부하가 증가할 경우 인스턴스를 추가로 생성하거나, 반대로 트래픽이나 부하가 감소할 경우 인스턴스를 줄이는 등 microservice에 대한 개별 관리를 하게 되고 이러한 확장과 축소를 수동이 아닌 자동으로 처리를 하여 빈번하게 변화하게 된다. 수시로 변하는 환경을 감지하고 로드 밸런싱을 할 수 있어야 각 msa 간 연계를 관리할 수 있다. 이렇게 동적으로 변하는 환경을 감지하기 위해 Service Discovery 기능을 제공하는 것이 Eureka Server이다. 각 application은 Eureka Client를 통해 Eureka Server로 스스로의 정보를 전달한다. Eureka Server는 이렇게 전.. mysql:mysql-connector-java -> com.mysql:mysql-connector-j 변경 및 Spring Boot 2.7.8 이후 mysql-connector-java 의존성 관리 제거 Spring Boot 2.7.8로 업그레이드하는 경우 mysql-connector-java 의존성을 찾지 못해 에러가 발생하는 것을 볼 수 있다. 이는 Spring Boot 2.7.8의 dependency management에서 더 이상 mysql-connector-java를 관리하지 않기 때문이다. https://github.com/spring-projects/spring-boot/releases/tag/v2.7.8 기존 mysql:mysql-connector-java의 groupId가 "mysql" 단일 단어로 이루어진 채 오래 동안 유지된 레거시 형태인데 이를 reversed domain의 형태인 "com.mysql"로 변경을 하기 위해서라고 한다. https://blogs.oracle.com/my.. Spring Framework 6.0.x 이후 Web 에러 처리 - ProblemDetail 사용하기 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.. java record 사용시 @JsonIgnore 설정 주의점 기존에 다음과 같이 사용한 domain이 있다. @Data public class User { private long idx; private String userId; private String userName; @JsonIgnore private String password; @JsonIgnore private ZonedDateTime createdDate; @JsonIgnore private boolean accountNonExpired; @JsonIgnore private boolean accountNonLocked; @JsonIgnore private boolean credentialsNonExpired; @JsonIgnore private boolean enabled; private List u.. [오류수정반영예정] STS 4.17.x, 4.18.x 무한 로딩 현상 2023-05-27 추가 다음 버전 STS에서 해당 버그 수정될 예정이라고 합니다. 관련 내용은 아래 적어두었습니다. 오류 발생 현상 4.17.0부터 발생한 현상이다. 기존에 정상적으로 호출되던 프로젝트가 STS 버전을 올리고 maven -> update project를 하면 무한 로딩을 한다. 혹은 update project를 하지 않아도 일정 시간이 지나면 language server가 무한 로딩을 한다. 관련 현상에 대해 issue가 올라왔고 4.17.1에서 수정하였다고 하였는데 여전히 동일하게 문제가 발생을 한다. 종료된 이슈 https://github.com/spring-projects/sts4/issues/925 : #925 OpenRewrite unchecked, but always Lang.. spring-cloud-netflix-eureka-server 재시작 시 instance 초기화 문제 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.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 25 다음