세션/MSA

1. API Gateway

feel2 2024. 3. 29. 20:40
반응형

API Gateway란?

 

API Gateway(게이트웨이)는 API 서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고, API에 대한 인증과 인가 기능에서 메시지에 따라서 여러 서버로 라우팅하는 고급기능까지 많은 기능을 담당할 수 있습니다. - MSA school

 

여기서 key point 는

  • 엔드포인트를 단일화
  • 인증과 인가 기능
  • 라우팅

로 볼 수 있다.

 

출처: Gatner에서 발표한 MSA components

다양한 사용자(Mobile, Brower, Other Service..)들이 External Gateway를 통해서 service에 접근하는 것을 볼 수 있다.

 

 

보통 MSA에서 API Gateway를 얘기하면 External Gateway를 말한다.

Why Use an API Gateway?

 

다음과 같은 이유로 API Gateway를 사용한다.

  • 단일 API 도메인을 노출하여 유지 관리할 수 있다.
  • 모든 클라이언트에 하나의 진입점을 제공하여, 사용자 요청에 따라 다른 버전의 API로 라우팅이 가능하다.
  • 단일 클라이언트 요청에 대해 여러 마이크로 서비스를 호출하고 결과를 한번에 모아 응답 가능

 

 

출처:  https://www.nginx.com/learn/api-gateway/

단일 클라이언트 요청에 여러 마이크로 서비스를 호출하여 결과를 집계하는것을 볼 수 있다.

 

Basic Capabilities of an API Gateway

 

API Gateway는 다음과 같은 기본 기능을 가지고 있다.

  • API 호출을 하는 요청자 인증(Authentication)
  • 요청자에게 요청을 할 수 있는 권한이 있는지 확인(Authorization)
  • 적절한 백엔드로 요청 라우팅(routing)
  • 시스템 과부하를 방지하기 위해 속도 제한 적용(rate limits to prevnet overloading)
  • DDoS 공격 완화를 위해 속도 제한 적용(rate limits to migrate DDoS attack)
  • 성능 향상을 위해 SSL/TLS 트래픽 완화(Offloading SSL/TLS traffic)
  • 오류 및 예외 처리(Handling errors and exceptions)

API Gateway and MSA

마이크로서비스 기반 애플리케이션의 경우 API 게이트웨이는 시스템에 대한 단일 진입점 역할을 한다.

마이크로서비스 앞에 위치하여, 클라이언트로부터 앱의 복잡성을 분리하여 클라이언트 구현과 마이크로서비스 앱을 모두 단순화(simplify)한다.

마이크로서비스 아키텍처에서 API 게이트웨이는 라우팅, 구성 및 정책 시행을 담당한다.

  • 일부 요청은 적절한 백엔드 서비스로 라우팅하여 처리하고, 다른 요청은 여러 백엔드 서비스를 호출하고 결과를 집계하여 처리한다.
  • 인증, 권한 부여, 모니터링, 로드 밸런싱, 응답 처리와 같은 마이크로서비스를 위한 다른 기능을 제공한다.
    • 비기능적 요구 사항 구현을 인프라 계층으로 오프로드하고, 개발자가 핵심 비즈니스 로직에 집중하여 앱 개발 속도를 높일 수 있다.

API Gateway for Kubernetes

시스템 이카텍처와 앱 요구 사항에 따라 크게 3가지 배포 형태를 가지고 있다.

  1. Kubernetes 클러스터 앞에 로드 밸런서(multi-cluster level)로 배포
    • External Gateway라고 생각하면 됨
  2. 클러스터의 경계에 Ingress Controller(cluster-level)로 배포
  3. 서비스 메시(service-level)로 배포

 

출처:https://www.nginx.com/learn/api-gateway/

2, 3번의 경우 Service Mesh에서 다시 한번 설명하겠다.

 

API Gateway vs Service Mesh

 

공통

  • Resilience: 두 가지 기술 중 하나 또는 두 가지를 모두 사용하면 클라우드 네이티브 애플리케이션에서 발생하는 어려움이나 실패로부터 애플리케이션을 신속하게 복구할 수 있다.
  • Traffic management: 분산 애플리케이션으로서 트레픽 관리가 가능
  • Enhanced Security Features: 강력한 보안 기능을 제공
  • Observability and Monitoring: 두 구성 요소 모두 모니터링 및 로깅 기능을 제공함.

 

차이점

  API Gateway  Service Mesh
목적 내부/외부 및 심지어 DB 엑세스 위한 API 호출까지도 라우팅 할 수 있도록 설계 내부 엔터프라이즈 시스템 및 마이크로 서비스 내의 이식성을 개선하도록 설계
동작 범위 API에 대한 외부 클라이언트 액세스를 관리하도록 설계 주로 동일한 애플리케이션 내의 마이크로서비스 간 통신에 중점
책임 외부 클라이언트에 대한 요청 라우팅, 인증, 응답 변환과 같은 더 높은 수준의 문제를 처리 서비스 검색, 서비스 간 인증, 트래픽 암호화와 같은 낮은 수준의 통신 문제를 처리
복잡성 외부 API 에 대한 접근만 제어하면 되서 단순하지만, 제대로 설계되지 않으면 단일 실패 지점이 발생함 각 마이크로서비스에 대한 추가 구성 요소 사이드카 형태로 붙어 복잡함
사용 사례 외부 클라이언트가 서비스에 액세스할 수 있도록 제어되고 안전한 진입점을 제공하는 데 적합 대규모 분산 시스템에서 내부 마이크로서비스 통신의 복잡성을 관리하는 데 매우 적합
기술 성숙도 성숙한 기술

신 기술

 

 

 

API Gateway 종류

참조

반응형

'세션 > MSA' 카테고리의 다른 글

5. Telemetry  (0) 2024.04.16
4. Backing Service  (0) 2024.04.02
2. Service Mesh  (0) 2024.03.29