728x90

1. 6주에 Flash 세 번, 이게 무슨 상황인가

2026년 9월 2일에 Google이 Gemini 3.8 Flash와 3.8 Flash Cyber를 발표했다. 공지 첫 문단이 좀 웃긴데, "3주 전에 나온 3.7 Flash의 기세를 이어" "6주 만에 세 번째 Flash 릴리스"라고 스스로 적어놨다. 모델 벤더가 릴리스 주기를 자랑거리로 쓰는 시대다.

운영하는 입장에서 이건 자랑이 아니라 리스크다. 6주에 세 번 바뀌면 우리가 붙여둔 프롬프트, 토큰 예산, 레이턴시 SLO가 6주에 세 번 흔들린다. 실제로 3.7 → 3.8 올리면서 겪을 문제 중 가장 현실적인 게 토큰 소비량 증가인데, 이건 뒤에서 자세히 다루겠다.

발표 내용을 실무 관점으로 압축하면 세 줄이다.

  • 3.8 Flash: 3.7과 같은 가격($0.75/1M input, $3.75/1M output, 프로모션 가격은 2026-12-31까지. 2027-01-01부터 $1.50 / $7.50)에 코딩·에이전트 성능만 올린 버전. DeepSWE v1.1, Vals Finance Agent V2, Harvey Legal Agent Benchmark에서 개선, HLE-Verified 54.9%.
  • 3.8 Flash Cyber: 취약점 탐지·자동 패치 특화 변종. 아무나 못 쓰고 Fairwind Program 승인된 "신뢰할 수 있는 방어자"에게만 열린다.
  • 둘 다 같은 기반 모델을 공유하고, 사이버보안 도메인 훈련이 오히려 일반 코딩·추론 성능까지 끌어올렸다는 게 Google 주장이다.

마지막 줄이 개인적으로 가장 흥미롭다. 취약점을 찾고 고치는 훈련은 "코드를 끝까지 읽고, 가설 세우고, 반증하고, 다시 읽는" 일이다. 이건 그냥 CRUD 코드 짜기보다 훨씬 긴 호흡의 추론이라 일반 SWE 태스크에 전이가 될 만하다. 물론 이건 Google의 설명이고 우리가 검증한 건 아니다.

2. "더 열심히 일하는 모델"이라는 말의 진짜 의미

공지에서 제일 정직한 문장은 이거다.

These performance gains stem from a core design choice: 3.8 Flash works harder. ... At times, the model might use more tokens to maximize performance, especially at higher effort levels.

번역하면 "성능은 올랐는데 토큰을 더 씁니다"다. 단가는 같은데 소비량이 늘면 청구서는 늘어난다. 이건 버그가 아니라 설계다.

비유하자면 이렇다. 3.7이 "주니어인데 시키는 만큼만 딱 하고 퇴근"이라면, 3.8은 "시켰더니 관련 파일 12개를 더 뒤져보고 테스트도 돌려보고 온" 사람이다. 결과물 품질은 좋은데 인건비(토큰)가 더 나간다. 그래서 Google도 대놓고 "효율이 최우선이면 effort level을 낮추거나 그냥 3.7 Flash 계속 쓰세요, 3.7은 계속 지원합니다"라고 써놨다. 모델 벤더가 구버전 계속 쓰라고 권하는 건 흔치 않다.

실무에서 이게 어떻게 드러나는지 보려면, 같은 프롬프트를 3.7과 3.8에 던져서 usageMetadata를 비교하는 게 제일 빠르다.

curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{"parts": [{"text": "이 Terraform 모듈의 IAM 정책에서 과도한 권한을 찾아 수정안을 제시해줘: ..."}]}]
  }' | jq '.usageMetadata'
{
  "promptTokenCount": 1842,
  "candidatesTokenCount": 1130,
  "thoughtsTokenCount": 4207,
  "totalTokenCount": 7179
}

여기서 봐야 할 건 thoughtsTokenCount다. 사고 토큰은 출력 단가로 과금되는데, 위 예시라면 실제 답변(1,130)보다 사고 과정(4,207)이 4배 가까이 많다. 3.7에서 3.8로 올리고 나서 "응답은 비슷한데 비용이 왜 튀지?" 싶으면 십중팔구 여기다. 필드 이름과 정확한 과금 정책은 릴리스마다 달라질 수 있으니 본인 프로젝트의 결제 콘솔과 최신 API 문서로 반드시 재확인해야 한다.

