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 |