구글은 2026년 8월 3일, 음성 대화 등을 실시간으로 처리하는 AI 에이전트가 안정적으로 운영되기 위한 부하 분산에서 주의해야 할 점들을 설명했습니다. 실시간 AI 에이전트 확장 시 세션 인지 부하 분산 - 구글 개발자 블로그
일반적인 웹 API는 사용자가 요청을 보내고, 서버가 결과를 반환하면 처리가 종료됩니다. 반면 음성 AI 에이전트는 연결을 장시간 유지하면서 음성, 텍스트 변환, AI 답변, 합성 음성 등을 지속적으로 송수신합니다. 사용자가 AI 발언을 덮어 씌웠을 경우 음성 생성을 중단하고 대화 맥락을 업데이트하여 답변을 다시 생성해야 할 수도 있습니다.
예를 들어 서버 A가 50밀리초로 끝나는 요청을 100건 처리하고, 서버 B가 20분 동안 지속되는 대화를 5건 처리하는 경우, 1초당 요청 수(QPS)를 기준으로 서버 A가 더 바쁘게 보일 수 있습니다. 하지만 실제로는 서버 B가 장시간 동안 더 큰 처리 부하를 짊어지고 있을 가능성이 있습니다. 또한 서버의 바쁨을 CPU 사용률만으로 판단하는 것은 위험합니다. 20명이 음성 AI에 연결되어 있어도 모두가 침묵하는 동안에는 부하가 낮게 보이지만, 갑자기 모두 대화를 시작하면 처리량이 급증합니다. 낮은 CPU 사용률만으로 새로운 사용자를 할당하면 서버가 처리 능력을 초과할 위험이 있습니다.
구글은 QPS와 CPU 사용률 외에도 “활성 세션 수”를 기록해야 한다고 설명합니다. 세션이란 사용자 및 AI 에이전트 간에 지속되는 일련의 연결 또는 대화를 의미합니다. CPU 사용률이 눈앞의 부하를 나타내는 반면, 세션 수는 서버가 처리한 업무량을 나타냅니다. 실제 분배에서는 세션 수만으로는 의존하지 않고 CPU 및 메모리 사용률도 고려합니다. CPU 사용률이 90%에 도달한 서버에는 세션 수가 적더라도 새로운 대화를 할당하지 않고, CPU 사용률이 낮더라도 많은 세션을 가진 서버에는 새로운 세션을 단계적으로 할당합니다.
QPS와 CPU 사용률만으로 분배하면 특정 서버에 장시간 대화가 집중되고 다른 서버에는 빈 자리가 남을 수 있습니다. 세션 수도 고려하면 이미 처리한 대화를 파악한 후 새로운 연결을 분배할 수 있으므로 부하의 불균형을 줄일 수 있습니다.
세션 수는 애플리케이션 측에서 시작 시 증가시키고, 종료 시 감소시킵니다. 타임아웃, 취소, 연결 끊김이 겹쳐도 세션 수 카운터를 1회만 감소해야 하며, 종료된 대화가 남아있는 “유령 세션”은 서버를 실제보다 바쁘게 보이게 하고 부하 분산을 오도시키는 원인이 된다고 합니다. 또한, 많은 처리가 같은 카운터를 동시에 업데이트하면 세션 수를 세는 과정 자체가 병목 현상이 될 수 있습니다. 구글은 Java의 “AtomicInteger”로도 많은 처리에 대응할 수 있지만, 높은 병렬성이 요구되는 환경에서는 동일 메모리 주소의 업데이트가 경쟁하기 때문에, 후속하여 합산하는 “LongAdder”와 같은 메커니즘이 적합할 수 있다고 설명합니다.
부하 테스트에서 짧은 요청을 대량으로 보내는 것만으로는 충분하지 않습니다. 대화 시간, 동시 연결 수, 발화와 무음의 비율, 취소 또는 끊어짐의 빈도 변화를 확인하고 응답 시작까지의 시간, 중간에 손실된 세션 수, 서버별 세션 수의 편차를 점검해야 합니다. 구글은 AI 에이전트의 본격적인 도입이 진행되는 가운데 단발성 요청이 아닌 지속적인 대화를 부하 분산의 단위로 인식하는 설계로 전환해야 한다고 주장하고 있습니다.
원문 보기 | 출처: Gigazine