본문 바로가기
마이데이터/마이데이터 용어

API Gateway란

by 몰라닉네임 2023. 9. 11.

[용어 정의]

인증 (Authentication) : 해당 사용자가 본인이 맞는지를 확인하는 절차

인가 (Authorization) : 인증된 사용자가 요청한 자원에 접근 가능한지 확인하는 절차

 

라우팅: 라우팅은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송하는 기법이다.

 데이터가 전달되는 과정에서 여러 네트워크들을 통과해야하는 경우가 생길 수 있는데, 여러 네트워크들의 연결을 담당하고 있는 라우터 장비가 데이터의 목적지가 어디인지 확인하여 빠르고 정확한 길을 찾아 전달해주는 것이다.

 

로드밸런싱(=부하 분산)은 처리해야 할 업무나 요청을 중앙처리장치 또는 저장 장치와 같은 컴퓨터 자원에 작업을 분산하는 것을 의미합니다

 

 

API Gateway 란?

API 서버 앞단에서 모든 API 서버들의 End - Point를 단일화하여 묶어 준다.

 

 API Gateway는 클라이언트와 서비스 사이에서 클라이언트의 요청을 받고 설정에 따라 각 엔드포인트로 대신 요청을 보낸다. 응답을 받으면 다시 클라이언트에게 응답을 보내는 프록시 역할을 한다. 

 

 

(문제) 마이크로 서비스 아키텍쳐는 큰 서비스를 잘개 쪼개어 개발/운영하는 아키텍쳐이므로 하나의 큰 서비스는 많은 작은 서비스로 나누어지고, 만약 이를 클라이언트에서 서비스를 직접 호출하는 형태라면 아래와  같은 문제점 발생합니다.

각각의 서비스 마다 인증/인가 등 공통된 로직 구현 번거롭고
수많은 API 호출을 기록/관리 어려움
내부의 비즈니스 로직이 드러나게 되어 보안에 취약합니다.
 

API Gateway 주요 기능 

다음과 같은 API gateway의 요청절차 단순화, 라우팅 및 로드 밸런싱 기능으로 문제점을 해결할 수 있습니다.

요청 절차 단순화

  •  API Gateway는 여러 클라이언트의 요청을 단일 클라이언트의 요청으로 대체 가능하도록 하고
  • 따라서 클라이언트와 백엔드 간의 API 통신량을 줄여주어 대기시간을 줄이고 효율성 향상시킵니다.

라우팅 

  •  API Gateway는 클라이언트로 부터 접수된 메세지에 따라, API 호출을 적절한 서비스에 라우팅 할 수 있는 기능이 존재  

로드 밸런싱

  • (부하 분산) 서비스 인스턴스들에 대한 부하가 집중되지않도록 작업을 분산할 수 있는 로드밸런싱 기능을 활용할 수 있습니다. 
  • 기본적으로 API 여러개로 부하를 분산시키는 방법이 주 기능이다. 만약 API 서버가 장애가 발생했을 때 이를 감지하여 로드밸런싱 리스트에서 제외하고 복구되었을 때 다시 로드밸런싱 리스트에 넣는 기능이 있다. 
서비스 오케스트레이션
  • 오케스트레이션은 여러 개의 마이크로 서비스를 묶어 새로운 서비스를 만드는 개념으로 오케스트레이션 로직을 과도하게 넣는 것은, API Gateway의 부담을 늘리는 것으로, 성능 저하를 일으킬 수 있어, MSAAPI Gateway에 대한 높은 수준의 기술적 이해를 바탕으로 이루어져야합니다.

 

API Gateway 필요성

 

 대규모 API 를 호스팅할 때는 다양한 사항을 고려

  • API가 남용되거나 과도하게 사용되지 않도록 보호하기 위해 인증 서비스나 속도 제한을 사용할 수 있습니다.
  • API가 어떻게 사용되고 있는지를 알고 싶은 경우 분석 및 모니터링 툴을 추가할 수 있습니다.
  • 수익화 API가 있다면 빌링 시스템에 연결할 수 있습니다.
  • 단일 요청으로 서로 다른 수십 개의 애플리케이션에 대한 호출을 필요로 하는 경우 마이크로서비스 아키텍처를 채택할 수 있습니다.
  • 이렇게 시간이 지남에 따라 새로운 API 서비스를 추가하거나 사용 종료하게 되지만, 고객은 계속해서 모든 서비스를 동일한 장소에서 찾기를 원합니다.

 

https://www.redhat.com/ko/topics/api/what-does-an-api-gateway-do

'마이데이터 > 마이데이터 용어' 카테고리의 다른 글

Access Token & Refresh Token  (0) 2023.09.08
공동인증과 사설인증 차이  (0) 2023.09.07
JWT, JWS 정리  (1) 2023.09.06
OAuth2.0 마이데이터  (0) 2023.09.06
TLS & mTLS  (0) 2023.09.05