Architecture Pattern

Rate limiting 패턴 이란 ?

Ed2024 2024. 11. 18. 00:17

Rate Limiting은 시스템의 안정성과 보안을 보장하기 위해 단위 시간당 요청 수를 제한하는 설계 패턴입니다. 이 패턴은 클라이언트가 서버로 과도한 요청을 보내는 것을 방지하고, 서버 자원의 사용을 효율적으로 관리하며, 서비스 품질을 유지하는 데 중요한 역할을 합니다.

 

1.핵심 개념

1) 요청 수 제한 : 클라이언트가 보낼 수 있는 요청 수를 정해진 단위 시간(, , 시간, 일 등) 안에서 제한합니다.

  • 예: "1분에 최대 100개의 요청만 허용"

2)제한 조건

  • IP 주소 기반 제한 : 특정 IP에서 오는 요청만 제한
  • 사용자별 제한 : 사용자의 인증 정보(Token, API Key 등)에 기반한 요청 제한
  • 리소스별 제한 : API 엔드포인트별로 요청 제한

3)정책 유형

  • Fixed Window : 정해진 시간 간격(예: 1분, 1시간) 동안 요청을 제한
  • Sliding Window : 고정 창 대신 시간의 흐름에 따라 요청을 평가
  • Token Bucket : 일정량의 "토큰"을 소모하며 요청 허용, 새로운 요청은 일정 속도로 토큰을 재충전
  • Leaky Bucket : 일정 속도로 "물(요청)"을 흘려보내며 초과 요청은 무시

 

2.Rate Limiting 패턴의 역사와 보급

1)기원과 초기 사용

Rate Limiting 패턴의 개념은 인터넷과 네트워크 통신이 발전하면서 등장했습니다. 정확한 최초 사용 시점이나 창안자는 명확하지 않지만, 이 패턴은 인터넷 초기 단계부터 네트워크 자원을 보호하기 위해 자연스럽게 개발되었습니다.

 

2) 초기 네트워크 시대 (1980~1990년대)

  •    TCP/IP 프로토콜의 도입과 함께 네트워크 트래픽 제어에 대한 필요성이 대두되었습니다. 
  •    “Token Bucket”과 같은 알고리즘이 대규모 네트워크에서 대역폭을 관리하기 위해 처음 사용되기 시작했습니다.

 

3) API 경제와 웹 서비스의 부상 (2000년대 초)

  •    API 기반 서비스와 클라우드 컴퓨팅의 등장으로 Rate Limiting은 더욱 중요해졌습니다. 
  •    특히 “Twitter”, “Facebook”, “Google”과 같은 대형 플랫폼은 자원을 보호하고 API 남용을 방지하기 위해 Rate Limiting을 도입했습니다. 
  •    사용 사례 : Twitter는 2008년부터 API 호출 제한 정책을 명문화하여 적용했습니다.

 

3.널리 알려지게 된 계기

Rate Limiting이 널리 알려지고 표준화된 이유는 다음과 같습니다:

1) DDoS 공격과 보안 문제 증가 (2000년대 초중반)

  •    분산 서비스 거부(DDoS) 공격의 빈도가 증가하면서 Rate Limiting이 보안 대책으로 주목받았습니다.
  •    사용 사례 : 방화벽과 API Gateway에서 Rate Limiting을 구현하여 트래픽을 제어함으로써 공격을 완화.

2) API 사용량 증가 (2010년대) 

  • 모바일 애플리케이션과 클라이언트-서버 아키텍처가 대중화되면서 Rate Limiting이 표준적인 API 관리 기법으로 자리 잡았습니다. 
  • 주요 API 제공 업체들은 Rate Limiting 정책을 공식적으로 도입하며 문서화

        - Twitter: "15분에 최대 300 API 호출" 정책 발표.

        - Google Maps API: "1초당 최대 10개 요청" 제한.

 

3) 오픈소스 도구 및 라이브러리의 확산

  •  Nginx, Envoy, Kong과 같은 API Gateway 및 다양한 Rate Limiting 라이브러리의 등장으로 구현이 쉬워졌습니다. 
  •  오픈소스 커뮤니티에서 Rate Limiting 알고리즘(예: “Token Bucket”, “Leaky Bucket”)이 널리 사용되며 인기를 얻음.

4. 최근 활용 동향 : 현재 Rate Limiting은 다음과 같은 환경에서 표준화된 패턴으로 자리 잡았습니다

1) 클라우드 서비스

  •  AWS, Microsoft Azure, Google Cloud와 같은 클라우드 서비스 제공 업체들이 기본적으로 Rate Limiting을 포함한 API 관리 도구를 제공. 
  •  SaaS 플랫폼에서는 트래픽을 관리하고 요금제를 구분하기 위한 핵심 기술로 사용.

2) 애플리케이션 보안

  •  웹 애플리케이션 방화벽(WAF) 및 DDoS 방어 솔루션에서 필수 요소로 통합.

3) 데이터 중심 시스템

  •  데이터베이스 및 데이터 처리 서비스에서 쿼리 수를 제한하여 과도한 리소스 소비를 방지.

5.장점

  • 서버 안정성 보장 : 과도한 트래픽이 서버를 과부하 상태로 만드는 것을 방지합니다.
  • 서비스 품질 유지 : 다른 사용자에게 공정한 리소스 사용 기회를 제공합니다.
  • 보안 강화 : DDoS 공격 및 악성 클라이언트로 인한 부하를 줄입니다.

 

6.Rate Limiting pattern 확산의 주요 공헌자

  • Vinton Cerf와 Bob Kahn : TCP/IP의 설계자로, 초기 네트워크 트래픽 제어를 위한 알고리즘에 영향을 줌. 
  • API 플랫폼 기업 (Twitter, Google, Facebook 등) :   Rate Limiting을 대규모로 사용하며 관련 기술 및 정책을 정립. 

 

7.결론

Rate Limiting은 서버를 보호하면서 클라이언트의 과도한 요청을 제어하는 데 필수적이며, 다양한 시스템에서 기본적으로 사용되는 중요한 패턴입니다.

'Architecture Pattern' 카테고리의 다른 글

Retry 패턴 이란 ?  (0) 2024.11.19
Proxy 패턴 이란 ?  (1) 2024.11.17
Aggregator (집계자) 패턴 이란 ?  (2) 2024.11.16
BFF (Backend for Frontend) 패턴 이란 ?  (3) 2024.11.15
Sidecar 패턴 이란 ?  (1) 2024.11.14