Ops & Systems

Claude Code 실전 (5): 모델 믹스 전략

테스트는 Haiku로, 리팩토링은 Sonnet으로, 아키텍처는 Opus로. 작업별 최적 모델을 선택해 비용과 품질을 모두 잡는 법.

Claude Code 실전 (5): 모델 믹스 전략

Claude Code 실전 (5): 모델 믹스 전략

테스트는 Haiku로, 리팩토링은 Sonnet으로, 아키텍처는 Opus로. 작업별 최적 모델을 선택해 비용과 품질을 모두 잡는 법.

TL;DR

  • Haiku: 빠르고 저렴함 → 테스트, 단순 수정, 코드 검색
  • Sonnet: 균형 잡힘 → 일반 개발, 리팩토링, 디버깅
  • Opus: 최고 성능 → 아키텍처 설계, 복잡한 문제 해결
  • 전략: 작업 복잡도에 따라 모델을 동적으로 전환

1. 왜 모델 믹스인가?

단일 모델의 문제

모든 작업에 Opus를 사용하면:

  • 비용 10배 증가
  • 간단한 작업에 과도한 지연
  • 대부분의 작업에 불필요한 성능

모든 작업에 Haiku를 사용하면:

  • 복잡한 작업에서 품질 저하
  • 아키텍처 결정에서 실수
  • 반복 수정으로 오히려 시간 증가

최적의 전략

작업 복잡도에 따라 모델을 선택합니다:

낮음 → Haiku: 테스트, 린트 수정, 코드 검색, 문서 생성

중간 → Sonnet: 기능 개발, 버그 수정, 리팩토링, API 구현

높음 → Opus: 아키텍처 설계, 대규모 리팩토링, 복잡한 알고리즘, 보안 검토

2. 모델별 특성

Claude 3.5 Haiku

특성
속도가장 빠름
비용가장 저렴
강점단순 작업, 빠른 응답
약점복잡한 추론 한계

적합한 작업:

  • 테스트 코드 작성
  • 타입 에러 수정
  • 린트 에러 수정
  • 간단한 코드 생성
  • 코드베이스 검색
  • 문서/주석 작성

Claude 3.5 Sonnet

특성
속도빠름
비용중간
강점균형 잡힌 성능
약점극도로 복잡한 작업

적합한 작업:

  • 새 기능 구현
  • 버그 수정
  • 코드 리팩토링
  • API 엔드포인트 작성
  • 컴포넌트 개발
  • 디버깅

Claude 3.5 Opus

특성
속도보통
비용가장 높음
강점복잡한 추론, 창의성
약점비용, 속도

적합한 작업:

  • 시스템 아키텍처 설계
  • 대규모 리팩토링 계획
  • 복잡한 알고리즘 구현
  • 보안 취약점 분석
  • 성능 최적화 전략
  • 기술 의사결정

3. 모델 전환 방법

CLI에서 전환

bash
# 기본 모델 설정
claude config set model sonnet

# 세션 중 전환
/model haiku
/model sonnet
/model opus

설정 파일

`~/.claude/settings.json`

json
{
  "model": "sonnet",
  "modelOverrides": {
    "test": "haiku",
    "architecture": "opus"
  }
}

프롬프트에서 힌트

Haiku로 충분한 작업:

  • "이 함수에 유닛 테스트 추가해줘"
  • "타입 에러 수정해줘"
  • "린트 에러만 고쳐줘"

Sonnet이 적합한 작업:

  • "로그인 기능 구현해줘"
  • "이 버그 원인 찾아서 수정해줘"
  • "이 컴포넌트 리팩토링해줘"

Opus가 필요한 작업:

  • "마이크로서비스 아키텍처 설계해줘"
  • "전체 인증 시스템 재설계해줘"
  • "성능 병목 분석하고 최적화 전략 세워줘"

4. 작업별 모델 매핑

테스트 작성 (Haiku)

/model haiku
"ProductCard 컴포넌트에 테스트 추가해줘"

Haiku가 적합한 이유:

  • 테스트 패턴은 반복적
  • 기존 코드를 참조해서 작성
  • 빠른 피드백이 중요

기능 개발 (Sonnet)

/model sonnet
"사용자 프로필 페이지 구현해줘. 기존 UserCard 컴포넌트를 참고하고, 프로필 이미지 업로드 기능 포함해줘."

Sonnet이 적합한 이유:

  • 여러 파일 수정 필요
  • 기존 패턴 따르면서 확장
  • 적절한 판단력 필요

아키텍처 설계 (Opus)

/model opus
"현재 모놀리식 구조를 마이크로서비스로 분리하려고 해. 어떤 서비스로 나눌지, 통신 방식은 뭘로 할지, 데이터 일관성은 어떻게 유지할지 설계해줘."

Opus가 적합한 이유:

  • 복잡한 트레이드오프 분석
  • 장기적 영향 고려
  • 창의적 문제 해결 필요

5. 실전 워크플로우

버그 수정 플로우

  1. Haiku로 로그 분석: /model haiku → "이 에러 로그 분석해줘"
  2. Sonnet으로 버그 수정: /model sonnet → "분석 결과 기반으로 버그 수정해줘"
  3. Haiku로 테스트 추가: /model haiku → "수정한 부분에 테스트 추가해줘"

