Users Microservice - JPA ① VO 생성 RequestUser @Data public class RequestUser { @NotNull(message = "Email cannot be null") @Size(min = 2, message = "Email not me less than two characters") @Email private String email; @NotNull(message = "Name cannot be null") @Size(min = 2, message = "Name not be less than two characters") private String name; @NotNull(message = "Password cannot be null") @Size(mi..
공부/MSA
Users Microservice 개요 APIs 기능 URI(API Gateway 사용 시) URI(API Gateway 미사용 시) HTTP Method 사용자 정보 등록 /user-service/users /users POST 전체 사용자 조회 /user-service/users /users GET 사용자 정보, 주문 내역 조회 /user-service/users/{user_id} /users/{user_id} GET 작동 상태 확인 /user-service/users/health_check /users/health_check GET 환영 메시지 /user-service/users/welcome /users/welcome GET Users Microservice 프로젝트 생성 설정 프로젝트 생성 De..
E-commerce 애플리케이션 CATALOG-SERVICE USER-SERVICE ORDER-SERVICE 전체적인 애플리케이션 구성 구성요소 설명 Git Repository 마이크로서비스 소스 관리 및 프로파일 관리 Config Server Git 저장소에 등록된 프로파일 정보 및 설정 정보 Eureka Server 마이크로서비스 등록 및 검색 API Gateway Server 마이크로서비스 부하 분산 및 서비스 라우팅 Microservices 회원 MS, 주문 MS, 상품(카테고리) MS Queuing System 마이크로서비스 간 메시지 발행 및 구독 애플리케이션 APIs 마이크로서비스 RESTful API HTTP Method Catalog Service /catalog-service/catal..
Eureka 연동 Eureka Client 추가 - pom.xml, application.yml apigateway-service, first-service, second-service 3개의 프로젝트에 모두 추가 dependencies 확인(pom.xml 확인) - 세 개 프로젝트에 모두 적용 pom.xml apigateway-service, first-service, second-service 3개의 프로젝트에 eureka-client 의존성 추가 Maven일 경우 org.springframework.cloud spring-cloud-starter-netflix-eureka-client Gradle일 경우 implementation 'org.springframework.cloud:spring-clou..
Spring Cloud Gateway - Logging Filter Logging Filter는 커스텀 필터이다. LoggingFilter.java 생성 OrderGatewayFilter 형식 @Override public GatewayFilter apply(Config config) { GatewayFilter filter = new OrderedGatewayFilter((exchange, chain) -> {필터 내용}, 순서); return filter; } @Component @Slf4j public class LoggingFilter extends AbstractGatewayFilterFactory { public LoggingFilter() { super(Config.class); } @Ove..
Spring Cloud Filter - Global Filter 차이점 CustomFilter : Route마다 지정해줘야 한다. Global Filter 공통 필터 어떤 Filter보다 먼저 실행되고, 제일 마지막에 종료된다. GlobalFilter PRE CustomFilter PRE CustomFilter POST GlobalFilter POST 순으로 로그가 출력 될 것이다. Global Filter GlobalFilter.java 생성 @Component @Slf4j public class GlobalFilter extends AbstractGatewayFilterFactory { public GlobalFilter() { super(Config.class); } @Override public ..
Spring Cloud Gateway - CustomFilter 적용 apigateway-service 프로젝트 CustomFilter.java 생성 CustomFilter를 사용하려면 AbstractGatewayFilterFactory를 상속받아야 한다. @Component @Slf4j public class CustomFilter extends AbstractGatewayFilterFactory { public CustomFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // # Custom Pre Filter return ((exchange, chain) -> { ServerHttpReques..
[MSA] Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - API Gateway Service 3 (Spring Cloud Gateway - Filter)
filter 종류 prefilter : 사전에 호출 postfilter : 사후에 호출 작업 방법 방법1) 자바코드로 작업 방법2) 프로퍼티(property)로 작업 predicate : 요청정보가 들어오면 어떤 것인지 판단 방법1) 자바 코드 작업 기존에 설정해둔 application.yml에서 routes를 주석처리 해준다. 자바코드로 작성해보자! apigateway-service 프로젝트 Config.java클래스 생성 @Configuration을 추가하게 되면 Spring Boot가 처음 Bootsrap에 의해서 작동을 하게 될 때 @Configuration이 달려있는 Annotation을 모아서 메모리에 먼저 등록하는 작업을 한다. 이때 등록하는 빈의 이름을 RoterLocator로 등록한다. ..
Spring Cloud Gateway 프로젝트 생성 dependencies: Lombok, Gateway, Eureka Discovery Client application.yml server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http;//localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ predicates: # 조건절 - Path=/first-service/..
API Gateway API Gateway Service는 사용자가 설정한 Routing 설정에 따라 각 endpoint(client side에서 microservice 주소를 직접 이용)로 client를 대신해서 요청하고, 응답을 받아서 다시 client에게 전달해주는 Proxy(대리인)역할을 한다. 시스템의 내부 구조는 숨기고 외부의 요청에 대해 적절한 형태로 가공해서 응답할 수 있는 장점이 있다. API Gateway Service가 없을 시에 client에서는 microservice를 호출할 때, client쪽에서 endpoint를 설정하게 된다. 그런데 만약 microservice의 설정이 변경되어 endpoint가 변경되거나, 새로운 microservice가 추가되어 이에 해당하는 endpoi..