01
화면 공유가 왔습니다
화면 공유로 자신이 만든 앱을 보여주는 장면

줌 화면 공유가 켜졌습니다.

"이거 제가 만들었는데요, 한번 봐주실 수 있나요?"

●●● 분야 예약 서비스였습니다. 화면은 깔끔했습니다. 리스트가 뜨고, 필터가 작동하고, 예약 버튼을 누르면 확인 화면까지 넘어갔습니다. Cursor로 3주 만에 만들었다고 했습니다.

"혼자서 여기까지 하셨어요?"

"네. 유튜브 보면서요."

솔직히 놀랐습니다. 3주 전까지 코드를 한 줄도 못 쓰던 분이었습니다. 예비창업패키지에 선정되면 개발비로 쓸 계획이었는데, 기다리는 동안 직접 만들어본 거였습니다.

그런데 목소리가 밝지 않았습니다.

"여기까지는 됐는데, 여기서부터 안 됩니다."

02
로컬에서는 완벽했습니다

화면을 더 보여달라고 했습니다.

로컬에서는 전부 돌아가고 있었습니다. 데이터가 뜨고, 검색이 되고, 예약이 저장됐습니다. 디자인도 나쁘지 않았습니다. AI가 만들어준 UI 컴포넌트를 잘 조합해놓은 상태였습니다.

"이거 그대로 올리면 되는 거 아닌가요?"

이 질문이 핵심이었습니다.

로컬에서 돌아가는 것과 서비스로 돌아가는 것은 다릅니다. 내 컴퓨터에서 localhost:3000으로 뜨는 것과, 누군가가 주소를 치고 들어와서 회원가입하고 결제하는 것은 완전히 다른 영역입니다.

그 차이를 아직 모르고 계셨습니다.

그게 당연합니다. 유튜브에서 "Cursor로 앱 만들기"를 검색하면, 로컬에서 돌아가는 순간까지만 보여줍니다. 그 이후는 영상이 끝납니다.

03
"배포하면 되는 거 아닌가요?"

하나씩 확인해봤습니다.

데이터베이스. 로컬 SQLite에 저장되고 있었습니다. 컴퓨터를 끄면 사라지는 구조였습니다. 사용자 100명이 동시에 쓰면 어떻게 되느냐고 물었습니다. 생각해본 적 없다고 했습니다.

인증. 로그인이 없었습니다. 누구나 아무 데이터나 볼 수 있었습니다. "로그인은 나중에 붙이면 되지 않나요?" 나중에 붙이는 게 아닙니다. 처음부터 설계해야 합니다.

결제. 예약 확인 버튼은 있었지만, 돈이 오가는 구조는 없었습니다. 결제 연동은 Cursor에게 시켜봤지만 에러만 나왔다고 했습니다.

서버. 어디에 올릴지 정해진 게 없었습니다. Vercel이라는 이름을 들어봤는데, 프론트엔드만 올릴 수 있다는 걸 그때 알았다고 했습니다.

네 가지 모두, 바이브코딩 유튜브에서 다루지 않는 영역이었습니다.

로컬에서 완성된 것 vs 서비스에 필요한 것 — 빠져 있는 6가지

화면은 완성됐지만, 서비스에 필요한 6가지가 빠져 있었습니다.

대표님이 한동안 말이 없었습니다.

"그러면 이거 다 버려야 하는 건가요?"

이 질문이, 이 글의 핵심입니다.

04
코드를 열어봤습니다
나란히 앉아 화면을 같이 보는 장면

GitHub 링크를 받았습니다. 코드를 열어봤습니다.

파일이 47개였습니다. AI가 생성한 코드 특유의 패턴이 보였습니다. 같은 로직이 세 군데에 복사돼 있었고, 에러 처리가 하나도 없었습니다. 변수 이름이 data1, data2, data3이었습니다.

그런데 구조가 나쁘지 않았습니다.

컴포넌트가 화면 단위로 잘 나뉘어 있었습니다. 라우팅도 정리돼 있었습니다. AI한테 지시를 잘 내린 거였습니다. "예약 목록 페이지 만들어줘", "필터 기능 추가해줘" — 이런 식으로 한 화면씩 만들었더니, 우연히 구조가 잡힌 거였습니다.

살릴 수 있겠다고 판단했습니다.

전부는 아닙니다. UI 컴포넌트와 페이지 구조는 살릴 수 있었습니다. 하지만 데이터를 다루는 부분, 서버와 통신하는 부분, 인증과 결제 — 이건 새로 짜야 했습니다.

