카테고리 없음

[MSA] API Gateway

2023. 5. 13. 00:46
목차
  1. API Gateway란?
  2. API Gateway의 동작방식
  3. API Gateway의 역할
  4. API Gateway의 고려사항
728x90

API Gateway란?

MSA는 여러 개의 프로젝트를 분리한다.

그럼 모든 요청에 대한 동일한 처리를 해야 할 때는 어떻게 해야 할까?

  • API의 모든 요청에 대한 로그 파일을 만들고 싶다.
  • 모든 요청에 대해 인증 및 권한을 부여하고 싶다.
  • 들어온 요청을 적절한 서버에 전달하고 싶다.

위와 같은 문제를 해결하기 위해 등장하는 것이 바로 API Gateway이다.


API Gateway의 동작방식

 

해당 구조는 Spring Cloud Gateway의 플로우인데, 이는 API Gateway의 한 종류이다.

 

API Gateway는 하나의 모든 클라이언트의 요청이 하나의 서버로 들어와 해당 서버에서 요청이 정제되거나 조작되어 각자 목적에 맞는 서비스를 찾아가도록 도와준다.

또한 각 서버에서 적절한 로직을 수행한 뒤 발생하는 응답 데이터를 모아 사용자에게 분배해 주는 역할을 한다.


API Gateway의 역할

API Gateway는 대표적으로 다음과 같은 역할을 한다.

  • 프록시의 역할과 로드밸런싱
  • 인증 서버로서의 기능
  • 로깅 서버로서의 기능

동작 과정에서 클라이언트의 모든 요청이 하나의 서버로 전송되므로 해당 서버에서는 인증을 수행하거나 로깅을 수행한다.

또한 해당 구조는 리버스 프록시와 닮아있고 실제로 그 역할을 수행한다. 따라서 로드 밸런싱과 라우팅이 가능하다.


API Gateway의 고려사항

API Gateway는 많은 마이크로서비스들의 요청이 하나의 서버를 향하므로 다음과 같은 고려사항이 존재한다.

  • 병목현상
  • 네트워크 Latency

병목현상

위의 구조를 본다면 만약 서비스가 100개 존재한다고 해보자.

그럼 API Gateway는 가장 앞단에서 100개의 서비스가 요청될 수 있는 트래픽을 감당해야 한다.

그럼 자연스럽게 병목 현상이 발생할 수 있으면서, 전체적인 서비스의 통신에 문제가 될 수 있다.

 

그래서 API Gateway는 적절한 Sale-out을 수행하지 않으면 많은 위험이 발생한다.


네트워크 Latency

당연하게 API Gateway는 네트워크를 한 번 더 타게 되어 네트워크 지연 현상이 발생할 수 있다.

이런 문제점들은 적절한 Telemetry 도구를 통해서 확인하고 이 해결 방법에 대해서 많은 고민을 해야 한다.


참고 자료 : 

https://cloudificationzone.com/2021/12/04/spring-api-gateway-implementation-with-sample-apps/

 

Spring API Gateway Implementation with sample apps

Spring Cloud Gateway Overview The Spring Cloud Gateway (SCG) is an API gateway proxy. It’s open-source based on the Java language. It has tons of features and can be embedded with code and ca…

cloudificationzone.com

https://wonit.tistory.com/489?category=854727 

 

[마이크로서비스] MSA의 핵심 구성 요소 - API Gateway 패턴

마이크로서비스를 구성하기 위해서는 기술적으로 많은 어려움이 수반된다. 아래의 사진만 보더라도 하나의 서비스를 구축하기 위해서 알야아 할 기술들이 굉장히 많다. 오늘은 여기에 나온 기

wonit.tistory.com

 

  1. API Gateway란?
  2. API Gateway의 동작방식
  3. API Gateway의 역할
  4. API Gateway의 고려사항
밝은별 개발자
밝은별 개발자
호기심 가득한 밤을 하나씩 밝히는 밝은별입니다.
밝은별 개발자
밝은별 개발 블로그
밝은별 개발자
전체
오늘
어제
  • 전체 글 (66)
    • 자소서 (0)
    • 백엔드 (56)
      • Java (15)
      • 네트워크 (5)
      • JPA (11)
      • Spring (5)
      • 운영체제 (8)
      • MSA (4)
      • etc (4)
      • 데이터베이스 (2)
      • 분산추적 (2)
    • 프로젝트 (3)
      • Petogram (2)
    • 책 (6)
      • 오브젝트 - 조영호 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네트워크
  • 조영호
  • pojo
  • ORM
  • 영속성컨텍스트
  • 캐시
  • OS
  • 데이터베이스
  • Java
  • EUREKA
  • MSA
  • Petogram
  • 분산추적
  • Service discovery
  • db
  • 책
  • JPA
  • 이펙티브자바
  • Spring
  • 객체지향
  • 메모리
  • 운영체제
  • 상속
  • 디자인 패턴
  • HTTP
  • java8
  • 오브젝트
  • Redis
  • 스트림
  • 데이터독

최근 댓글

최근 글

hELLO · Designed By 정상우.
밝은별 개발자
[MSA] API Gateway
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.