Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_3
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Catalogs Microservice 프로젝트 생성 강의에서는 스프링부트 버전을 2.4.2로 선택, 나는 3.0.3으로 선택했다. build.gradle ModelMapper dependancy 추가 implementation 'org.modelmapper:modelmapper:2.4.2' application.yml server: port: 0 spring: application: name: catalog-service h2: console: enabled: true settings: web-allow-others: true path: /h2-console jpa: hibernate: ddl-auto: create-drop show..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_2
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice - 사용자 조회 User의 전체 사용자 목록과 상세 정보 보기 기능을 추가해보자. UserController의 각 메서드 uri 매핑 주소에 prefix 격으로 '/user-service/'가 들어간다. 그러므로 클래스 블럭에 있는 @RequestMapping() 어노테이션에 해당 uri를 기재하고, 각 메서드 XXXMapping()에 적혀있는 '/user-service/'는 지워주자. @RequestMapping("/user-service/") public class UserController { ... } ResponseUser vo에 회원 주문 목록을 볼 수 있도록 필드를 하나 추가한다. 아직 R..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_1
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice와 Spring Cloud Gateway 연동 Controller에서 port 출력 @GetMapping("/health_check") public String status() { return String.format("It's Working in User Service on PORT %s", env.getProperty("local.server.port")); } apigateway-service 프로젝트 route 정보 입력 application.yml routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-2
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Users Microservice - JPA① build.gradle_validation dependency 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' VO 생성 @Data public class RequestUser { @NotNull(message = "Email cannot be null") @Size(min = 2, message = "Email not be less than two characters") @Email private String email; @NotNull(message = "Name cannot be null") @Si..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-1
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(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 U..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_E-commerce 애플리케이션
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) E-commerce 애플리케이션 너무 복잡한 애플리케이션을 만들진 못하고 간단하게 세 가지의 마이크로 서비스를 만들어보자. CATALOG-SERVICE USER-SERVICE ORDER-SERVICE 전체적인 애플리케이션 구성 전체적인 애플리케이션 구성 구성요소 설명 Git Repository 마이크로서비스 소스 관리 및 프로파일 관리 Config Server Git 저장소에 등록된 프로파일 정보 및 설정 정보 Eureka Server 마이크로서비스 등록 및 검색 API Gateway Server 마이크로서비스 부하 분산 및 서비스 라우팅 Microservices 회원 MS, 주문 MS, 상품(카테고리) MS Queuing System..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_7
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Load Balancer Eureka 설정 dependencies 확인(gradle) - 세 개 프로젝트에 모두 적용 implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' application.yml 설정 - 세 개 프로젝트에 모두 적용 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka 아래 코드는 apigateway-service 프로..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_6
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway-Logging Filter Global Filter와 비슷한 Logginfg Filter를 작성해보자. 그럼 이 프로젝트에 적용된 필터는 3개이다. Custom Filter, Global Filter, Logging Filter. 이 필터들의 순서는 다음과 같다. Global Filter PRE Custom Filter PRE Logging Filter PRE Logging Filter POST Custom Filter POST Global Filter POST LoggingFilter.java 생성 @Override public GatewayFilter apply(Config config) { G..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_5
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Custom Filter 적용 CustomFilter.java 생성 @Component @Slf4j public class CustomFilter extends AbstractGatewayFilterFactory { public CustomFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // Custom Pre Filter return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); ServerHttpRe..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_4
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Gateway - Filter 적용(Java 소스) 자바 코드로 필터 설정을 하기 위해 application.yml에 설정했던 route 관련 설정을 주석처리한다. spring: application: name: apigateway-service # cloud: # gateway: # routes: # - id: first-service # uri: http://localhost:8081/ # predicates: # - Path=/first-service/** # - id: second-service # uri: http://localhost:8082/ # predicates: # - Path=/second-s..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_3
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 나는 Netflix Zuul.... 강의 때 임의로 Spring Cloud Gateway를 사용했었는데....이렇게 따로 강의가 있었다니...! 복습하는 셈치고 간략하게 쑥쑥 적어야겠다. Spring Cloud Gateway - 프로젝트 생성 Spring Boot 버전은 2.7.8로 설정했다. 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-..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_2 (gateway 사용)
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Netflix Zuul - Filter 적용 강의에서는 Netflix Zuul을 사용해서 필터링했지만 나는 spring cloud gateway를 사용했다. LogginFilter.java 생성 @Component // 일반적인 빈 형태 @Slf4j // jackson을 통한 logger 사용 public class LoggingFilter extends AbstractGatewayFilterFactory { @Data public static class Config { private String baseMessage; private boolean preLogger; private boolean postLogger; } public L..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_1
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) API Gateway란? API Gateway Service는 사용자가 설정한 Routing 설정에 따라 각 endpoint로 client를 대신해서 요청하고, 응답을 받으면 다시 client에게 전달해주는 역할을 한다. 시스템의 내부 구조는 숨기고 외부의 요청에 대해 적절한 형태로 가공해서 응답할 수 있는 장점이 있다. API Gateway Service가 없을 시에 client에서는 microservice를 호출할 때, 클라이언트 쪽에서 endpoint를 설정하게 된다. 그런데 만약 microservice의 설정이 변경되어 endpoint가 변경되거나, 새로운 microservice가 추가되어 이에 해당하는 endpoint를 cli..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Service Discovery
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Spring Cloud Netflix Eureka Service Discovery 마이크로서비스의 정보(위치 등)를 등록할 수 있음 외부의 요청이나 서비스가 마이크로서비스의 정보를 검색하기 위해 사용됨 Eureka의 구성 요소 Service Discovery : 외부에서 마이크로서비스를 찾아주는 기능 Service Registry : 각각의 서비스가 자신의 위치 정보를 특정 서버에 등록하는 작업 Eureka Service Discovery - 프로젝트 생성 강의에선 Maven으로 진행했지만 나는 Gradle을 선택했다. Dependencies에서 Spring Cloud Discovery > Eureka Server를 선택한다. 참고로 ..
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Microservice와 Spring Cloud의 소개_2
·
공부/Spring
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Monolithic VS Microservice Monolithic 어플리케이션 개발에 필요한 모든 요소를 하나의 소프트웨어에 포함시켜 개발하는 방법 DB 로직, 비즈니스 로직, 프론트엔드 등 모든 서비스들이 유기적으로 연결되어있고, 배포 시에도 서로 의존성을 가진 채 패키징된다. Microservice 어플리케이션을 구성하는 각각의 구성 요소 및 서비스의 내용을 분리해서 개발하고 운영하는 방식이다. 유지보수 및 변경 사항을 적용하는데 더 유리하다. Monolith Architecture 모든 업무 로직이 하나의 어플리케이션 형태로 패키징 어플리케이션에서 사용하는 데이터가 한 곳에서 참조되어 서비스 되는 형태 어느 한 서비스를 수정 및..