TIL/74/20230622 정리중
Ratelimiter란 무엇인가?
Ratelimiter는 네트워크 트래픽 제어와 관련된 기술로서, 특정 시스템에서 다수의 요청을 처리해야 할 때 발생할 수 있는 문제를 방지하는 데 사용됩니다. 이 기술은 일정 시간 내에 특정 서버나 API에 전송되는 요청 수를 제한함으로써 서버의 과부하를 예방하고, 전반적인 시스템의 안정성을 유지하는 데 도움을 줍니다.
Ratelimiter의 필요성
1. 서버 과부하 방지: 라 트롯 틀링은 동시에 엔이 많은 클라 사용자로부터 수많은 요청을 받게 될 수 있는 소위 ' 대량 사용자 환경'를 운영에 도움야주세요. 서버 요청이 제한되어지면 DDOS 공격과 같은 과부하 현상은 발생하지 않는다.
2. 리소스 관리: 초당, 분당, 시간당 또는 일당 API 요청 수 제어함으로써 서버 리소스를 효율적으로 사용할 수 있다는 것을 확인하게 됩니다.
3. 서비스 품질 제어: 프론트에서 많은 데이터를 전송하여 부하를 일으키는 것을 제한하고, 제공되는 콘텐츠의 품질을 관리할 수 있습니다.
Ratelimiter 구현 방법
Ratelimiter를 구현하는 방법으로는 몇 가지가 있습니다.
- 서버 기반 제한 (Server-side Throttling): 이 접근법은 서버에서 요청을 추적하고 제한하여 클라이언트가 서버에요청을 보내면 서버는 그 요청을 처리하기 전에 일정 기준(예: 초당 요청 수)을 이용하여 요청이 허용되어야 할지 여부를 결정합니다.
- 클라이언트 기반 제한 (Client-side Throttling): 클라이언트 자체가 일정 시간 동안 얼마나 많은 요청을 보낼지를 제어합니다. 이 방식은 서버의 부담을 최소화하기 위해 사용되며, 보통 동적 시간 제한이나 확률 기반 제한 기법을 통해 구현됩니다.
- 미들웨어 기반 제한 (Middleware-based Throttling): 여기에는 이미 설치된 것과 같이 채택된 미들웨어 소프트웨어를 이용하는 것입니다. 변경 설정을 통해 원하는 동작을 설정하면 원하는 레벨의 제한을 얻을 수 있다.
마무리
Ratelimiter는 서버와 클라이언트 간의 요청을 관리하고 제어하는 기술입니다. 일반적으로 서버 과부하를 방지하고 리소스 사용을 최적화하는 데 사용됩니다. 구현 방법은 서버 기반, 클라이언트 기반 및 미들웨어 기반 방식 중에서 선택할 수 있습니다. 요구되는 제한 수준과 확장성, 그리고 원하는 사용경험을 고려하여 적절한 선택을 하십시오.