본문 바로가기
Concepts/Cloud

Gateway Routing Pattern

by ocwokocw 2025. 5. 6.

- 출처: https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-routing

 

Gateway Routing pattern - Azure Architecture Center

Use the Gateway Routing design pattern to route requests to multiple services using a single endpoint.

learn.microsoft.com

 

- 개요

Gateway Routing 이란 단일 엔드포인트를 사용하여 요청을 여러 서비스나 여러 서비스의 인스턴스들로 라우팅하는것을 말한다. 이 패턴은 아래와 같은 경우에 유용하다.

  • 단일 엔드포인트로 여러 서비스를 노출하고 요청에 기반하여 적절한 서비스로 라우팅
  • 단일 엔드포인트로 로드밸런싱이나 가용성을 목적으로 동일 서비스의 여러 인스턴스를 노출
  • 단일 엔드포인트로 트래픽을 여러 버전으로 라우팅하여 동일 서비스의 다른 버전을 노출

- 문제 상황

클라이언트가 여러 서비스들 혹은 여러 서비스의 인스턴스들 혹은 두 경우 모두를 사용할 필요가 있을 때 서비스가 추가되거나 삭제되면 클라이언트또한 갱신되어야 한다.

  • 여러 서비스: e-commerce 어플리케이션은  검색, 리뷰, 장바구니, 주문내역등과 같은 여러 서비스를 제공한다. 각 서비스는 다른 API 를 가지고 있으므로 클라이언트는 이런 서비스들과 연결하기 위해 각 엔드포인트를 알아야 한다. 만약 API 가 변경되면 클라이언트또한 이에 따라 갱신되야 한다. 만약 서비스를 더 작은 서비스로 나눈다면 서비스와 클라이언트 둘 다 코드가 변경되야 한다.
  • 같은 서비스의 여러 인스턴스: 시스템은 같은 혹은 다른 리전내의 같은 서비스에 대해 여러 인스턴스를 실행되어야할 수 있다. 로드 밸런싱이나 가용성 요구사항을 충족하기 위해 여러 인스턴스를 실행할 수 있는데 매 인스턴스가 뜨고 내려갈때마다 클라이언트 또한 갱신되야 한다.
  • 동일 서비스의 여러 버전: 배포 전략중에 하나로 서비스의 신규 버전이 기존에 존재하는 버전과 함께 공존할 수 있다. (블루 - 그린 배포). 이런 경우 클라이언트는 신규 버전과 기존 엔드포인트에 대한 트래픽 비율을 조정할 때 마다 갱신되야 한다.

- 해결책

어플리케이션, 서비스, 배포 집합 전방에 게이트웨이를 배치한다. 요청을 적절한 인스턴스로 라우팅하기 위해 어플리케이션 7계층을 사용할 수 있다.

 

이 패턴을 사용하면 클라이언트 어플리케이션은 단일 엔드포인트만 알면되며 이 엔드포인트와만 통신하면 된다. 

 

여러 서비스들

 

게이트웨이 라우팅 패턴은 클라이언트가 여러 서비스가 필요한 경우 유용하다. 서비스가 교체되거나 통합되거나 하는 것과 같이 변경되는 경우에도 클라이언트는 이런 사항들을 알 필요가 없다. 

 

게이트웨이는 또한 클라이언트로부터 백엔드 서비스를 추상화해주므로 클라이언트 요청의 간결성을 유지해주고 게이트웨이 뒤에서 백엔드 서비스의 변경의 유연성을 보장해준다.

 

같은 서비스의 여러 인스턴스

 

탄력성을 클라우드 컴퓨팅의 핵심이다. 서비스가 급격히 증가하는 요청량에 대응하거나 요청량이 없을때는 비용 절감을 위해 인스턴스를 줄이는등의 대응이 가능하다. 서비스의 인스턴스를 등록 및 해제하는 복잡성이 게이트웨이 뒷단에서 캡슐화되어 클라이언트가 이런 사항을 알 필요가 없게 해준다. 서비스 인스턴스는 단일 혹은 다중 리전으로 배포될 수 있다.

 

같은 서비스의 여러 버전

 

이 패턴은 배포전략을 유연하게 가져갈 수 있도록 도와준다. 서비스의 신규 버전을 배포할 때 동시에 기존 버전과 공존시킬 수 있다. 만약 서비스의 어떤 이슈가 발견되면 게이트웨이에서 설정만 변경하면 빠르게 롤백할 수 있는 조치등이 가능하다.

 

- 이슈 및 고려사항

  • 게이트웨이 서비스는 단일 장애 지점이될 수 있다. 따라서 가용성 요구사항을 만족할 수 있도록 적절히 설계되는것을 보증해줘야 한다. 
  • 게이트웨이 서비스가 병목이 될 수 있다. 따라서 게이트웨이가 부하를 다룰 수 있는 적절한 성능을 보장해야 하며 쉽게 확장이 가능해야 한다.
  • 게이트웨이 라우팅은 7 레벨이므로 IP, port, header, URL 에 기반할 수 있다.
  • 게이트웨이 서비스는 서비스들 앞단에서 위치한 공개 엔드포인트이다. 외부 네트워크가 백엔드 서비스로 접근하는것을 막아야 한다.

- 사용하기 적절한 경우

  • 클라이언트가 여러 서비스를 사용해야 하는 경우
  • 단일 엔드포인트로 클라이언트 어플리케이션을 단순화 하고 싶은 경우
  • 외부 주소 엔드포인트를 내부 가상 엔드포인트로 요청을 라우팅할 필요가 있는 경우
  • 클라이언트가 지연 혹은 가용성의 이점을 위해 여러 리전에서 실행중인 서비스가 필요한 경우
  • 서비스가 2개 이상의 인스턴스로 운영되는 경우
  • 클라이언트가 한 시점에 서비스의 여러 버전으로 접근할 수 있는 배포 전략을 사용하는 경우

 

'Concepts > Cloud' 카테고리의 다른 글

Gateway Offloading pattern  (0) 2025.05.11
Sharding  (1) 2024.01.13
Fan-out, Fan-in  (0) 2023.11.12
Timeout  (1) 2023.11.11
Throttling  (0) 2023.11.04

댓글