ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MSA_API Gateway_Rage Limit
    TT 2024. 6. 1. 17:58


    API Gateway에서 Rate Limiting은 클라이언트가 일정 시간 내에 API에 요청할 수 있는 최대 요청 수를 제한하는 메커니즘입니다. 이는 서비스 오버로드를 방지하고, 서비스 품질을 보장하며, 악의적인 사용으로부터 보호하는 데 중요한 역할을 합니다. 다양한 Rate Limiting 기법이 존재하며, 그 중 대표적인 네 가지를 설명하겠습니다: Leaky Bucket, Fixed Window, Sliding Log, Sliding Window.

    1. Leaky Bucket

    개념:

    • Leaky Bucket 알고리즘은 비유적으로 물이 새는 양동이를 기반으로 합니다. 요청이 양동이에 물을 채우는 것과 같고, 일정한 속도로 물이 새어 나갑니다. 양동이가 가득 차면 초과 요청은 버려집니다.

    작동 방식:

    • 요청이 들어오면 양동이에 추가됩니다.
    • 양동이는 일정한 속도로 "물"을 배출합니다 (즉, 요청을 처리합니다).
    • 양동이가 가득 차 있으면 새로운 요청은 버려집니다 (즉, 요청이 제한됩니다).

    장점:

    • 요청 처리의 안정적인 속도를 유지할 수 있습니다.
    • 버스트 트래픽을 평탄화하여 서비스 안정성을 높입니다.

    단점:

    • 고정된 처리 속도로 인해 갑작스러운 트래픽 증가에 대응하기 어려울 수 있습니다.

    2. Fixed Window

    개념:

    • Fixed Window 알고리즘은 시간 창을 고정하고, 각 시간 창 내에서 허용된 요청 수를 제한합니다.

    작동 방식:

    • 예를 들어, 1분 동안 최대 1000개의 요청을 허용하는 경우, 1분 단위로 요청 수를 카운트합니다.
    • 한 시간 창 내에 요청 수가 허용된 한도를 넘으면 그 시간 창이 끝날 때까지 추가 요청이 거부됩니다.

    장점:

    • 구현이 간단하고 이해하기 쉽습니다.

    단점:

    • 시간 창의 경계에서 트래픽이 몰리는 문제(경계 효과)가 발생할 수 있습니다. 예를 들어, 59초와 60초에 각각 최대 요청 수가 발생하면 실제로는 매우 짧은 시간에 많은 요청이 처리됩니다.

    3. Sliding Log

    개념:

    • Sliding Log 알고리즘은 각 요청의 타임스탬프를 로그에 저장하고, 최근 요청의 타임스탬프를 기준으로 제한을 적용합니다.

    작동 방식:

    • 각 요청의 타임스탬프를 기록합니다.
    • 주기적으로 로그를 검토하여, 현재 시각에서 일정 시간 이전의 요청 수를 계산합니다.
    • 요청 수가 허용된 한도를 초과하지 않으면 요청을 허용하고, 초과하면 거부합니다.

    장점:

    • 정확한 요청 수 제한이 가능합니다.
    • 시간 창의 경계 효과가 없습니다.

    단점:

    • 타임스탬프를 모두 저장하고 계산해야 하므로 메모리 사용이 많고, 성능이 저하될 수 있습니다.

    4. Sliding Window

    개념:

    • Sliding Window 알고리즘은 Fixed Window의 단점을 보완하기 위해 창을 슬라이딩하며 이동시키는 방식입니다.

    작동 방식:

    • 예를 들어, 1분 동안 최대 1000개의 요청을 허용하는 경우, 이 1분의 시간 창을 여러 개의 작은 부분으로 나눕니다 (예: 초 단위).
    • 각 작은 부분의 요청 수를 합산하여 현재 시각으로부터의 요청 수를 계산합니다.
    • 합산된 요청 수가 허용된 한도를 초과하지 않으면 요청을 허용하고, 초과하면 거부합니다.

    장점:

    • 시간 창의 경계 효과를 줄일 수 있습니다.
    • 보다 균형 잡힌 요청 제한이 가능합니다.

    단점:

    • 구현이 다소 복잡할 수 있습니다.

    요약

    • Leaky Bucket: 일정 속도로 요청을 처리, 버스트 트래픽 평탄화.
    • Fixed Window: 고정된 시간 창 내에서 요청 제한, 경계 효과 존재.
    • Sliding Log: 각 요청의 타임스탬프를 기반으로 제한, 정확하지만 메모리 사용 높음.
    • Sliding Window: 슬라이딩 방식으로 경계 효과를 줄임, 구현이 복잡할 수 있음.

    이러한 다양한 Rate Limiting 알고리즘은 API Gateway의 성능과 안정성을 높이고, 과도한 트래픽으로 인한 서비스 중단을 방지하는 데 중요한 역할을 합니다. 각 알고리즘은 특정 시나리오에 적합하므로, 시스템의 요구 사항에 맞는 알고리즘을 선택하는 것이 중요합니다.

    'TT' 카테고리의 다른 글

    MSA Outer Architecture 구성요소  (0) 2024.06.06
    미들웨어 기초  (0) 2024.06.05
    DISK 파티션 구조_GPT/MBR  (0) 2024.06.01
    Linux I/O 스케줄러 종류/특징  (0) 2024.06.01
    MSA 구성 요소  (0) 2024.05.31

    댓글

Designed by Tistory.