본문 바로가기
Spring Boot/Spring Cloud

API Gateway Service 1

by 몰라닉네임 2023. 10. 23.

API Gateway란?

API Gateway Service는 사용자가 설정한 Routing 설정에 따라 각 endpoint로 client를 대신해서 요청하고, 응답을 받으면 다시 client에게 전달해주는 proxy역할을 한다.

 

시스템의 내부 구조는 숨기고 외부의 요청에 대해 적절한 형태로 가공해서 응답할 수 있는 장점이 있다.

API Gateway Service가 없을 시에 client에서는 microservice를 호출할 때, 클라이언트 쪽에서 endpoint를 설정하게 된다. 그런데 만약 microservice의 설정이 변경되어 endpoint가 변경되거나, 새로운 microservice가 추가되어 이에 해당하는 endpoint를 client에 추가할 때 client도 관련해서 수정 및 재배포가 이뤄저야 한다. 이러한 불편함을 없애고자 단일 진입점이 존재하는 개발이 필요하게 되었다

 

Spring Cloud Gateway는 기본적으로 세 가지의 핵심 단위로 구성되어 있다.

  • Route : 목적지 URI, 충족해야 될 여러 조건들(Predicates), 각종 필터들로 이루어진 요청을 라우팅할 대상들이라고 가정
  • Predicate : 자바 8의 Function Predicate로 이루어져 있다. path 혹은 리퀘스트 헤더에 포함된 조건들을 의미한다. 즉, 라우팅에 필요한 조건!
  • Filter : 스프링 프레임워크의 WebFilter의 인스턴스이다. 사용자가 보내는 request, 응답 받는 response를 수정하거나 정제하는 것.

API GateWay 기능

  • 인증 및 권한 부여(에 대한 단일작업이 가능)
  • 서비스(마이크로서비스 등) 검색 통합
  • 응답 캐싱
  • 정책, 회로 차단기 및 QoS 다시 시도
  • 속도 제한
  • 부하 분산 load balancing
  • 로깅, 추적, 상관 관계
  • 헤더, 쿼리 문자열 및 청구 변환
  • IP 허용 목록에 추가

Spring Cloud에서의 MSA간 통신 2가지 방식 

  • RestTemplate
    • 전통적인 사용법. 하나의 웹 어플리케이션에서 다른 어플리케이션을 사용하기 위해 사용된 API
    • 다른 어플리케이션을 호출할 때 접속하고자하는 서버의 주소, port 번호 등을 기재해야했다.
  • Feign Client
    • Spring Cloud에서 사용하는 API
    • interface를 생성하고 외부 microservice 이름만으로 다른 microservice를 호출할 수 있다 

 

Ribbon : Client side Load Balancer

  • Spring Cloud에서 Load Balancer로 Ribbon 채택. Ribbon은 Netfliex에서 만든 서비스.
  • 리액트와 같이 비동기를 사용하는 기술들과의 호환이 잘 안되어 최근에는 잘 사용하지 않음
  • Spring Cloud Ribbon은 Spring Boot 2.4에서 Maintenance 상태가 되었음
    • Maintenace : 다음 버전에서 사용할지 이 기술을 빼거나 보완하려는 상태
  • 서비스 이름으로 호출
  • Health Check

'Spring Boot > Spring Cloud' 카테고리의 다른 글

Spring Cloud Gateway - Filter  (0) 2023.10.23
Spring Cloud Gateway  (0) 2023.10.23
터미널로 gradle build 실행  (0) 2023.10.23
Service Discovery  (0) 2023.10.18
Microservice와 Spring Cloud  (0) 2023.10.17