대표님에게 말씀드렸습니다.

"앞쪽은 살립니다. 뒤쪽은 새로 만듭니다."

05
살릴 수 있는 것, 다시 짜야 하는 것

분류를 시작했습니다.

살리는 것. 화면 디자인, 페이지 구조, 검색 필터 UI, 예약 폼 레이아웃. 대표님이 3주 동안 AI와 씨름하면서 만든 화면이었습니다. 이걸 버리면 3주가 날아갑니다. 버릴 이유가 없었습니다.

다시 짜는 것. 데이터베이스 설계, API 서버, 회원 인증, 결제 연동, 배포 인프라. 이건 AI가 만들어줄 수 없는 영역이었습니다. 정확히 말하면, AI가 만들어주긴 합니다. 하지만 실제 사용자가 쓰면 터집니다.

비율로 보면 이랬습니다.

전체 코드의 약 40%는 살렸습니다. 60%는 새로 짰습니다. 하지만 40%를 살렸다는 건, 처음부터 만드는 것보다 시간이 절반 가까이 줄었다는 뜻이었습니다.

바이브코딩으로 만든 코드를
전부 버리는 건 낭비입니다.
전부 살리는 건 위험입니다.

대표님이 물었습니다.

"그러면 제가 만든 게 쓸모없었던 건 아닌 거죠?"

쓸모없지 않았습니다. 3주 동안 직접 만들면서, 본인이 원하는 서비스가 뭔지 정확히 알게 된 겁니다. 기획서 열 장보다 명확했습니다. "이 화면에서 이 버튼을 누르면 이렇게 되어야 한다"를 코드로 보여준 거였습니다.

보통 외주 프로젝트에서 가장 오래 걸리는 게 뭔지 아십니까.

코드를 짜는 시간이 아닙니다. 대표님 머릿속에 있는 걸 개발자가 이해하는 시간입니다. 바이브코딩으로 만든 프로토타입은, 그 시간을 0으로 만들어줬습니다.

06
처음부터 다시 만들지 않았습니다

작업을 시작했습니다.

대표님이 만든 화면은 그대로 두고, 뒤쪽을 붙여나갔습니다. 데이터베이스를 설계하고, API를 만들고, 화면과 서버를 연결했습니다. 대표님이 만든 "예약 버튼"을 누르면 진짜로 예약이 저장되게. "필터"를 누르면 진짜로 서버에서 검색이 되게.

매일 진행 상황을 공유했습니다.

"오늘 회원가입이 붙었습니다. 내일은 예약 저장입니다."

대표님이 직접 만든 화면 위에서, 진짜 데이터가 움직이기 시작하는 걸 보는 표정이 달랐습니다. 남이 만든 화면이 아니었습니다. 본인이 3주 동안 씨름해서 만든 화면이었습니다. 거기서 진짜 사용자 데이터가 흘러가기 시작한 겁니다.

"이게 진짜 되는 거예요?"

됩니다. 되게 만든 겁니다.

07
2주 뒤

2주 뒤, 서비스가 올라갔습니다.

도메인을 연결하고, SSL 인증서를 붙이고, 서버를 세팅했습니다. 주소를 치면 화면이 뜨고, 회원가입이 되고, 예약이 저장되고, 알림이 갔습니다.

대표님이 휴대폰으로 접속해봤습니다. 본인이 만든 화면이 폰에 떴습니다.

한동안 말이 없었습니다.

"3주 동안 혼자 만들 때는, 이게 될까 싶었거든요."

됐습니다.

바이브코딩이 쓸모없었던 게 아닙니다. 바이브코딩은 아이디어를 눈에 보이게 만들어줬습니다. 거기서 멈췄을 뿐입니다. 멈춘 지점부터 이어서 가면 됩니다.

혼자 만든 3주 + 같이 만든 2주 = 서비스 런칭까지 5주

3주를 버린 게 아닙니다. 3주 위에 2주를 얹은 겁니다.

멈춘 자리에서 다시 시작하면 됩니다.
처음부터 다시 만들 필요는 없습니다.

지금 Cursor나 Lovable로 만든 게 있는데 멈춰 있다면.

거기서부터 같이 가면 됩니다.

만든 게 있으면 거기서부터 시작합니다
프로토타입이 있으면 비용과 시간이 줄어듭니다.
비용 알아보기