본문 바로가기

AI

[AI] Gemini API vs OpenRouter 비교 실험

개요

AI를 활용한 사이드 프로젝트를 만들 때, 쉽고 무료이면서도 토큰을 넉넉하게 지원하는 Gemini API를 주로 사용해왔다.

그런데 어느 순간부터 잘 동작하던 서비스가 자꾸 429 에러를 내기 시작했다. 새로 만든 프로젝트에서도 같은 현상이 반복됐다.


원인을 찾아보니 2025년 12월,
Google이 사전 공지 없이 Gemini API 무료 티어의 Rate Limit을 대폭 축소한 탓이었다.
그 사이 무료 티어 제약이 그렇게 세진 줄도 모르고 계속 방치했었다.

Yes, we turned down the 2.5 Pro free limits which were originally only supposed to be available for a single weekend. We have a huge amount of demand for 3.0 Pro and Nano Banana Pro right now so needed to move capacity there.


Gemini 유료 티어로 옮기는 걸 고민하던 비슷한 시기에,
여러 회사의 AI 모델을 하나의 API로 운영할 수 있는 OpenRouter 라는 서비스를 알게 되었다.


단일 API 와 선불 크레딧 결제 같은 명확한 장점이 있어서 바로 도입하고 싶었지만,
그 전에 Gemini를 유료로 직접 호출하는 것과 비교했을 때 실제로 성능 차이가 있는지 먼저 확인하고 싶었다.


마침 한동안 시달렸던 무료 티어도 같이 비교해보면 좋겠다 싶어서, 세 가지 경로를 모두 놓고 실험을 설계했다.


평소와 같은 수준의 요청 상황과 트래픽이 한꺼번에 몰리는 상황, 두 가지 부하 조건에서
성공률, 정확도, 응답 속도, 토큰 사용량, 비용, Rate Limit(429) 발생 빈도 같은 지표를 측정해서, OpenRouter 도입 여부를 판단하는 근거로 삼고자 했다.



이 실험도 새로운 개인 프로젝트를 기획하고 구현하면서 진행했던 건데, 더 늦기 전에 지금이라도 정리해본다.

실험 설계

실험은 테스트 케이스마다 다른 코드 리뷰 요청 4종을, 정해진 조건(경로, 부하)별로 나눠 반복 실행하는 방식이다.


AI에게 제출된 코드를 주고 버그를 찾아 정해진 형식으로 리뷰하게 하는 요청을,
호출 경로, 버그 난이도, 부하 조건만 바꿔가며 여러 번 실행하고 그 결과를 비교했다.


이 요청 형식 자체는 그 개인 프로젝트에 실제로 구현해둔 제출 코드 리뷰 기능 프롬프트를 그대로 가져온 것이라,
실제 서비스에서 보내는 것과 같은 요청으로 비교할 수 있었다.


비교 대상

비교 대상은 세 가지다.

ID 경로
google-free Google AI Studio 무료 티어
google-paid Google AI Studio 유료 티어
openrouter OpenRouter

세 경우 모두 동일하게 gemini-2.5-flash 모델을 사용했다.


테스트 케이스

테스트 입력은 코드 제출 리뷰 요청 4종으로 구성했다.
모델에게 제출 코드를 주고, 버그 위치와 개수, 개선 사항을 정해진 JSON 형식으로 답하게 하는 요청이다.


버그 발견 난이도를 기준으로 가장 쉬운 케이스부터 가장 어려운 케이스까지 단계별로 나눴다.


테스트 케이스 버그 발견 난이도 언어
easy 쉬움 Python
medium 중간 JavaScript
hard 어려움 Java
hardest 최상 Python

부하 패턴

같은 테스트 케이스라도 얼마나 빠르게 또는 얼마나 몰아서 API를 치는지에 따라 Rate Limit이 달라질 수 있어서,
부하 패턴도 두 가지로 나눴다.


둘 다 테스트 케이스 4종은 동일하고, 호출 방식만 다르다.

  • 일반 테스트 : 테스트 케이스 하나당 20회, 한 건씩 순서대로, 요청 사이 2초 간격
  • 부하 테스트 : 테스트 케이스 하나당 30회 (10건 동시 * 3라운드), 라운드 사이 5초 쉼

실험은 부하 조건, 테스트 케이스, 경로를 모두 조합해서 한 번씩 돌렸다.
경로 하나당 테스트 케이스 4개 * 부하 2종 = 8번, 경로가 3개니까 총 24번을 실행한 것이다.

측정 지표

  • 성공률 (HTTP 응답 성공 비율)
  • 정확도 (형식 / 내용)
  • 응답 속도 (latency p50 / p95)
  • 토큰 사용량, 비용
  • Rate Limit(429) 발생 빈도

성공률

경로별 성공률

ID 경로 총 요청 성공 성공률
google-free Google 무료 티어 200 23 11.5%
google-paid Google 유료 티어 200 200 100%
openrouter OpenRouter 200 200 100%

outcomes-donut

결과부터 보면, 무료 티어는 정상적으로 쓸 수 없는 수준이었다.

일반 테스트에서도 가장 쉬운 케이스 외에는 거의 다 실패했고, 부하 테스트에서는 더 심해졌다.


부하 테스트

계획한 24가지 조합을 다 돌리기도 전에 무료 티어의 일일 토큰 한도를 소진해 버렸다.

테스트 케이스 Google 무료 티어 성공
easy 4
medium 1
hard 0
hardest 0

