반응형
이 내용은 "가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권"의 내용을 참고하여 읽고 정리한 내용입니다.
1. 처리율 제한 장치란?
처리율 제한 장치는 클라이언트나 서비스가 보내는 트래픽의 양을 제어하여, 특정 기간 내에 전송되는 요청 횟수를 제한하는 시스템입니다.
예시
- 사용자는 초당 2회 이상 새 글을 올릴 수 없습니다.
- 동일한 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없습니다.
- 동일한 디바이스로는 주당 5회 이상 리워드를 요청할 수 없습니다.
이러한 제한을 통해 시스템의 안정성과 보안을 유지할 수 있습니다.
2. 처리율 제한 장치의 필요성
처리율 제한 장치를 도입하면 다음과 같은 이점을 얻을 수 있습니다
- 서비스 거부 공격(DoS) 방지: 과도한 요청으로 인한 자원 고갈을 막아 시스템을 보호합니다.
- 비용 절감: 불필요한 추가 요청을 제한하여 서버 비용을 절감하고, 우선순위가 높은 API에 더 많은 자원을 할당할 수 있습니다.
- 서버 과부하 방지: 봇이나 비정상적인 사용자 패턴으로 인한 트래픽을 걸러내어 서버의 안정성을 유지합니다.
3. 처리율 제한 알고리즘
처리율 제한을 구현하는 데에는 여러 알고리즘이 사용됩니다.
주요 알고리즘은 다음과 같습니다.
- 토큰 버킷(Token Bucket): 일정 시간마다 토큰을 생성하고, 각 요청은 토큰을 소모합니다. 토큰이 없으면 요청이 거부됩니다.
- 누출 버킷(Leaky Bucket): 고정된 속도로 요청을 처리하며, 버킷이 가득 차면 초과된 요청은 버려집니다.
- 고정 윈도 카운터(Fixed Window Counter): 일정 시간 단위로 요청 횟수를 제한하며, 해당 시간 내에 임계치를 넘으면 추가 요청이 거부됩니다.
- 이동 윈도 로그(Sliding Window Log): 각 요청의 타임스탬프를 저장하고, 최근 일정 시간 내의 요청 수를 계산하여 제한합니다.
- 이동 윈도 카운터(Sliding Window Counter): 고정 윈도 카운터의 변형으로, 현재 시간과 이전 시간의 요청 수를 가중 평균하여 제한합니다.
각 알고리즘은 시스템의 요구사항에 따라 적절히 선택되어야 합니다.
4. 처리율 제한 장치의 구현
처리율 제한 장치는 일반적으로 서버 측이나 클라이언트와 서버 사이의 미들웨어에 위치합니다. 특히, API 게이트웨이에 구현되는 경우가 많습니다. 주요 구성 요소는 다음과 같습니다:
- 카운터 저장소: 각 클라이언트의 요청 횟수를 추적하기 위한 저장소로, Redis와 같은 메모리 기반 데이터베이스가 사용됩니다.
- 처리율 제한 미들웨어: 클라이언트의 요청을 가로채어 카운터를 확인하고, 임계치를 초과하면 요청을 거부합니다.
- 설정 파일: 처리율 제한 규칙을 정의하며, 클라이언트의 동작 유형, 시간 단위당 허용 횟수 등을 설정합니다.
5. 분산 환경에서의 고려사항
분산 시스템에서 처리율 제한 장치를 구현할 때는 다음과 같은 문제를 고려해야 합니다.
- 경쟁 조건(Race Condition): 여러 스레드가 동시에 카운터에 접근할 때 발생하는 문제로, 루아 스크립트나 정렬 집합을 사용하여 해결할 수 있습니다.
- 동기화 이슈(Synchronization Issue): 여러 대의 처리율 제한 장치 서버 간의 데이터 동기화 문제로, 중앙 집중형 데이터 저장소를 사용하여 해결할 수 있습니다.
6. 성능 최적화 및 모니터링
성능을 최적화하기 위해서는
- 에지 서버 활용: 사용자와 가까운 에지 서버를 통해 지연 시간을 줄입니다.
- 일관성 모델 선택: 최종 일관성 모델을 사용하여 동기화 성능을 향상시킵니다.
또한, 모니터링을 통해 처리율 제한 알고리즘과 규칙이 효과적으로 작동하는지 확인해야 합니다.
결론
처리율 제한 장치는 시스템의 안정성과 보안을 유지하는 데 필수적인 요소입니다. 적절한 알고리즘 선택과 구현을 통해 서비스의 품질을 향상시킬 수 있습니다. 설계 시에는 시스템의 요구사항과 환경을 고려하여 최적의 방안을 선택해야 합니다.
반응형
'Study > 대규모 시스템 설계 기초' 카테고리의 다른 글
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권] 3장 - 시스템 설계 면접 공략법 (0) | 2025.04.06 |
---|---|
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권] 2장 - 개략적인 규모 측정 (0) | 2025.04.06 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권] 1장 - 사용자 수에 따른 규모 확장성 (0) | 2025.03.27 |