스프링
-
스프링 클라우드 게이트웨이 글로벌 필터와 지역 필터스프링/스프링 클라우드 MSA 2024. 8. 5. 16:40
MSA 환경에서 각각의 마이크로 서비스로 요청을 하기 전에 jwt 검증, IP에 대한 접근 권한 등을 해야 하기에 필터를 적용해야 한다. order라고 필터의 숫자가 있는데, 숫자가 작을 수록 가장 먼저 필터가 수행된다. 글로벌 필터 - 모든 서비스를 거치기 전에 거치는 필터지역 필터 - 특정 마이크로 서비스 라우팅에 대해서만 동작하는 필터 1. 글로벌 필터 - 모든 서비스를 거치기 전에 거치는 필터@Componentpublic class G1Filter implements GlobalFilter, Ordered { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { System...
-
SCG 라우팅 추가와 삭제스프링/스프링 클라우드 MSA 2024. 8. 5. 16:20
Gateway에서 여러 서비스들을 라우팅하는데, /user, /order 기능 외에 다른 마이크로 서비스 기능이 생겼다고 가정할 때, 추가 시 동작을 멈추고 재시작이 아니라 동작하는 상태에서 라우팅을 추가하는 방식이 존재한다. 필수 의존성 - Spring Boot Actuator Actuator는 스프링 어플리케이션의 기능을 엔드 포인트로 제공하는 의존성으로, 가동중인 스프링 클라우드 게이트웨이에 새로운 라우팅을 추가 및 삭제할 수 있다. server.port=8080spring.application.name=SCGmanagement.endpoint.gateway.enabled=true # 특정 엔드포인트를 사용할 것이지management.endpoints.web.exposure.include=gat..
-
SCG - Eureka 연동 및 로드밸런싱스프링/스프링 클라우드 MSA 2024. 8. 5. 15:55
MSA는 부하가 걸리면 자동으로 sclae out을 하는 기능을 내부적으로 가진다. 그렇기 때문에 라우팅 테이블에서 auto sclaing 된 후의 ip 주소를 알아야 한다. SCG와 연동된 Eureka Server가 SCG에 리스트를 보내줘서 작동을 돕는다. dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' // 추가 implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.springframework.cloud:spring-cloud-starter-gateway' te..
-
스프링 클라우드 게이트웨이(SCG)스프링/스프링 클라우드 MSA 2024. 8. 5. 15:38
Spring Cloud Gateway스프링 클라우드 MSA 환경에서 가장 앞단에 존재하며 클라이언트로부터 요청을 받고 적절하게 서버에 보내준다.가장 앞단에서 항상 무중지 상태로 모든 요청을 받기에 잘 신경써야 한다.스프링 부트 어플리케이션, Eureka Server, Config와 같은 서비스는 블로킹 기반으로 톰캣 엔진을 통한 로직을 수행했지만, Gateway는 비즈니스 로직을 처리하기 보다는 단순하게 거쳐가는 라우팅 역할을 하기 때문에 논 블로킹 방식으로 구성되며 WebFlux와 Netty를 사용한다. WebFlux는 기존 스프링 부트에서 사용하는 JPA와 같은 블로킹 방식의 의존성을 모두 사용하지 못한다. 필수 의존성 - Spring Cloud Routing의 Gatewaydependencies ..
-
Eureka Client 등록 설정스프링/스프링 클라우드 MSA 2024. 8. 5. 14:39
Eureka Client는 마이크로 서비스로 실행되는 각각의 스프링 서버가 Eureka Server로 관리되기 위해 설정을 통해 client로 작동하는 것이다. 일반적으로 MSA를 생각하면 떠오르는 각각의 기능을 수행하는 서버로 생각하면 된다. build.gradleext { set('springCloudVersion', "2022.0.4")}dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-star..
-
Eureka 서버 구축스프링/스프링 클라우드 MSA 2024. 8. 5. 13:57
이전 포스팅들에서는 스프링 서버에서 공통으로 사용하는 Config Repository와 Config Server에 대해 설명했다. 이번 포스팅에는 각각의 서버가 얼마나 켜져있는지, 어떤 상황인지를 모니터링할 수 있는 Eureka 서버에 대해서 알아볼 예정이다. Eureka 서버의 역할MSA를 구성하는 마이크로 서비스들을 모니터링하는 역할스프링 클라우드 Gateway에게 마이크로 서비스들을 알려주는 역할부하에 따라 자동으로 sclae out 되어도 Gateway에게 그 목록을 알려주는 역할 프로젝트 생성시 필수 의존성 - Eureka Server, Spring Security Main Class@SpringBootApplication@EnableEurekaServer // Eureka Server를 ..
-
Config 클라이언트 구축스프링/스프링 클라우드 MSA 2024. 8. 4. 17:58
이전 포스팅에 Config 리포지토리와 서버를 구성했다. Config 서버에서 Config 리포지토리의 데이터를 받아오는 것까지 완료했으니, Config 서버에 접속해서 가져올 수 있도록 스프링 어플리케이션에 Config 클라이언트를 구성해야할 차례이다. Config Client도 관련 의존성을 주입 받아야 한다. application.properties에 Config 깃허브 Repository의 이름, 환경을 넣어주고 spring.config.import에 configServer에 대한 정보를 넣어주면 된다. 8080 포트에 접근하면 test라고 설정해둔 메시지가 나온다. Config Repository와 Config Server에 접근해서 8080 포트로 연결한 것이다. 어플리케이션 설정파일이 아니..
-
Config Server 설정스프링/스프링 클라우드 MSA 2024. 8. 4. 17:20
지난 포스팅에서 Config Repository를 구축했는데, 여기서 데이터를 받아서 각각의 스프링 서버로 보낼 수 있도록 도와주는 Spring Config Server를 설정해볼 것이다. spring 초기 세팅을 할 때 Spring Cloud Config의 Config Server와 Spring Security에 대한 의존성은 필수로 추가해야 한다. 이후의 의존성에 대한 세팅은 자유이다. 필수 의존성 - Config Server, Spring Security 프로젝트 설정 완료 시 가장 먼저 main 클래스에 @EnableConfigServer 어노테이션을 붙여준다. 이 어노테이션을 통해서 ConfigServer로 동작이 가능해진다. application.properties에서 config serve..