heatmap-response-success

실패 원인

실패 원인은 거의 다 HTTP 429, Rate Limit이었다.
짧은 시간에 요청 30개를 연달아 보내자 거의 모든 요청이 막혔다.


단순히 느린 정도가 아니라, 운영 환경에서는 사실상 쓸 수 없다고 봐야 하는 수준이었다.
무료 티어는 애초에 프로덕션 안정성을 보장하지 않는다고는 하지만, 숫자로 직접 보니 체감보다 훨씬 심각했다.

무료 티어 실패의 대부분은 HTTP 429였다. 유료 티어와 OpenRouter는 실패 건수 자체가 0이었다.

정확도

HTTP 200만 받았더라도, 기대한 JSON 스키마를 지키는지, 리뷰 내용이 맞는지도 확인해보았다.

형식 정확도

format-accuracy-by-route

경로별로 묶어 보면, 무료 티어는 HTTP 200 성공 응답 중에서도 형식 검증 통과 비율이 평균 78.3% 정도 밖에 되지 않았고,
유료 티어와 OpenRouter는 100% 였다.


즉 무료 티어는 Rate Limit에 막히기도 했지만, 통과한 응답 가운데에도 JSON 형식을 어기는 경우가 꽤 있었다.

heatmap-format-accuracy

부하 조건과 난이도를 나눠 보면 차이가 더 분명하다.


무료 티어는 hard, hardest 에서 형식 정확도가 0%였고,
부하 테스트로 요청이 몰리면 성공 자체가 거의 없어서 히트맵 칸이 비어 있기도 했다.


유료 티어와 OpenRouter는 모든 조합에서 100% 였다.

내용 정확도

heatmap-content-accuracy

리뷰 내용이 실제로 적절했는지를 기준으로 평가했다.
유료 티어와 OpenRouter는 모든 조합에서 100% 정확도를 보였다.


무료 티어는 성공률 자체가 저조해서 정확도 자체가 크게 의미 없었다.

비용

OpenRouter를 거치면 중간 수수료가 붙어서 더 비싸지지 않을까 걱정했는데,
실제 청구 금액을 비교해보니 거의 차이가 없었다.


유료 티어는 Google AI Studio 대시보드에 찍힌 사용 금액을 직접 확인해서 기록했고,
OpenRouter는 API 응답에 함께 오는 비용 정보를 그대로 누적해서 합산했다.


둘 다 추정치가 아니라 실제로 발생한 비용이다.

총 비용 비교

ID 경로 총 사용 금액
google-paid Google 유료 티어 572 KRW
openrouter OpenRouter $0.371983 (약 570 KRW)

같은 모델로 같은 24가지 조합을 실행한 결과인데, 총액 차이는 2 KRW 수준이었다.
라우팅 수수료가 눈에 띄게 붙을 거라고 생각했는데, 실제로는 거의 영향이 없었던 것이다.


난이도별 비용

cost-normal

cost-burst

난이도별로 분류해봐도 유료 티어와 OpenRouter 둘 다 큰 차이를 보이지 않았다.

응답 속도

비용은 거의 차이가 없었지만, 응답 속도는 OpenRouter 쪽이 살짝 더 느렸다.
경로를 한 단계 더 거치는 구조이니 어느 정도는 예상한 결과치였다.

지연 시간 비교

구분 Google 유료 티어 OpenRouter 차이
p50 평균 4,448ms 4,921ms +473ms (+11%)
p95 평균 5,608ms 6,928ms +1,320ms (+24%)

p50보다 p95에서 차이가 더 크게 나타나긴 했다.


다만 절대값으로 보면 p50 기준 +473ms, p95 기준 +1,320ms 수준이고,
애초에 응답 자체가 수 초 단위로 걸리는 작업이라 사용자가 체감할 만큼 유의미하다고 보긴 어려웠다.

난이도별 지연 시간

latency-normal

latency-burst

유료 티어와 OpenRouter는 난이도가 올라갈수록 실행 시간이 늘어났고,
OpenRouter가 유료 티어보다 테스트 케이스당 2~4초 정도 길었다.


부하 테스트에서는 유료 티어 22~31초, OpenRouter 23~34초 수준이었다.

정리

정리하면, 무료 티어는 정상 트래픽에서도 실패율이 높았고
부하 테스트에서는 사실상 전멸했는데, 이는 실험이 끝나기도 전에 일일 토큰 한도를 소진해 버렸다.


유료 티어와 OpenRouter는 형식과 내용 정확도 모두 100%였고,
무료 티어HTTP 429와 JSON 형식 실패가 겹쳤고, 성공 응답의 형식 정확도 평균은 78.3%에 그쳤다.


비용은 실제 청구 금액 기준으로 거의 차이가 없었다.


응답 속도는 OpenRouter가 더 느렸지만, 1초 안팎이라 체감상 무의미한 수준이었다.


무료 티어를 더 쓸 수 없는 상황에서,
유료 티어와 OpenRouter 사이에 실질적인 차이가 거의 없다는 것을 확인했다.



약간의 응답 속도 손해를 감수하면 여러 모델을 하나의 API로 운영할 수 있다는 이점이 더 크다고 판단해서,
OpenRouter를 도입하기로 결정했다.

728x90

'AI' 카테고리의 다른 글

[AI] OpenRouter LLM 비교 실험 및 모델 선택 기준  (0) 2026.06.22