728x90
반응형

Architecture/MSA 12

Eureka Server Config 관련 설정들

eureka.client register-with-eureka : 유레카에 등록할지 여부. fetch-registry : 유레카에서 조회할지 여부 registry-fetch-interval-seconds: 클라이언트 측에서 eureka registry를 캐싱하는 시간 disable-delta: 마지막으로 시도한 값에서 변경된 내용만 가지고 오도록 설정. false로 설정 시 바뀌지 않은 내용도 다 가지고 오게 된다. eureka.server enable-self-preservation : 자기보존모드. true일 경우 동작. 네트워크 같은 장애 발생 시 모든 서비스가 eureka에서 일괄 해제되는 현상을 막기 위해 사용. Real에서는 항상 true 여야 한다. eviction-interval-time-..

Architecture/MSA 2021.01.27

Spring Cloud Gateway - Custom Filter

Custom Filter의 기본적인 동작 방식에 대해 알아본다. 기본적인 내용은 docs.spring.io/spring-cloud-gateway/docs/2.2.6.BUILD-SNAPSHOT/reference/html/#writing-custom-global-filters 를 참고하면 되지만 매뉴얼의 특성상 자세하게 나오지 않아서 이해를 위해 www.baeldung.com/spring-cloud-custom-gateway-filters 를 참고하였다. 필터는 기본적으로 Proxied Service로 들어가기 전에 수행하는 Pre filter와 나오면서 수행하는 Post filter가 있다. 또한 org.springframework.core.Ordered 인터페이스를 구현하게 되면 순서에 따라 실행 되는데..

Architecture/MSA 2021.01.08

Spring Cloud Gateway - CORS Configuration

Global CORS 정책을 셋팅할 수 있습니다. spring: cloud: gateway: globalcors: cors-configurations: '[/**]': allowedOrigins: "https://docs.spring.io" allowedMethods: - GET 위의 예는 docs.spring.io 에서 GET으로 호출하는 것만 허용하는 경우이다. POST도 포함하고 싶으면 다음 처럼 열거해 주면 된다. - GET - POST CORS와 관련된 기본 정보는 developer.mozilla.org/ko/docs/Web/HTTP/CORS 참고. 위와 같이 CORS를 셋팅해 주지 않을 경우 POSTMAN 을 통한 호출처럼 호출할 경우 상관 없지만 script를 통해 호출할 경우 호출이 안되는..

Architecture/MSA 2021.01.07

Spring Cloud Gateway - Route Metadata Configuration

route 룰에 meta data를 넣을 수 있다. yml 파일의 경우 아래와 같은 방법으로 하면 된다. spring: cloud: gateway: routes: - id: route_with_metadata uri: https://example.org metadata: optionName: "OptionValue" compositeObject: name: "value" iAmNumber: 1 Java 로 할 경우에는 다음과 같이 한다. import static org.springframework.cloud.gateway.support.RouteMetadataUtils.CONNECT_TIMEOUT_ATTR; import static org.springframework.cloud.gateway.suppor..

Architecture/MSA 2021.01.07

Spring Cloud Gateway - Configuration

yml 파일에 기록한 config를 어떻게 적용 시키는지에 대한 내용으로 보임. 기본적으로 RouteDefinitionLocator 인터페이스를 구현한 PropertiesRouteDefinitionLocator 에서 Springboot의 기본 configure 로딩 방법인 @ConfigurationProperties 메카니즘에 의해 설정을 로딩하게 되어 있다. 매뉴얼에서는 Shortcut notation 방법과 이름 기반하의 설정이 동일하다고 말하고 있다. spring: cloud: gateway: routes: - id: setstatus_route uri: https://example.org filters: - name: SetStatus args: status: 401 - id: setstatuss..

Architecture/MSA 2021.01.07

Spring Cloud Gateway - HttpHeadersFilters

