API Rate Limiting이 필요한 이유와 이를 구현 하는 방법은 무엇인가요?

박상준·2024년 11월 8일
0

필요한 이유

  1. 서버 자원 보호
    • 디도스 공격으로부터 서버를 보호할 수 있음.
    • 과다한 호출에 대하여 일정 기간동안 몇천번이상 호출한 케이스는 차단
  2. 공정한 자원의 배분
    • 다수의 이용자가 동시에 사용해서 서비스 품질 저하 방지
  3. 비용
    • 인프라 비용 절감

구현 방법

Fixed Window

  • 일정한 시간 간격 → 1분 동안 요청의 횟수를 카운팅해서
    • 오바시 제한

Sliding Window

  • 고정 윈도우 방식보다 더 정교함
  • 최근의 요청을 기준으로 제한이 가능함.

토큰 버킷 방식

  • 클라이언트에게 토큰을 일정 속도로 발급.
  • 요청 시 토큰을 소모
  • 토큰이 없으면 요청이 제한됨.

누적 윈도우 방식

  • 요청을 버킷에 저장
  • 일정한 속도로 버킷에서 요청을 처리함.
  • 버킷이 가득 차면 추가 요청 거부

일반적 구현 방식

  • 보통 직접구현은 잘 안함
  • API GATEWAY 를 통해 서버를 거치기 전에 문지기를 둠.
  • 해당 문지기에서 별도 체킹.
    • 일반 NGINX, AWS API Gateway (클라우드) 에서 가능함
    • 엔진엑스는 오픈소스버전에서는 일반적인 기능만 제공함

예시

  • 구글 맵
  • 트위터 API 등
  • 사실 OPEN api 에서도 호출량 제한이 있으며 해당 제한방식도 아마 위 방식중에 하나를 따르고 있을 가능성이 높음.
profile
이전 블로그 : https://oth3410.tistory.com/
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 11월 8일

질문의도 :

안정성과 보안을 보장하기 위해 트래픽 관리 기법을 이해하고 있는지를 확인하고자 합니다. 특히, 시스템 과부하 방지, 악의적인 사용 차단, 공정한 리소스 분배 등을 목적으로 하는 Rate Limiting의 개념을 얼마나 잘 이해하는지를 파악하고자 합니다.

답글 달기