네트워크 시스템에서 처리율 제한 장치란?
클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다. 특정 기간 내에 너무 많은 요청이 들어올 경우 서비스에 장애가 발생할 수 있다. 이를 방지하기 위해 처리율 제한 장치를 두어 미리 정의된 임계치(threshold)를 넘어서면 추가로 도달한 요청에 대해서 block한다. 임계치는 서비스마다 다르게 설정될 수 있으며 몇 가지 사례를 살펴보자.
- 사용자는 초당 한 개의 글만 작성이 가능하다.
- 같은 IP 주소로는 하루에 3개 이상의 계정을 생성할 수 없으며, 로그인 시도는 1초에 1회 가능하다.
처리율 제한 장치의 목적
- DoS 공격에 의한 자원 고갈 방지 : DoS 공격은 엄청난 양의 불필요한 요청을 지속적으로 서버에 보내 트래픽에 과부하를 주어 서비스의 장애를 일으키는 공격 방식이다. 짧은 시간동안 많은 요청을 처리율 제한 장치를 통해 걸러내어 이를 방지할 수 있다.
- 비용 절감 : 결국, 트래픽에 제한을 두는 방식이기 때문에 서버의 자원을 보다 효율적으로 사용하여 서버비용 절감에 기여한다.
- 서버 과부하 방지 : 봇에서 오는 트래픽 혹은 사용자의 잘못된 이용 패턴으로 인한 과부하를 방지한다.
처리율 제한 장치의 위치
클라이언트측
- 클라이언트 요청은 사용자에 의해 쉽게 위변조가 가능하기 때문에 모든 클라잉너트의 구현을 통제하는 것은 어려울 수 있다. 특히, 악의적인 공격에 취약할 것이다(DoS 공격).
서버측
- API 서버 내 처리율 제한장치를 두기
- 처리율 제한 미들웨어
- 클라이언트에서 오는 요청이 서버에 도달하기 전 처리한다.
- 클라우드 마이크로서비스의 경우, 처리율 제한 장치는 보통 API 게이트웨이에 구현된다. (클라우드 서비스의 API 게이트웨이에서 기본적인 처리율 제한 장치를 제공한다.)
서버 내에 두거나 미들웨어에 두거나 결정은 기술 스택, 서비스 구조, 목표 등에 따라 다를 수 있다.
처리율 제한 알고리즘
토큰 버킷 알고리즘