Files
2nd/10_Wiki/Topics/Architecture/프로토타이핑 및 개념 증명(PoC).md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

217 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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. 매 13 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 (13 days), 매 success criteria binary, 매 disposable, 매 finding → ADR. 매 graduation 금지.
## 🔗 Graph
- 변형: [[MVP]] · [[Wireframe / Prototype]]
- 응용: [[ADR (Architecture Decision Record)]]
- Adjacent: [[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 |