ForwardedHeadersFilter from의 헤더를 to 로 복사해서 보내주는 역할을 하는 것으로 보인다. package org.springframework.cloud.gateway.filter.headers; public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered { /** * Forwarded header. */ public static final String FORWARDED_HEADER = "Forwarded"; ... @Override public HttpHeaders filter(HttpHeaders input, ServerWebExchange exchange) { ServerHttpRequest request..

Architecture/MSA 2021.01.07

Spring Cloud Gateway - Custom Predicate with AbstractRoutePredicateFactory

특정 조건에 특정 route를 적용할 것인지 정의 내리는 것을 predicate 라고 하는데 이미 정의 된 predicate 말고 Custom predicate를 만들 수 있다. AbstractRoutePredicateFactory 추상 클래스를 상속받아 몇 가지만 구현해 주면 된다. import lombok.Getter; import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory; import org.springframework.validation.annotation.Validated; import org.springframework.web.server.ServerWebExchange; import ja..

Architecture/MSA 2021.01.06

Spring Cloud Gateway - Global Filter

기본적인 GlobalFilter 사용법 Global Filter를 커스터마이징 해서 사용하는 방법은 GlobalFilter 인터페이스를 구현하여 filter를 재정의 하면 된다. @Slf4j @Component public class MacaronCustomGlobalFilter implements GlobalFilter, Ordered { @Bean public GlobalFilter customFilter() { return new MacaronCustomGlobalFilter(); } @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { log.info("##################### cust..

Architecture/MSA 2021.01.06

Spring Cloud Gateway - Route Predicate & Gateway Filter Factory

Gateway를 만들면서 사용할 수 있는 룰들을 셋팅하는데 있어서 구글링 및 공식 Document를 보는 것에 시간이 걸려 하나씩 정리해 둔다. 참고로 사용하게 되는 Predicate Factory는 org.springframework.cloud.gateway.handler.predicate 아래에 있다. ( github.com/spring-cloud/spring-cloud-gateway/tree/2.2.x/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/predicate ) @Autowired private SecureHeadersProperties secureHeadersProperties; /** ..

Architecture/MSA 2020.12.28

Hystrix, Feign을 이용한 개발

아직 프로토타입까지만 작성하였지만 기본적인 내용이 돌아가기에 현재의 상태를 기록한다. application.yml 파일 feign: hystrix: enabled: true client: config: feignName: connectTimeout: 5000 readTimeout: 5000 loggerLevel: full hystrix: command: default: # 5초 타임아웃. 1분동안 최소 5회 호출 이상, 50% 이상 실패면 circuit open execution: isolation: thread: timeoutInMilliseconds: 5000 metrics: rollingStats: timeInMilliseconds: 60000 circuitBreaker: requestVolumeT..

Architecture/MSA 2020.12.18

Zuul을 이용한 Gateway 구축 시 설정

Zuul을 이용하여 MSA의 Api Gateway 구축을 테스트 삼아 하고 있는데 설정 값을 지정하면서 알게 된 내용을 정리한다. application.yml 파일을 아래와 같이 설정 하였다. spring: application: name: api-gateway server: port: 8801 eureka: instance: instance-id: zuul-inst001 client: service-url: defaultZone: http://localhost:8761/eureka zuul: routes: chauffeur: path: /chauffeur/** stripPrefix: true path 에 지정하는 값은 client에서 api gateway로 호출할 때의 url path 이다. 해당 pa..

Architecture/MSA 2020.12.11

MSA 관련 북마크

futurecreator.github.io/2018/09/14/what-is-microservices-architecture/ 마이크로서비스 Microservices (1) 아키텍처 소개 주변에서 마이크로서비스 아키텍처(Microservices architecture; MSA)에 대한 이야기가 많이 들려옵니다. 마이크로서비스가 모든 것을 해결해줄 것처럼 이야기하는 사람이 있는가하면, 서비스 지향 아키 futurecreator.github.io futurecreator.github.io/2018/09/14/microservices-with-api-gateway/ 마이크로서비스 Microservices (2) API 게이트웨이 이전 포스트에서 마이크로서비스 아키텍처의 개념을 살펴봤습니다. 이번 포스트에서는 ..

Architecture/MSA 2020.11.20
728x90
반응형