--- 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: ## 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 |