본문 바로가기
Web

API 요청 통제 기술

by ma_ro 2023. 8. 24.

API Gateway

  • API Client와 Server 사이 구간에 위치하여 다양한 목적으로 사용되는 역할을 한다.
  • API Gateway 도입 이점
    • 인증 및 권한 부여
    • 서비스 검색 통합
    • 응답 캐싱
    • 정책, 회로 차단기 및 QoS 다시 시도
    • 속도 제한
    • 부하 분산
    • 로깅, 추적, 상관 관계
    • 헤더, 쿼리 문자열 및 청구 변환
    • IP 허용 목록에 추가

 

API Throttling

API 요청에 속도와 횟수를 제한하는 것을 말한다.

  • DoS(Denial of Service)와 같은 공격에 방어하기 위해서 필요하다.
  • Scale Out을 통해 서버 자원을 확장하는 비용이 API 제공으로 얻는 금액보다 클 경우, API Throttling 도입을 통해 SLA(Service Level Agreement)에서 협의 대상으로 삼을수 있도록 할 수 있다.

API Throttling 알고리즘

Bucket과 Window를 컨셉으로 한 알고리즘이 사용된다.

  • Leaky Bucket — https://en.wikipedia.org/wiki/Leaky_bucket
    • 일정 한도만 처리하고 한계값을 넘는 유입은 버린다.
    • 고정된 API 요청 최대량(T)에 Http request의 한계값(τ)을 정한다. 그리고 지정된 속도에 맞춰서 일정하게 HTTP Request를 처리 및 각 서비스로 포워딩한다. 그리고 한계값을 초과하면 요청은 HTTP 429 Response를 반환한다.
  • Token Bucket — https://en.wikipedia.org/wiki/Token_bucket
    • 장점
      • 짧은 시간에 집중되는 트래픽도 토큰만 있으면 처리가 가능하다.
      • Leaky Bucket은 기다려야 했지만, Token Bucket은 기다리지 않는다.
      • Spring Cloud Gateway와 같이 Reactive 방식의 Async, Non-Block 으로 구현이 되어있다면 더욱 빠른 대응이 가능 할 것이다. 특히 Redis를 사용하고 있어서 Scale out도 용이 할 것 같다.
    • 가용가능한최대 범위의 토큰수용한계(T)에 대비하여 토큰최대발행량(τ)을 정한다. 그리고 일정 주기로 API Token을 채운다. 사용할 토큰이 없는 API Request에 대해서 HTTP 429 Response를 반환한다.
  • Fixed Window, Sliding Window- https://konghq.com/blog/how-to-design-a-scalable-rate-limiting-algorithm/

 

API Rate Limiting

특정 기간 내에 API에 수행할 수 있는 요청 수를 제한하는 방법이다. 대량 사용 상업 고객(bulk-use commercial customers)이 서비스에 영향을 주는 것을 방지하고, DoS 공격을 방어한다. 일반적으로 하이브리드 아키텍처의 백엔드 계층에 있는 API에 적용된다.

API Throttling vs API Rate Limiting

공통점

  • 지정된 기간 당 호출 수를 제어하는 데에 사용된다.
  • Java, Python 과 같은 언어를 사용하여 서버 측에서 직접 구현할 수 있다.

차이점

  • API Throttling은 API가 처리할 수 있는 트래픽의 양을 제어하는 데에 사용된다. 이는 API의 백엔드가 네트워크 또는 하드웨어(e.g., databases or servers)에 의해 제한되는 상황에서 일반적으로 사용된다.
  • API Rate Limiting은 특정 클라이언트가 시스템 리소스를 독점하지 않도록 하는 메커니즘이다. 이는 사용자가 일정 기간 내에 API에 액세스할 수 있는 횟수를 제한한다.
  • Rate Limiting은 트래픽을 훨씬 세밀하게 제어할 수 있는 반면, Throttling은 일반적인 솔루선이다. 전체 사용량에 대해서만 제한하려는 경우 Throttling이면 충분히다.
  • Rate Limiting은 초당 트래픽을 추적하기 위해 더 많은 처리가 필요하기 때문에 성능에 더 많은 영향을 줄 수 있다.

 

초보개발자 API Gateway Throttling 설계 및 구현

API Rate Limiting vs. API Throttling: How Are They Different? | Nordic APIs |

What is API Throttling?

'Web' 카테고리의 다른 글

BEM  (0) 2020.03.02
CSS - transition, ease  (0) 2020.01.29
Front-end Framework 사이트  (0) 2020.01.23
HTML, CSS, JavaScript  (0) 2020.01.23

댓글