MSA

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_4

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Orders Microservice 기능 마이크로서비스 URI(API Gateway 사용 시) HTTP Method 상품 목록 조회 Catalogs Microservice /catalog-service/catalogs GET 사용자 별 상품 주문 Orders Microservice /order-service/{user_id}/orders POST 사용자 별 주문 내역 조회 Orders Microservice /order-service/{user_id}/orders GET 프로젝트 생성 강의에서는 Spring Boot 버전을 2.4.2를 선택했고, 나는 3.0.4 버전을 선택했다. Model Mapper 라이브러리 추가 build.gra..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_3

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_2

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_1

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-2

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Users Microservice-1-1

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_E-commerce 애플리케이션

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_5

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_4

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_3

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_2 (gateway 사용)

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_1

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) API Gateway란? API Gateway Service는 사용자가 설정한 Routing 설정에 따라 각 endpoint로 client를 대신해서 요청하고, 응답을 받으면 다시 client에게 전달해주는 역할을 한다. 시스템의 내부 구조는 숨기고 외부의 요청에 대해 적절한 형태로 가공해서 응답할 수 있는 장점이 있다. API Gateway Service가 없을 시에 client에서는 microservice를 호출할 때, 클라이언트 쪽에서 endpoint를 설정하게 된다. 그런데 만약 microservice의 설정이 변경되어 endpoint가 변경되거나, 새로운 microservice가 추가되어 이에 해당하는 endpoint를 cli..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Service Discovery

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

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Microservice와 Spring Cloud의 소개_2

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) Monolithic VS Microservice Monolithic 어플리케이션 개발에 필요한 모든 요소를 하나의 소프트웨어에 포함시켜 개발하는 방법 DB 로직, 비즈니스 로직, 프론트엔드 등 모든 서비스들이 유기적으로 연결되어있고, 배포 시에도 서로 의존성을 가진 채 패키징된다. Microservice 어플리케이션을 구성하는 각각의 구성 요소 및 서비스의 내용을 분리해서 개발하고 운영하는 방식이다. 유지보수 및 변경 사항을 적용하는데 더 유리하다. Monolith Architecture 모든 업무 로직이 하나의 어플리케이션 형태로 패키징 어플리케이션에서 사용하는 데이터가 한 곳에서 참조되어 서비스 되는 형태 어느 한 서비스를 수정 및..

공부/Spring

Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Microservice와 Spring Cloud의 소개_1

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 소프트웨어 아키텍처 Software Architecture 발전 과정 1960 ~ 1980년대 - 메인 프레임 하드웨어 중심. 하드웨어의 사양이나 성격에 맞춰서 서비스 구축 하드웨어가 고가였기 때문에 서비스의 기능을 수정하기 어려웠음 Fragile : 깨지기 쉬운 시스템 1990 ~ 2000년대 - 분산 Robust, Distributed. 시스템이 안정화 됨 분산 덕분에 서비스의 변화가 발생하더라도 안전성있고 성능이 높은 서비스를 유지 가능 2010 ~ 현재 Resilient(탄력적), Cloud Native 시스템은 로컬 → 클라우드로 이전 확장성과 안전성이 더욱 강화. 지속적인 개선 및 변경 사항이 생겨도 시스템을 탄력적으로 운영..

데부한
'MSA' 태그의 글 목록