3. Flash Cyber: 취약점 찾기와 패치, 그리고 Fairwind라는 게이트

Cyber 변종 쪽 숫자를 정리하면 이렇다.

  • CyberGym(C/C++ 중심 취약점 발견 벤치마크)에서 3.5 Flash Cyber는 물론 훨씬 큰 프런티어 모델들도 앞섰다.
  • C/C++만으론 현실을 못 담으니 20개 언어 코드베이스로 만든 내부 벤치마크도 돌렸고, 성공률 70% 초과.
  • 패치 쪽 외부 벤치마크 CWE-Bench(Collinear 운영)에서 pass@1 47.2%. 1위 모델 47.8%에 살짝 못 미치지만 비용이 훨씬 싸서 Pareto frontier에 있다는 표현을 썼다.
  • 실사례: Chrome Security 팀 기준 훨씬 큰 상용 모델 대비 정확한 패치 2.6배. Wiz 내부 침투테스트 벤치마크에서 recall +7.5~9.7%, 비용은 2.3~5.2배 저렴. Google Cloud 취약점 연구팀은 보통 몇 달 걸리는 핵심 취약점을 2시간 안에 찾았다고.

여기서 실무자가 오해하기 쉬운 지점. pass@1 47.2%는 "패치 절반은 틀린다"는 뜻이다. Chrome 팀 사례도 "2.6배 더 많은 correct patch"지 "전부 correct"가 아니다. 즉 이건 사람 리뷰어를 없애는 도구가 아니라, 리뷰 큐에 올릴 후보를 대량으로 뽑아주는 도구다. 자동 패치 파이프라인을 짤 거면 반드시 사람 승인 단계를 남겨야 한다.

그리고 Cyber 모델은 API 키만 있다고 못 쓴다. Fairwind Program 심사를 통과한 정부기관, 핵심 인프라 운영자, 소프트웨어 메인테이너에게만 우선 접근이 주어진다. 공지에도 "3.8 Flash Cyber는 사이버 영역에서 더 느슨한(permissive) 완화 정책을 적용하기 때문에 trusted defender에게만 제공한다"고 명시돼 있다. 공격 능력(exploitation)보다 수정(fixing)을 우선 투자했다는 서술도 함께 나온다.

그래서 일반 팀이 당장 할 수 있는 건 일반 3.8 Flash로 코드 리뷰/시크릿 스캔 보조를 붙이는 것까지다. 예를 들어 PR diff를 던져서 위험 패턴만 뽑는 CI 스텝은 이렇게 짤 수 있다.

# .github/workflows/ai-review.yml (핵심만)
- name: AI security review on diff
  env:
    GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
  run: |
    DIFF=$(git diff origin/main...HEAD -- '*.tf' '*.yaml' '*.py' | head -c 60000)
    jq -n --arg d "$DIFF" '{
      contents:[{parts:[{text:("아래 diff에서 하드코딩된 크리덴셜, 과도한 IAM 권한, 미검증 입력만 지적. 없으면 NONE만 출력.\n"+$d)}]}],
      generationConfig:{temperature:0}
    }' > req.json
    curl -sf -X POST \
      "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent" \
      -H "x-goog-api-key: $GEMINI_API_KEY" -H 'Content-Type: application/json' \
      --data @req.json | jq -r '.candidates[0].content.parts[-1].text'

포인트는 두 개다. diff를 head -c로 자르는 것(안 자르면 대형 PR에서 토큰 폭탄), 그리고 parts[-1]로 마지막 파트를 꺼내는 것. 사고 과정이 앞쪽 파트로 오는 구성일 때 parts[0]만 보면 엉뚱한 게 나온다.

4. 도입 시 고려사항과 흔한 함정

함정 1. 모델 이름 하드코딩. 6주에 세 번 나오는 속도면 코드에 gemini-3.7-flash가 박혀 있는 순간 기술부채다. 환경변수나 ConfigMap으로 빼고, 카나리로 5% 트래픽만 신모델에 태우는 구조가 맞다. 그리고 아직 안 열린 이름을 미리 박아두면 이런 걸 만난다.

{
  "error": {
    "code": 404,
    "message": "models/gemini-3.8-flash-cyber is not found for API version v1beta, or is not supported for generateContent. Call ListModels to see the list of available models and their supported methods.",
    "status": "NOT_FOUND"
  }
}

Cyber 변종은 Fairwind 승인 전엔 이 404가 정상이다. 권한 문제인지 이름 오타인지 헷갈리면 먼저 ListModels로 확인하자.

