티스토리 뷰

API Gateway


API Gateway 는 클라이언트측 에서  여러 Micro Service 로 구성된 서버에 요청을 할 때, Micro Service에 각각 다른 위치( 도메인/IP/Port )를 기억하지 않아도 API Gateway 의 위치 하나로 각 Micro Service에 요청을 전달 할 수 있도록 해주는 인터페이스이다.

 

Why?

클라이언트가 요청이 각각의 서비스에 라우팅하는 수단으로 사용되고 중간에 API Gateway라는 인터페이스를 추가하는 것으로 클라이언트와 각 마이크로 서비스들 간의 느슨한 결합(Loose Coupling)을 구성할 수 있다. 

 

 

 

이뿐만 아니라 API Gateway는 프록시(Proxy) 역할도 할 수 있어서 로깅, 인증, 유효성 검사의 역할도 담당할 수 있다. 

 

 

 

자바 진영에 API Gateway는 Netflix Zuul, Spring Cloud Gateway, Armeria 등이 대표적이다.

 

 

 

Spring Cloud Gateway


1. 의존성 추가

Spring Boot에 아래와 같은 의존성을 추가하여 Gateway를 생성할 수 있다.

implementation 'org.springframework.cloud:spring-cloud-starter-gateway'

 

 

2. Gateway Server에  설정 파일 구성 ( yml , properties )

 

  • routes 아래에는 라우팅 될 각각의 마이크로 서비스에 대한 정보를 기입할 수 있다. 이 때, Eureka와 같은 서비스 디스커버리를 사용하는지 여부에 따라 URI 기입 방법이 달라진다
  • predicates 에 기입된 정보에 따라 요청된 API가 각 마이크로 서비스로 라우팅된다. 예를 들어 API Gateway에   {domain}/user/hello  라고 요청이 들어온다면 user-service 마이크로 서비스로 라우팅 될 것 이다.

 

참조

댓글