Backend/Spring Cloud

Spring Cloud Gateway - 개념 및 프로젝트 생성

야뤼송 2022. 3. 31. 14:23
반응형
해당 내용은 인프런 이도원님의 "Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)"를 듣고 정리한 내용입니다.

 

1. Spring Cloud Gateway(SCG)란?

  • API Gateway
    • 서비스로 전달되는 모든 API요청의 관문 , Gateway 역할을 하는 서버
    • 시스템의 구조를 내부로 숨기고 외부의 요청에 대해서만 응답하기 때문에 클라이언트는 약속한 형태의 API요청을 서버로 전달
    • 인증/인가, L/B & 라우팅, 로깅, Circuit Breaker의 역할을 수행한다.
  •  Srping Cloud Gateway 
    • Spring에서 제공하는 Gateway로 Netflix Zuul을 대체.
    • 특징 
      • 논블로킹(non-blocking), 비동기(Asynchronous) 방식의 Netty Server를 사용
      • Reverse Proxy, 클라이언트의 요청을 받고 이 요청을 적절한 Backend 서보로 라우팅해주는 서버.

2. Spring Cloud Gateway 프로젝트 생성 및 설정

  1. 신규프로젝트 생성
    • name : apigateway (원하는 이름으로 셋팅)
    • maven 프로젝트로 설정 (이도원 강사님이 강의해서 Maven으로 진행하였기에 동일하게 설정)
    • dependencies에는lombok , Eureka Discovery Client, Spring Cloud Gateway 선택
  2. 프로퍼티 설정
    • server.port : 하나의 웹서비스처럼 서버 역할을 해야하므로 서버를 올리기 위한 port를 지정한다.
    • spring.application.name : 어플리케이션 이름을 지정한다.
    • spring.cloud.routes :
      - id : 입력된 라우터의 고유 식별자 입력
      - uri : 입력된 라우터의 주소 지정
      - predicates : 설정된 path의 요청에 해당되는 경우 해당 라우터로 요청을 보내도록 한다. 
      server:
        port: 8000
      
      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-service/**
  3. Spring Cloud Gateway 실행
    • appliation.yml routes에 설정된 uri로 접근 시 정상적으로 연결됨을 확인할 수 있다.
    • http://localhost:8000/first-service/welcome/ 호출 시 Service Server인 First-Servicer가 호출된다.

 

반응형