1. 스파게티 코드와 AI 망각, 대형 프로젝트의 적
우리는 RLHF/DPO 알고리즘을 통해 인간의 의도를 잘 파악하게 된 AI를 활용하여, 비개발자가 Cursor나 n8n 같은 도구로 ‘바이브 코딩’을 하는 방법에 대해 알아보았다. 하지만 랜딩 페이지 한 장이나 간단한 자동화 봇을 만드는 것과, 실제 사용자가 가입하고 결제하는 ‘대규모 서비스’를 만드는 것은 차원이 다른 이야기이다. 비개발자가 바이브 코딩으로 규모 있는 프로젝트를 진행할 때 가장 큰 적은 바로 ‘스파게티 코드(복잡하게 꼬인 코드)’와 ‘AI의 망각’이다.
서비스 규모가 커질수록 파일의 수는 많아지고 코드량은 방대해진다.
이때 AI에게 단순히 “이어서 짜줘”라고 하면, AI는 이전 대화의 맥락이나 전체 프로젝트의 구조를 놓치기 시작한다. 앞뒤가 안 맞는 코드를 내놓거나, 방금 수정한 코드를 다음 질문에서 다시 예전 버전으로 되돌려버리는 일이 허사로 발생한다.
심지어는 이 파일에서 쓴 변수명을 저 파일에서 다르게 써서 시스템을 망가뜨리기도 한다. 이 문제를 해결하지 못하면 바이브 코딩은 결국 실패로 끝나게 된다. 따라서 성공적인 빌드를 위해서는 비개발자만의 체계적인 전략이 필요하다.
참고 사항
- 대규모 서비스는 수많은 파일과 복잡한 로직으로 구성됨
- AI의 컨텍스트 윈도우(기억력)는 한계가 있어 맥락을 잃기 쉬움
- 비개발자는 AI가 짠 코드를 유지보수할 수 없으므로 처음부터 잘 짜야 함
2. 체크리스트 1, 2: 설계와 쪼개기의 기술
성공적인 대규모 서비스 바이브 코딩을 위한 첫 번째 단계는 ‘설계’이다. AI에게 바로 코드를 짜달라고 하기 전에, 서비스의 전체 구조를 먼저 정의하는 ‘지도 그리기’ 작업이 필수적이다.
[ ] 설계 단계 체크리스트
- 기능 명세서 작성: 어떤 기능이 필수인지 리스트를 만들었는가? (예: 회원가입, 게시판, 결제 등)
- 데이터 구조(DB) 정의: 어떤 정보가 저장되어야 하는지 AI와 먼저 상의했는가? (“이 서비스에 필요한 데이터 테이블 구조를 SQL로 먼저 짜줘”라고 요청하세요.)
- 기술 스택 확정: 나중에 수정하기 매우 어렵습니다. AI가 가장 많이 학습하여 잘 짜는 조합(예: Next.js + Supabase)으로 시작해야 합니다.
두 번째 단계는 ‘쪼개기(Modularization)’이다. 한 번에 “인스타그램 같은 앱 만들어줘”라고 요청하는 것은 실패의 지름길이다. AI도 한계가 있으므로, 작게 쪼개서 정복해야 한다.
[ ] 소통 단계 체크리스트
- 기능 단위 요청: “오늘은 로그인 화면만 완벽하게 만들자”처럼 범위를 극한으로 좁혔는가?
- 파일 분리 요청: “모든 코드를 한 파일에 넣지 말고, 기능별로 파일을 나눠서 관리해줘”라고 지시했는가? (파일이 커지면 AI가 코드를 읽다가 앞부분을 잊어버리게 됩니다.)
- 중간 검사(Checkpoint): 한 기능의 구현이 끝날 때마다 실제로 구동해보고 버그가 없는지 확인했는가? (버그를 쌓아두면 나중에 고칠 수 없습니다.)
3. 체크리스트 3: 문서화와 일관성, AI의 기억을 붙잡다
대규모 서비스가 진행될수록 AI는 과거의 결정을 잊어버린다. 이를 보완하기 위해 우리는 AI에게 끊임없이 ‘기억’을 제공해야 한다. 이것이 세 번째 핵심 전략이다.
[ ] 유지보수 단계 체크리스트
- 문서화(Documentation) 요청: “지금까지 만든 전체 구조와 파일별 역할을 요약해서
README.md파일에 정리해줘”라고 시켰는가? - 맥락 갱신: 새 대화를 시작할 때 이
README.md파일과 주요 데이터 구조 파일을 먼저 먹여주며 맥락을 갱신했는가? - 일관성 유지: 코드 수정 시 “방금 수정한 방식이 기존의 다른 파일들과 충돌하지 않는지 확인해줘”라고 명시적으로 물었는가?
- 규칙 설정: Cursor 같은 도구를 쓴다면, “변수명은 영문 낙타표기법(camelCase)을 쓰고, 에러 처리는 반드시 포함하라”는 등의 지침 파일(
.cursorrules)을 만들어 프로젝트 루트에 두었는가?
대화 예시 사항
- 나: “기존 코드를 보여줄게. 이 구조를 유지하면서 회원가입 기능을 추가해줘.”
- AI: (코드를 분석하여 일관성 있는 코드를 생성함)
특히 문서화 요청은 비개발자에게 가장 중요하다. AI가 스스로 짠 코드를 요약하게 만들고, 그 요약본을 다음 대화의 입력으로 사용함으로써 AI의 망각 문제를 상당 부분 해결할 수 있다는 것이다.
4. 관리자가 되어 AI를 ‘지휘’하라
비개발자가 바이브 코딩으로 대규모 서비스를 만들 때 직면하는 스파게티 코드와 AI 망각 문제, 그리고 이를 해결하기 위한 3단계 필수 체크리스트(설계, 쪼개기, 문서화/일관성)를 알아보았다. 바이브 코딩으로 규모 있는 서비스를 만든다는 것은 내가 개발자가 되는 것이 아니라, ‘소프트웨어 프로젝트 관리자(PM)’가 되는 것이다.
바이브 코딩 핵심 팁
- 비판적 피드백: AI가 짠 코드가 맘에 안 들면 “더 효율적인 구조로 다시 짜”라고 비판해야 함
- 작업 흐름: 기획(설계도) -> 환경 설정 -> 기능별 반복(구현-테스트-문서화) -> 통합
비개발자는 코드를 칠 필요가 없다. 하지만 AI가 그린 지도가 올바른지, AI가 쪼개서 만든 블록들이 일관성 있게 조립되고 있는지 ‘지휘’해야 한다. 설계도를 먼저 확정하고, 아주 작은 단위로 작업을 요청하며, 끊임없이 문서화를 통해 AI의 맥락을 연결하는 것, 이것이 바로 비개발자가 AI와 함께 거대한 성을 쌓아올리는 유일한 방법이다.