---
id: wiki-2026-0508-프로토타이핑-및-개념-증명-poc
title: 프로토타이핑 및 개념 증명(PoC)
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [PoC, Proof of Concept, Prototype, Spike]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [process, prototyping, poc, architecture, methodology]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: -
  framework: -
---

# 프로토타이핑 및 개념 증명(PoC)

## 매 한 줄
> **"매 production 이전에 매 risk-laden hypothesis 를 매 cheapest 형태로 검증하는 throwaway 작업."**. 매 prototype = 매 UX / 형태 검증, 매 PoC = 매 기술적 feasibility 검증. 매 둘 다 매 disposable — 매 production code 로 graduating 매 매 흔한 antipattern. 2026 modern stack 에서 매 LLM (Claude Opus 4.7 코드 생성) + 매 v0 / Bolt / Cursor 가 매 prototype turnaround 를 매 hours → minutes 로 단축.

## 매 핵심

### 매 용어 구분
- **Sketch / Wireframe**: 매 visual idea, 매 non-functional. Figma, paper.
- **Prototype**: 매 interactive UX, 매 hardcoded data. Figma prototype, v0.
- **PoC (Proof of Concept)**: 매 핵심 technical risk 한 점 만 검증. CLI script, jupyter notebook.
- **Spike (Agile)**: 매 timeboxed exploration. 매 1–3 days.
- **MVP (Minimum Viable Product)**: 매 production-grade. 매 PoC 의 X.

### 매 PoC 의 가치
- **De-risk**: 매 architecture 결정 전 매 unknown 제거.
- **Cost compression**: 매 wrong path 의 매 cheap pivot.
- **Stakeholder alignment**: 매 demo > spec.
- **Estimation**: 매 effort estimate 의 grounding.

### 매 흔한 실패 모드
1. **PoC → production graduation**: 매 hardcoded auth, 매 single-tenant assumption 이 매 그대로 prod.
2. **Scope creep**: 매 PoC 가 매 mini-MVP 로 비대.
3. **No success criteria**: 매 언제 끝났는지 의 unclear.
4. **Confusion of UX vs tech**: 매 prototype + PoC 를 매 동일 산출물에.

### 매 응용
1. New ML model 의 latency / accuracy 검증.
2. Third-party API 의 rate limit / behavior 탐색.
3. Architecture migration (REST → gRPC) 의 risk 측정.
4. UX hypothesis 의 user testing.

## 💻 패턴

### Pattern 1 — PoC scope contract (markdown template)
```markdown
# PoC: <Title>

## Hypothesis
"매 <X> 가 매 <constraint> 안에서 매 가능하다."

## Success criteria (매 binary, 매 measurable)
- [ ] 매 latency p95 < 200ms
- [ ] 매 accuracy >= 0.85
- [ ] 매 cost per request < $0.01

## Out of scope
- 매 auth, 매 multi-tenancy, 매 retry, 매 observability.

## Timebox
- 매 3 days. 매 day 4 의 결정 (proceed / pivot / stop).

## Disposal
- 매 결과 wiki page 로 정리, 매 code 는 매 archive branch 로.
```

### Pattern 2 — Notebook PoC (LLM model eval)
```python
# poc_llm_eval.ipynb
import asyncio, time
from anthropic import AsyncAnthropic

client = AsyncAnthropic()
PROMPTS = open('eval_set.txt').read().splitlines()  # 매 50 prompts.

async def run_one(p):
    t = time.perf_counter()
    msg = await client.messages.create(
        model='claude-opus-4-7',
        max_tokens=1024,
        messages=[{'role': 'user', 'content': p}],
    )
    return time.perf_counter() - t, msg.content[0].text

results = await asyncio.gather(*(run_one(p) for p in PROMPTS))
latencies = [r[0] for r in results]
print(f'p50={sorted(latencies)[25]:.2f}s, p95={sorted(latencies)[47]:.2f}s')
# 매 single notebook → success criteria 즉시 평가.
```

### Pattern 3 — v0 / Bolt prototype (UX validation)
```typescript
// 매 v0.dev prompt:
// "Build a Linear-style task board with drag-and-drop columns,
//  using shadcn/ui, Next.js 15 App Router, TailwindCSS."
//
// 매 30초 → 매 working demo URL.
// 매 stakeholder 에 매 link 공유 → 매 feedback 1 hour 안 수집.
```