$ curl -s "https://generativelanguage.googleapis.com/v1beta/models" \
    -H "x-goog-api-key: $GEMINI_API_KEY" | jq -r '.models[].name' | grep flash
models/gemini-3.7-flash
models/gemini-3.8-flash

함정 2. 타임아웃 설정을 그대로 둠. "works harder" 모델은 실제로 더 오래 생각한다. 3.7 기준으로 맞춰둔 인그레스/게이트웨이 타임아웃(예: nginx 60초)에 그대로 물리면 이런 게 뜬다.

upstream timed out (110: Connection timed out) while reading response header from upstream

스트리밍(streamGenerateContent)으로 바꾸거나 타임아웃을 늘리거나, effort level을 낮추는 세 갈래 중 골라야 한다. 사용자 대면 API라면 스트리밍이 정답에 가깝다.

함정 3. 429를 리트라이로만 때움. 토큰당 요금이 같아도 요청당 토큰이 늘면 TPM(분당 토큰) 쿼터를 먼저 때린다.

{"error":{"code":429,"message":"Resource has been exhausted (e.g. check quota).","status":"RESOURCE_EXHAUSTED"}}

여기서 무지성 지수 백오프 리트라이를 걸면 같은 무거운 요청이 반복돼 상황이 악화된다. 리트라이 전에 이 요청이 정말 3.8이어야 하는가를 먼저 물어야 한다. 라우팅 계층에서 요약·분류 같은 가벼운 작업은 3.7이나 낮은 effort로 내리는 게 실질적인 해법이다.

함정 4. 프롬프트 인젝션은 "개선"이지 "해결"이 아니다. 공지에 Gray Swan 측정 기준으로 프롬프트 인젝션 견고성이 크게 좋아졌다고 나오는데, 이걸 "이제 외부 문서 그냥 먹여도 된다"로 읽으면 안 된다. 에이전트가 셸이나 클라우드 API를 쥐고 있는 구조라면 모델 방어와 별개로 권한 자체를 좁히는 게 1차 방어선이다. 읽기 전용 크리덴셜, 별도 서비스 계정, 네트워크 이그레스 제한. 이건 모델 버전이 올라가도 안 바뀌는 원칙이다.

대안 관점. 코딩 에이전트라면 3.8 Flash가 "프런티어 모델 급 성능을 Flash 가격에"라는 포지션이라 비용 대비 매력이 있지만, 지연시간과 토큰 예산이 빡빡한 벌크 처리(로그 요약, 분류, 임베딩 전처리)는 3.7 Flash를 유지하는 게 낫다. Google 스스로 그렇게 권한다. 보안 스캐닝은 Cyber 모델 접근권이 없으면 기존 SAST/DAST(Semgrep, CodeQL, Trivy 등)를 1차로 두고 LLM은 트리아지 보조로 쓰는 조합이 현실적이다.

5. 정리

한 줄 요약: 3.8 Flash는 "같은 단가에 더 똑똑하지만 토큰을 더 쓰는" 모델이고, 3.8 Flash Cyber는 심사받은 방어자만 쓸 수 있는 취약점 탐지·패치 특화 변종이다.

  • 지금 바꿔라: 장기 실행 코딩 에이전트, 멀티스텝 리서치/리포팅, 복잡한 리팩터링 파이프라인. 품질 차이가 비용 증가분을 상쇄할 가능성이 높다.
  • 그대로 둬라: 분류·요약·라우팅처럼 대량·저지연이 핵심인 워크로드. 3.7 Flash는 계속 지원된다.
  • 먼저 할 일: 모델 이름 설정화 → 카나리 5% → usageMetadata로 토큰 변화 측정 → 타임아웃/쿼터 재산정. 이 순서를 건너뛰면 비용 알람으로 배운다.
  • Cyber는: Fairwind 신청 대상이 되는 조직인지부터 확인. 아니라면 일반 3.8 Flash + 기존 SAST 조합으로 트리아지 자동화를 먼저 만들어두는 게 순서다.

마지막으로, 벤치마크 수치는 전부 벤더 발표 기준이다. CWE-Bench pass@1 47.2%처럼 절반 가까이 틀리는 숫자를 보고도 "자동 패치니까 머지"로 가면 사고 난다. 우리 코드베이스에서 20~30건 샘플로 직접 재현해보고 정확도를 재는 게, 남의 벤치마크 표 열 개보다 낫다.

참고 자료

728x90

+ Recent posts