Replies: 3 comments
|
질문 1. 각 계정 유형별로 설정된 요청 제한을 넘어서는 상황에서는 어떤 방식으로 제한이 이루어져야 하나요? 예를 들어, 요청을 거부하거나 지연시키는 방직 중 어떤 방식을 선호해야 할까요?
|
|
질문 2. 트래픽이 급증하는 시간대에 특정 엔터프라이즈 고객의 요청을 우선적으로 처리해야 한다면, 다른 계정 유형에 대한 요청 제한을 동적으로 조정할 수 있는 권한도 부여해야 할까요? 그렇다면, 어느 수정까지 조정이 허용되나요?
|
|
질문 3. 각 사용자 요청 상태와 트래픽 정보를 시스템 전반에서 공유해야 할 것 같은데요. 이때 필요한 데이터 일관성을 유지하기 위해 어떤 방식이 적절할까요? 예를 들어, 사용자 상태가 여러 서버에 분산될 때 중앙집중형 접근이 필요한가요? 분산형 접근이 필요한가요?
|
Uh oh!
There was an error while loading. Please reload this page.
당신은 특정 기업에서 제공하는 AI 기반의 API 서비스, 예를 들어 텍스트 생성, 번역, 요약 등의 작업을 수행하는 모델에 대한 rate limiting 시스템을 설계해야 합니다.
이 API 서비스는 여러 유형의 고객 계층에 서비스를 제공하고 있으며, 고객들은 다양한 규모와 빈도로 API를 호출하고 있습니다.
특히 개인 사용자와 소규모 스타트업, 대기업의 엔터프라이즈 계정까지 포함되어 있어, 각각의 계정이 서비스에 미치는 부하가 다르고 요구되는 서비스 품질 또한 차별화됩니다.
현재 이 API 서비스는 전 세계적으로 하루 평균 10억 건 이상의 요청을 처리하고 있으며, 이 중 약 70%가 비즈니스 시간에 집중되어 트래픽이 매우 급증하는 상황입니다.
트래픽 패턴은 지역별로 다르며, 예를 들어 북미 지역의 요청이 급증하는 시간대는 한국이나 유럽과 다릅니다.
서비스의 주요 고객층은 다음과 같이 나뉘며, 각 유형에 따라 요구되는 서비스 레벨이 상이합니다.
개인 사용자(Free Tier): 주로 소규모 요청을 보내며, 하루에 수십 번 이하의 요청을 하는 경우가 많습니다. 무료 계정으로 제공되는 제한된 리소스 내에서만 사용이 가능하며, 지나친 트래픽 유발 시 자동 차단이 필요합니다. 이 계정 유형의 유저는 전체 트래픽의 약 40%를 차지하지만, 리소스 사용량은 약 15%에 불과합니다.
프리미엄 사용자(Paid Tier): 월간 요금을 지불하고 더 높은 API 호출 횟수를 허용받은 사용자로, 하루 수백에서 수천 건의 요청을 보낼 수 있습니다. 프리미엄 계정 사용자들은 요청이 제한에 도달할 때까지 우선 순위를 보장받아야 하며, 전체 트래픽의 약 30%를 차지합니다.
엔터프라이즈 고객(Enterprise Tier): 월간 구독료 기반의 대규모 고객으로, 트래픽이 가장 많고 동시에 API 호출에 대한 고가용성, 높은 SLA(Service Level Agreement)를 보장받아야 하는 계층입니다. 기업 고객들은 매우 높은 빈도로 요청을 보내며, 하루 평균 수십만에서 수백만 건의 호출을 수행할 수 있습니다. 전체 트래픽의 약 30%를 차지하며, 리소스 사용량은 전체의 55% 이상입니다.
요구 사항 및 제약 조건
API 서비스의 트래픽을 관리하기 위해 각 계정 유형에 대해 맞춤형 rate limiting이 필요합니다.
이는 단순히 계정당 요청 횟수를 제한하는 것이 아니라, 특정 시간대에 특정 사용자의 요청 패턴을 고려하여 유연하게 제한할 수 있어야 합니다.
예를 들어, 특정 기업 고객의 서비스 사용이 급증하는 시간대에는 다른 사용자 계층과의 공정한 리소스 배분을 고려해야 합니다.
서비스는 각 계정 유형별로 다음과 같은 조건을 만족해야 합니다.
무료 계정의 요청 제한: 무료 사용자에게는 초당 요청 수 제한과 시간대별 제한을 함께 적용하여, 서비스 남용 방지를 보장해야 합니다. 또한, 단시간에 지나치게 많은 요청이 발생하는 경우 해당 사용자를 일시적으로 차단하는 임계치를 설정할 수 있어야 합니다.
프리미엄 계정의 우선 처리: 프리미엄 사용자에게는 기본적으로 높은 호출 횟수를 허용하되, 요청량이 폭증하는 시간대에 리소스를 효율적으로 사용할 수 있도록 일일 및 시간당 제한을 두어야 합니다. 이 계층에서는 비즈니스 시간과 비비즈니스 시간에 따른 할당량 차별화가 필요합니다.
엔터프라이즈 계정의 신뢰성 확보: 엔터프라이즈 고객은 서비스 신뢰도가 매우 중요한 만큼, 가능한 한 빠르고 안정적으로 서비스를 제공받을 수 있어야 합니다. 기업 사용자의 대규모 요청을 처리하는 동시에 다른 계정 유형과의 공정한 자원 배분을 유지할 수 있는 동적 할당 기능이 요구됩니다. 추가로, 특정 고객에게는 커스텀한 rate limiting 정책이 적용될 수 있어야 하며, 요청 수와 사용 시간대에 따라 별도 제한이 가능합니다.
이 시스템에서는 rate limiting 적용 시 각 계정의 요청 특성을 분석하여 실시간으로 조정할 수 있는 기능이 필요합니다. 예를 들어, 급증하는 요청 패턴을 감지하고 특정 계정을 잠시 제한하거나, 다른 계정의 요청을 우선적으로 처리하도록 조치할 수 있어야 합니다. 특히, rate limiting이 필요한 요청이 여러 서버에 분산되어 요청되는 경우에도, 사용자의 전체 API 호출이 제한을 넘지 않도록 각 서버에서 중앙 시스템과 일관된 정보를 공유해야 합니다.
이 시스템을 설계하면서 고려해야 할 주요 사항으로는, 요청 트래픽이 폭증할 때에도 시스템이 안정적으로 운영될 수 있도록 하는 것과, 특정 계정이 제한을 악용하지 못하도록 하는 것입니다.
위와 같은 요구 사항에 따라 Rate limitter 설계안을 제시해주세요.
All reactions