### Pattern 4 — Cursor + Opus 4.7 spike
```bash
# 매 1 day spike — gRPC migration feasibility.
$ cursor agent
> Take src/api/rest/*, generate equivalent gRPC service definitions
  in proto/, and a thin BFF layer that translates REST → gRPC.
  Don't touch tests. Generate a benchmark script comparing p95 latency
  on 1000 sequential requests.
```

### Pattern 5 — Disposable infra (PoC sandbox)
```bash
# 매 PoC env — 매 1-day TTL 의 매 ephemeral cluster.
$ neon branches create --name poc-grpc --parent main --ttl 24h
$ vercel deploy --prebuilt --target preview
$ render blueprint apply poc.yaml --env ephemeral
# 매 끝나면 매 자동 destroy — 매 cost / sprawl 방지.
```

### Pattern 6 — Spike commit hygiene
```bash
$ git checkout -b spike/grpc-feasibility
$ # 매 hack 자유 — 매 lint, test 의 X.
$ git commit -am 'spike: hardcoded auth, no error handling'
$ git push origin spike/grpc-feasibility
# 매 PR 의 X — 매 결과만 wiki / RFC 로 추출.
$ git branch -D spike/grpc-feasibility  # 매 disposal.
```

### Pattern 7 — Decision record (post-PoC)
```markdown
# ADR-042: gRPC migration

## Status
Accepted, 2026-05-10.

## Context
PoC (spike/grpc-feasibility) — 매 3 days.

## Result
- 매 p95 latency: REST 180ms → gRPC 45ms.
- 매 client SDK regen 의 매 30 min CI.
- 매 browser 의 grpc-web bridge 필요 (Connect-Web 채택).

## Decision
- 매 internal service-to-service 는 매 gRPC.
- 매 browser-facing 은 매 Connect (gRPC-compatible).
- 매 migration order: 매 order-svc → 매 inventory-svc → 매 user-svc.

## Consequences
- 매 +1 dev week / service migration.
- 매 OTel gRPC instrumentation 추가 필요.
```

### Pattern 8 — Anti-graduation guard
```yaml
# .github/workflows/no-spike-to-main.yml
name: Block spike merges
on: pull_request
jobs:
  guard:
    runs-on: ubuntu-latest
    steps:
      - run: |
          if [[ "${{ github.head_ref }}" == spike/* || "${{ github.head_ref }}" == poc/* ]]; then
            echo "::error::spike/poc branches must not be merged. Extract findings to ADR/wiki."
            exit 1
          fi
```

## 매 결정 기준
| 상황 | Tool |
|---|---|
| 매 UX hypothesis | Figma + v0 prototype |
| 매 API / model behavior | Notebook PoC |
| 매 architecture decision | Spike + ADR |
| 매 stakeholder demo | v0 / Bolt |
| 매 production migration | MVP, 매 not PoC |

**기본값**: 매 PoC 는 매 timeboxed (1–3 days), 매 success criteria binary, 매 disposable, 매 finding → ADR. 매 graduation 금지.

## 🔗 Graph
- 부모: [[Software Engineering Process]] · [[Risk-Driven Development]]
- 변형: [[Spike (Agile)]] · [[MVP]] · [[Wireframe / Prototype]]
- 응용: [[ADR (Architecture Decision Record)]] · [[Disposable Infrastructure]]
- Adjacent: [[Cursor Agent Workflow]] · [[v0 / Bolt]] · [[Lean Startup]]

## 🤖 LLM 활용
**언제**: 매 hypothesis 정의, 매 PoC 코드 작성 (Cursor / Claude Code), 매 결과 ADR 정리.
**언제 X**: 매 PoC 코드를 매 production 으로 의 graduation. 매 success criteria 의 LLM-fabricated metric (실제 측정 X).

## ❌ 안티패턴
- **Graduation**: 매 PoC code 가 매 main 에 — 매 hardcoded debt.
- **Open-ended PoC**: 매 timebox X — 매 weeks drift.
- **No criteria**: 매 "잘 되면 좋겠다" — 매 stop condition 없음.
- **Demo-driven**: 매 PoC 가 매 polished demo 로 — 매 effort 낭비.
- **재활용 환상**: 매 "그래도 일부 reusable" — 매 거의 항상 매 false economy.

## 🧪 검증 / 중복
- Verified (Lean Startup, Pragmatic Programmer, Google SRE workbook chapter "Spike").
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — PoC vs Prototype + 8 process patterns |
