대부분의 개념 증명이 실패하는 이유는 팀이 그것을 만들지 못해서가 아닙니다. 아무도 무엇을 증명해야 하는지 말해주지 않았기 때문에 실패합니다.
AWS Prescriptive Guidance는 일반적인 패턴을 한 문장으로 설명합니다: "너무 자주, PoC는 학습을 촉진하기 위한 엄격한 실험이라기보다는 인상을 주기 위해 설계된 기술 데모로 취급됩니다." 데모는 '좋아 보이게' 만들어지고, 실험은 '실패할 수 있도록' 만들어집니다.
이 게시물에서는 소프트웨어 앱의 개념 증명(PoC)을 구축하는 제가 따를 프로세스를 7단계에 걸쳐 설명합니다. 이 방법은 위험한 부분이 새로운 통합인지, 머신러닝 모델인지, 아니면 한 번도 시도해보지 않은 아키텍처 조각이든 관계없이 작동합니다.
미리 말씀드립니다: 저는 Entalogics에서 근무하며 스타트업을 위한 개념 증명과 프로토타입을 구축합니다. 저희 자체 프로세스가 어디에 적용되고, 어디에 적용되지 않는지도 말씀드리겠습니다.
개념 증명이란 무엇이며 (무엇이 아닌지)
개념 증명은 하나의 질문에 답합니다: 이 특정의 위험한 요소를 우리 환경에서 구축하고 작동시킬 수 있는가? 이것은 제품이 아니며, 투자자를 위한 데모도 아니고, 첫 번째 출시 버전도 아닙니다.
만약 개념 증명(PoC), 프로토타입, 최소 기능 제품(MVP) 간의 전체적인 구분을 알고 싶다면, 별도의 게시물에 작성했습니다. 요약하자면: 개념 증명은 '구축 가능한지'를 테스트하고, 프로토타입은 '사람들이 이해하는지'를 테스트하며, MVP는 '사람들이 돈을 지불할 의향이 있는지'를 테스트합니다. 이 게시물은 첫 번째 것(개념 증명)에 대해서만 다룹니다.
1단계: 가장 위험한 가정 명명하기
기능 목록부터 시작하지 마세요. 프로젝트 전체를 불가능하게 만들 수 있는 것이 무엇인지 나열하는 것부터 시작하고, 그중 당신을 가장 겁먹게 하는 것을 고르세요.
좋은 후보들:
- 모델이 실제 데이터에서 충분히 정확하지 않다.
- 타사 API가 부하 또는 속도 제한을 처리할 수 없다.
- 고객 시스템과의 통합이 문서에 쓰인 방식대로 작동하지 않는다.
- 아키텍처가 약속한 지연 시간(latency)을 달성할 수 없다.
이것은 위험 우선 사고방식(risk-first thinking)이며, 오래된 개념입니다. Barry Boehm의 1988년 나선형 모델(spiral model)에 대한 논문은 '주로 문서 중심이나 코드 중심이 아닌 소프트웨어 프로세스에 대한 위험 주도적 접근 방식'을 설명했습니다.[https://dl.acm.org/doi/abs/10.1109/2.59] 이 아이디어는 변하지 않았습니다. 가장 큰 불확실성이 있는 곳에 첫 노력을 쏟으세요.
가설(hypothesis)은 틀릴 수 있는 문장으로 작성해야 합니다. '스캔된 PDF에서 최소 90%의 정확도로 송장 총액을 추출할 수 있다'는 가설입니다. '송장 추출 탐색(Explore invoice extraction)'은 아닙니다.
2단계: 구축하기 전에 성공 기준과 종료 임계값 작성하기
이 단계는 팀들이 건너뛰기 쉬우며, 나머지 과정을 정직하게 만드는 핵심 단계입니다.
어떤 코드도 작성하기 전에 다음을 문서로 남기세요:
통과 조건(The pass condition). 숫자 또는 명확한 예/아니오.
실패 조건(The fail condition). 중단할 결과값.
기준이 되는 제약 사항(The constraints that count). 단순히 '작동하는지'가 아니라 품질, 속도, 비용 등.
AWS는 PoC가 '높은 수준의 비즈니스 목표를 구체적이고 측정 가능한 성공 기준으로 번역하는 것'을 요구한다고 말하며, 종료 기준에 대한 가이드라인은 따를 가치가 있습니다. 즉, 품질, 지연 시간(latency), 비용에 대해 명확한 임계값을 설정하고, 결과가 이를 충족하지 못하면 방향을 전환하거나 PoC를 중단하여 낮은 성능이 노력 낭비나 매몰 비용(sunk costs)으로 이어지는 것을 막아야 합니다.
이것을 먼저 문서로 남겨야 하는 이유는 간단합니다. 무언가에 일주일 동안 시간을 쏟으면, 거의 모든 결과가 성공처럼 보이게 만들기 시작합니다. 미리 작성한 임계값은 발생한 상황에 맞추어 구부릴 수 없습니다.
3단계: 시간 제한 두기(Time-box it)
마감 기한이 없는 개념 증명은 프로젝트로 변질됩니다.
익스트림 프로그래밍(Extreme Programming)에는 이러한 종류의 작고 제한적인 실험을 위한 명칭이 있습니다. 바로 스파이크(spike)입니다. XP 규칙에 따르면, 스파이크 솔루션을 "까다로운 기술적 또는 설계 문제를 해결하기 위해" 만들고, 스파이크는 "검토 중인 문제만을 다루고 다른 모든 고려 사항은 무시하도록" 구축해야 합니다. (문법 오류는 Don Wells가 작성한 원본 페이지에 있습니다.) 같은 페이지에서는 개발자 두 명을 "일주일이나 이주 동안" 위협적인 문제에 투입할 것을 제안합니다.
마지막 숫자에 주의하세요. 이것은 PoC(개념 증명)가 얼마나 걸리는지에 대한 측정된 벤치마크라기보다는, 스파이크를 위한 XP의 경험적 지침일 뿐입니다. 저는 PoC 기간이나 비용에 대해 신뢰할 수 있는 출판된 벤치마크를 찾지 못했으므로, 이를 인용하는 사람에게는 의심을 품는 것이 좋습니다. 여러분 자신의 질문에서 시간 제한(time-box)을 정하세요. 얼마나 많은 시간을 들여 알아낼 의향이 있습니까?
4단계: 위험에 접촉하는 가장 얇은 슬라이스 구축하기
이제 구축할 차례이며, 범위를 좁게 유지해야 합니다.
AWS의 지침은 명확하게 제시합니다. PoC의 경우, "핵심 비즈니스 가치를 검증할 수 있는 가장 간단한 방법으로 시작하고," "완전한 엔드투엔드 통합에 투자하기 전에 핵심 구성 요소만 검증"하라고 합니다. 실제로는 다음을 의미합니다:
로그인이 위험 요소가 아니라면 로그인 화면은 필요 없습니다.
인터페이스 자체가 위험 요소가 아니라면 세련된 UI는 필요 없습니다.
중요하지 않은 것은 하드코딩하세요. 중요한 것만 구축하세요.
위험한 부분이 단 하나의 API 호출이라면, 전체 PoC는 그 호출과 결과를 확인할 수 있는 방법으로 구성될 수 있습니다.
여기서 사람들이 혼동하는 구분이 하나 있습니다. 워킹 스켈레톤(walking skeleton)이나 트레이서 불릿(tracer bullets) 같은 일부 얇은 슬라이스 기법은 유지되어 실제 시스템으로 성장하도록 의도된 것입니다. 하지만 PoC는 보통 그렇지 않습니다. 만약 코드를 계속 유지할 계획이라면, 당신은 다른 것을 구축하고 있는 것이므로 그렇게 말해야 합니다.
5단계: 실제 고객 데이터가 아닌 현실적인 데이터를 사용하기
가짜 데이터는 아무것도 알려주지 않습니다. PoC가 다섯 개의 깨끗한 예시에서 통과하더라도 실제 세계가 지저분하다면, 잘못된 것을 배운 것입니다.
AWS는 출력을 알려진 좋은 답변(known-good answers)과 비교하기 위해 고품질 테스트 데이터가 필요하다고 지적합니다. 하지만 또한 사생활 보호에 대한 기본 원칙도 제시합니다: 기본 접근 방식은 합성 데이터 또는 완전 익명화된 데이터를 사용하는 것입니다. 개인 정보가 포함된 실제 데이터가 필요한 경우, 보안 및 법무팀의 명시적인 승인이 먼저 나와야 합니다. AWS의 말에 따르면, 이 단계를 무시하는 것은 “가장 흔한 함정 중 하나”입니다.
따라서 누군가 승인하지 않았다면, 모양과 난이도 면에서 현실적이지만 실제 고객 기록은 아닌 데이터를 목표로 하세요.
동일한 주의는 자격 증명(credentials)에도 적용됩니다. GitGuardian의 State of Secrets Sprawl 2026 보고서에 따르면, 2025년 공개 GitHub 커밋에서 새로운 하드코딩된 비밀번호가 2865만 개로 집계되었으며, 이는 전년 대비 34% 증가한 수치입니다. (GitGuardian은 비밀 감지 도구를 판매하므로 출처를 고려하세요.) 프로토타입 코드는 키가 “일단만” 붙여넣어지는 바로 그곳입니다. 임시 데모 자격 증명을 사용하고 실제 키는 저장소(repo) 밖에 두세요. 만약 AI 도구가 PoC의 일부를 작성한다면, 일반적으로 뒤따르는 보안 문제들—조작된 패키지, 하드코딩된 비밀번호, 열린 데이터베이스—에 대해 다루었습니다.
6단계: 임계값(threshold)을 기준으로 측정하고 결정하기
시간 제한이 끝나면 2단계에서 작성한 테스트를 실행하세요. 지금 임계값을 변경하지 마세요.
AWS는 PoC의 종료를 의사결정 게이트(decision gate)로 설명합니다: “이것은 직관을 위한 순간이 아닙니다. 추가 투자를 진행할지, 접근 방식을 전환할지, 아니면 프로젝트를 중단할지를 결정하는 구조화된 평가입니다.” 이는 세 가지 정직한 결과—
- 진행 (Go). 위험한 부분이 임계값(threshold) 내에서 작동하며, 실제 구현으로 가는 명확한 경로가 있습니다.
- 방향 전환 (Pivot). 거의 작동하거나 예상과 다르게 작동하여 접근 방식을 변경합니다.
- 중단 (Stop). 기준을 통과하지 못했습니다. 이것도 좋은 결과입니다. 분기(quarter) 대신 일주일 만에 알아냈으니까요.
AWS는 또한 '진행' 결정이 단순히 열정이 아니라 증거를 바탕으로 이루어져야 한다고 지적합니다. '예'라는 것에 대한 유일한 뒷받침이 모두가 '예'를 원한다는 사실이라면, 그것이 바로 당신의 답입니다.
7단계: 배운 것을 문서화하고, 코드의 향방을 결정하세요
어떤 결과든 상관없이 한 페이지 분량의 요약본을 작성하세요. 질문, 임계값, 결과, 그리고 무엇이 놀라웠는지에 대한 내용입니다. AWS는 이렇게 말합니다. 어떤 PoC도 완벽하지 않으며, 핵심 결과물은 주요 학습 목록이어야 합니다. 어떤 가정이 틀렸나요? 어떤 새로운 어려움을 발견했나요?
그런 다음 의도적으로 코드를 처리하세요. 저는 개념 증명(PoC) 코드는 프로덕션 환경으로 가지 않는 것이 기본 원칙입니다. Martin Fowler의 '희생적 아키텍처(Sacrificial Architecture)'는 나중에 교체할 것을 알면서 무언가를 구축하는 것과 관련하여 비슷한 점을 지적합니다. 즉,
현재 많은 개념 증명(Proof of Concept, PoC)가 AI 기능에 관한 것이며, 실패 통계는 느슨하게 인용되는 경우가 많습니다. 따라서 제가 신뢰하는 두 가지 자료와 그들이 실제로 말하는 바를 알려드립니다.
Gartner는 2024년 7월 29일자 보도 자료에서 "Generative AI (GenAI) 프로젝트 중 최소 30%가 개념 증명 이후인 2025년 말까지 폐기될 것"이라고 예측했습니다. 그들은 데이터 품질 문제, 부적절한 위험 통제, 비용 증가 또는 불분명한 비즈니스 가치를 근거로 들었습니다. 이것은 측정치가 아닌 예측입니다.
S&P Global Market Intelligence는 실제로 무언가를 측정했습니다. 2025년 10월 연구에서 그들은 생산 단계 이전에 대부분의 AI 이니셔티브를 포기하는 기업의 비율이 17%에서 42%로 증가했으며, 평균 조직은 개념 증명 프로젝트의 46%를 생산 전에 폐기했다고 밝혔습니다. 이는 설문조사 기반이며 생성형 AI뿐만 아니라 일반적인 AI 이니셔티브를 다룹니다.
어떤 수치도 AI PoC가 실패할 운명이라는 것을 의미하지는 않습니다. 이 수치들은 작동하는 데모와 실제 배포된 시스템 사이의 간극이 크다는 것을 말하며, 그들이 나열한 이유들(나쁜 데이터, 약한 위험 통제, 비용, 불분명한 가치)은 Steps 1, 2, 그리고 5가 초기에 드러내도록 설계된 것들입니다.
AI 기능의 경우, Step 2는 구체적인 형태를 갖습니다. 신뢰할 수 있는 정답이 포함된 레이블링된 테스트 세트를 구축하고, 실행하기 전에 통과 임계값(pass threshold)을 설정하며, 요청당 비용과 정확도를 추적하는 것입니다. AWS가 제시한 생성형 AI PoC 가이드라인은 바로 이러한 종류의 검증된 참조 데이터와 품질, 지연 시간(latency), 비용에 대한 명확한 임계값을 요구합니다.
저희 프로세스가 적용되는 방식
저희 개념 증명 개발 서비스는 네 단계로 진행됩니다: 범위 논의(scope call), AI 기반 구축, 다듬기 및 배포, 그리고 인계입니다. 이는 고정 가격 패키지이며, 최대 5개 화면을 기준으로 999달러부터 시작하여 72시간 내에 제공됩니다. 이 일정은 업계 표준이 아닌 저희 자체의 제안입니다.
이는 위의 단계들과 다음과 같이 연결됩니다: 범위 논의는 Steps 1과 2가 이루어지는 곳입니다(무엇을 증명할 것인가, 그리고 무엇이 성공으로 간주되는가). 구축 과정은 Steps 3과 4이며, 인계는 Steps 6과 7을 다룹니다.
솔직히 말씀드리자면, 앞서 게시한 정의를 사용하자면, 저희가 72시간 안에 제공하는 것은 투자자들에게 실제로 보여줄 수 있는 클릭 가능한 프로토타입입니다. 이는 '사람들이 이것을 이해할 수 있을까?'라는 질문에 답할 뿐이지, '어려운 기술적인 부분이 구축될 수 있을까?'라는 질문에는 답하지 못합니다. 만약 가장 위험한 가정이 모델 정확도나 통합과 같은 기술적인 것이라면, 2단계와 6단계에서 나오는 합격/불합격 테스트가 필요하며, 클릭 가능한 빌드로는 이를 알 수 없습니다. 따라서 리스크에 맞는 프로세스를 선택해야 합니다.
원페이지 체크리스트
시작하기 전에 다음 모든 항목을 채울 수 있어야 합니다:
- 가정(Assumption): 무엇이 이것을 불가능하게 만들 수 있을까?
- 가설(Hypothesis): 틀릴 수 있는 한 문장.
- 합격선과 실패선(Pass line and the fail line): 숫자로 작성해야 합니다.
- 시간 제한(Time-box): '언제 끝날지'가 아니라 날짜로 정합니다.
- 데이터(Data): 현실적이며 사용 승인을 받은 데이터.
- 결정(Decision): 진행할지, 방향을 전환할지, 아니면 중단할지, 그리고 누가 결정하는지.
- 코드 계획(Code plan): 이후 저장소(repo)는 어떻게 할 것인지.
만약 이 중 하나라도 채울 수 없다면, 빌드할 준비가 된 것이 아닙니다. 단지 그것에 대해 한 시간 더 이야기할 준비가 된 것입니다.
핵심 요점
개념 증명(PoC)은 명확한 질문과 솔직한 끝맺음을 가진 작은 실험입니다. 구축하는 것은 쉬운 부분입니다. 어려운 부분은 리스크를 명명하고, 결과를 보기 전에 임계값을 작성하며, 데이터가 그렇게 말할 때 '중단'을 받아들이는 것입니다.
이것들을 수행한다면, 개념 증명이 실패하더라도 그것 자체가 성공입니다. 싸게 알아냈기 때문입니다.