새 기능 개발 플로우

  1. Opus로 설계: /model opus → "결제 시스템 설계해줘. 고려사항: PCI-DSS, 멱등성, 재시도"
  2. Sonnet으로 구현: /model sonnet → "설계대로 PaymentService 구현해줘"
  3. Haiku로 테스트: /model haiku → "PaymentService 테스트 작성해줘"

리팩토링 플로우

  1. Opus로 전략 수립: /model opus → "이 레거시 코드를 어떻게 리팩토링할지 전략 세워줘"
  2. Sonnet으로 단계별 실행: /model sonnet → "1단계: 의존성 정리" → "2단계: 함수 분리" → "3단계: 테스트 추가"
  3. Haiku로 정리: /model haiku → "린트 에러 수정하고 포맷팅해줘"

6. 비용 최적화 전략

비용 비교 (예시)

작업HaikuSonnetOpus
테스트 10개$0.01$0.05$0.20
기능 1개$0.05$0.15$0.50
아키텍처$0.10$0.30$1.00

월간 비용 시뮬레이션

단일 모델 (Sonnet만): 총 $12.00/월

  • 테스트 100개: $5.00
  • 기능 20개: $3.00
  • 디버깅 50회: $2.50
  • 아키텍처 5회: $1.50

모델 믹스: 총 $11.50/월 + 아키텍처 품질 향상

  • 테스트 100개 (Haiku): $1.00
  • 기능 20개 (Sonnet): $3.00
  • 디버깅 50회 (Sonnet): $2.50
  • 아키텍처 5회 (Opus): $5.00

7. 자동화 전략

Hooks로 자동 전환

`.claude/settings.json`

json
{
  "hooks": {
    "PreToolCall": [
      {
        "matcher": "Edit|Write",
        "pattern": "*.test.ts|*.spec.ts",
        "command": "claude model set haiku",
        "description": "Use Haiku for test files"
      },
      {
        "matcher": "Edit|Write",
        "pattern": "**/architecture/**|**/design/**",
        "command": "claude model set opus",
        "description": "Use Opus for architecture docs"
      }
    ]
  }
}

CLAUDE.md에 가이드라인

CLAUDE.md에 다음과 같은 모델 선택 가이드를 추가하세요:

Haiku 사용: 테스트 코드 작성/수정, 타입 에러 수정, 린트 에러 수정, 코드 검색 및 분석

Sonnet 사용 (기본): 새 기능 구현, 버그 수정, 리팩토링, API 작업

Opus 사용: 아키텍처 설계, 대규모 변경 계획, 보안 검토, 성능 최적화 전략

8. 모델별 프롬프트 팁

Haiku 최적화

좋은 프롬프트: "UserService.test.ts에 getUser 메서드 테스트 추가해줘. 기존 테스트 패턴 따라줘."

나쁜 프롬프트: "테스트 전략을 세우고 종합적인 테스트 스위트를 설계해줘"

핵심: 구체적이고 범위가 좁은 작업

Sonnet 최적화

좋은 프롬프트: "장바구니 기능 구현해줘. CartContext로 상태 관리, LocalStorage에 persist, 기존 ProductCard에 Add to Cart 버튼 추가"

나쁜 프롬프트: "장바구니 만들어줘" (너무 모호함)

핵심: 맥락과 요구사항 명확히

Opus 최적화

좋은 프롬프트: "결제 시스템을 설계해줘. 현재 상황: 모놀리식 Next.js 앱, PostgreSQL, 월 10만 트랜잭션 예상. 고려사항: PCI-DSS 컴플라이언스, 결제 실패 재시도, 환불 처리. 질문: 결제 게이트웨이 추천, 트랜잭션 로그 관리, 테스트 방법?"

나쁜 프롬프트: "결제 구현해줘" (설계 없이 바로 구현)

핵심: 맥락, 제약조건, 열린 질문 제공

9. 의사결정 가이드

작업이 들어오면 다음 순서로 판단합니다:

  1. 단순 수정/검색인가? → Yes면 Haiku
  2. 아키텍처/설계인가? → Yes면 Opus
  3. 복잡한 알고리즘인가? → Yes면 Opus
  4. 그 외 일반 작업 → Sonnet (기본)

간단한 규칙

작업 유형모델이유
`*.test.*` 파일Haiku패턴 반복
린트/타입 에러Haiku단순 수정
코드 검색Haiku빠른 응답
새 기능Sonnet균형
버그 수정Sonnet분석 필요
리팩토링Sonnet맥락 이해
아키텍처Opus복잡한 추론
보안 검토Opus깊은 분석
성능 최적화Opus트레이드오프

마무리

모델 믹스는 단순한 비용 절감이 아닙니다.

각 작업에 최적의 도구를 선택하는 전략입니다.

원칙적용
단순한 건 빠르게Haiku
일반적인 건 균형있게Sonnet
복잡한 건 신중하게Opus

이 시리즈를 통해 Claude Code의 진정한 잠재력을 발휘하시길 바랍니다.

시리즈 완결

  1. Context가 전부다 - 프로젝트 이해도 높이기
  2. Hooks로 워크플로우 자동화 - 품질 게이트 설정
  3. Custom Skills로 팀 표준 만들기 - 팀 지식 공유
  4. MCP 서버 구축하기 - 외부 시스템 연동
  5. 모델 믹스 전략 (현재 글) - 비용과 품질 최적화