7.5 KiB
7.5 KiB
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.
매 흔한 실패 모드
- PoC → production graduation: 매 hardcoded auth, 매 single-tenant assumption 이 매 그대로 prod.
- Scope creep: 매 PoC 가 매 mini-MVP 로 비대.
- No success criteria: 매 언제 끝났는지 의 unclear.
- Confusion of UX vs tech: 매 prototype + PoC 를 매 동일 산출물에.
매 응용
- New ML model 의 latency / accuracy 검증.
- Third-party API 의 rate limit / behavior 탐색.
- Architecture migration (REST → gRPC) 의 risk 측정.
- UX hypothesis 의 user testing.
💻 패턴
Pattern 1 — PoC scope contract (markdown template)
# 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)
# 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)
// 매 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
# 매 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)
# 매 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
$ 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)
# 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
# .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 |