네트워크 시스템에서 처리율 제한 장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치다.
처리율 제한 장치의 예
- 사용자는 초당 2회 이상 새 글을 올릴 수 없다.
- 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다.
- 같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다.
처리율 제한 장치를 두면 좋은 점
- DOS 공격에 의한 자원 고갈을 방지 할 수 있다.
- 비용을 절감한다.
- 서버 과부하를 막는다.
1단계 - 문제 이해 및 설계 범위 확정
- 요구사항
- 설정된 처리율을 초과하는 요청은 정확하게 제한한다.
- 이 처리율 제한 장치는 HTTP 응답시간에 나쁜 영향을 주어서는 곤란하다.
- 가능한 한 적은 메모리를 써야 한다.
- 하나의 처리율 제한 장치를 여러 서버나 프로세스에서 공유할 수 있어야 한다.
- 요청이 제한되었을 때는 그 사실을 사용자에게 분명하게 보여주여야 한다.
- 제한 장치에 장애가 생기더라도 전체 시스템에 영향을 주어서는 안된다.
2단계 - 개략적 설계안 제시 및 동의 구하기
처리율 제한 장치는 어디에 둘 것인가?
- 프로그래밍 언어, 캐시 서비스 등 현재 사용하고 있는 기술 스택에 점검하라. 현재 사용하는 프로그래밍 언어가 서버 측 구현을 지원하기 충분할 정도로 효율이 높은지 확인하라.
- 사업 필요에 맞는 처리율 제한 알고리즘을 찾아라. 서버 측에서 모든 것을 구현하기로 했다면, 알고리즘은 자유롭게 선택할 수 있다. 하지만 제 3 사업자가 제공하는 게이트웨이를 사용하기로 했다면 선택지는 제한될 수도 있다.
- 설계가 마이크로서비스에 기반하고 있고, 사용자 인증이나 IP 허용목록 관리 등을 처리하기 위해 API 게이트웨이를 이미 설계에 포함시켰다면 처리율 제한 기능 또한 게이트웨이에 포함시켜야 할 수도 있다.
- 처리율 제한 서비스를 직접 만드는 데는 시간이 든다. 처리율 제한 장치를 구현하기에 충분한 인력이 없다면 상용 API 게이트웨이를 쓰는 것이 바람직한 방법일 것이다.
처리율 제한 알고리즘