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

7.3 KiB
Raw Blame History


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)

# 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 (13 days), 매 success criteria binary, 매 disposable, 매 finding → ADR. 매 graduation 금지.

🔗 Graph

🤖 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