[팁]바이브코딩으로 웹서비스를 만들었다면, 배포 전에 이 9가지는 확인하세요
요즘은 Claude Code, Codex, Cursor 같은 AI 코딩 도구를 이용하면 개발 경험이 많지 않아도 웹서비스를 만들 수 있습니다.
그런데 화면이 정상적으로 작동한다는 것과 실제 사용자에게 공개해도 안전하다는 것은 전혀 다른 이야기입니다.
특히 로그인, 데이터베이스, 결제, AI API를 연결한 서비스라면 배포 전에 확인해야 할 부분이 있습니다.
처음 서비스를 출시하는 분들을 위해 체크리스트를 정리했습니다.
1. API 키가 외부에 노출되어 있지 않은가?
AI API나 결제 시스템을 연결했다면 가장 먼저 확인해야 합니다.
- 비밀 API 키를 소스코드에 직접 작성하지 않았는가?
-
.env파일이 GitHub에 올라가지 않았는가? - 서버 전용 키를 브라우저에서 사용하고 있지 않은가?
- GitHub에 실수로 공개했던 키는 폐기하고 재발급했는가?
Next.js에서는 NEXT_PUBLIC_ 접두사가 붙은 환경변수가 브라우저에 포함될 수 있습니다.
API 키가 환경변수에 저장되어 있다는 이유만으로 안전한 것은 아닙니다.
이미 Git 기록에 올라간 키는 .gitignore를 추가하는 것만으로 해결되지 않습니다.
2. 다른 사용자의 데이터를 볼 수 없는가?
Supabase를 사용하는 서비스라면 특히 중요합니다.
예를 들어 사용자 A의 개인 메모를 사용자 B가 읽거나 수정할 수 있다면 심각한 문제입니다.
다음 사항을 확인하세요.
- 사용자별 데이터 접근 권한을 설정했는가?
- 필요한 테이블에 RLS(Row Level Security)를 활성화했는가?
- 데이터베이스의 역할별 권한(Grants)을 적절하게 제한했는가?
- 다른 계정으로 실제 접근 테스트를 진행했는가?
가장 간단한 테스트
- 계정 A와 계정 B를 생성합니다.
- A에서 비공개 데이터를 만듭니다.
- B로 로그인합니다.
- B가 A의 데이터를 조회, 수정, 삭제할 수 있는지 확인합니다.
로그인 기능이 구현되어 있어도 데이터 접근 권한이 제대로 설정되어 있지 않으면 안전하지 않습니다.
3. 관리자 기능이 서버에서도 보호되는가?
관리자 페이지의 버튼을 숨기는 것과 관리자 권한을 보호하는 것은 다릅니다.
- 관리자 API에서 서버 측 권한을 검사하는가?
- 일반 사용자가 관리자용 요청을 직접 호출할 수 없는가?
- 다른 사용자의 ID를 입력해 데이터를 변경할 수 없는가?
AI가 작성한 코드에 프론트엔드의 조건문만으로 권한을 구분하는 부분이 없는지 확인해 보세요.
4. 사용자 입력과 파일 업로드를 검증하는가?
게시글 작성, 댓글, 프로필 사진 업로드 같은 기능이 있다면 확인해야 합니다.
- 서버에서 입력값의 형식과 크기를 검증하는가?
- 사용자 입력을 안전하게 처리해 XSS 및 인젝션을 방지하는가?
- 업로드 파일의 형식과 용량을 제한하는가?
- 업로드 파일에 대한 접근 권한을 설정했는가?
클라이언트의 입력 제한만으로는 충분하지 않습니다. 서버에서도 검증해야 합니다.
5. 과도한 요청으로 비용이 발생하지 않는가?
AI 기능이나 유료 외부 API를 연결했다면 반드시 확인해야 합니다.
- API에 요청 횟수 제한(Rate Limiting)이 있는가?
- 사용자별 사용량 제한을 설정했는가?
- 외부 API 비용을 모니터링하는가?
- 비정상적인 사용량 증가에 대응할 수 있는가?
예를 들어 사용자가 버튼을 반복 클릭하거나 자동화된 요청을 보내면 예상하지 못한 API 비용이 발생할 수 있습니다.
무료 서비스라도 운영 비용은 무료가 아닐 수 있습니다.
6. 개발 환경과 실제 운영 환경을 구분했는가?
Vercel 등에서는 개발, 미리보기, 운영 환경에 서로 다른 환경변수를 설정할 수 있습니다.
- 테스트 데이터베이스와 운영 데이터베이스를 구분했는가?
- 테스트용 API 키가 운영 환경에 남아 있지 않은가?
- 운영 환경변수를 올바르게 설정했는가?
- 변경 사항을 실제 배포 환경에서 다시 검증했는가?
환경변수를 수정한 후에는 새로운 배포가 필요한 경우도 있습니다.
7. 오류가 발생했을 때 복구할 수 있는가?
정상 작동뿐 아니라 실패 상황도 테스트해야 합니다.
- API 응답이 지연되면 사용자에게 안내하는가?
- 데이터 저장 실패 시 적절한 오류를 표시하는가?
- 서버 오류를 확인할 수 있는 로그가 있는가?
- 로그에 비밀번호, 토큰 등 민감정보가 기록되지 않는가?
정상적인 경로만 테스트하지 말고 네트워크 오류, 잘못된 입력, 중복 요청도 확인하세요.
8. 모바일에서도 사용할 수 있는가?
개발할 때는 데스크톱 브라우저만 확인하기 쉽습니다.
- 모바일 화면에서 텍스트와 버튼이 잘 보이는가?
- 작은 화면에서도 주요 기능을 사용할 수 있는가?
- 버튼이나 입력창이 화면 밖으로 넘어가지 않는가?
- 로딩 상태와 오류 메시지를 확인할 수 있는가?
가능하다면 실제 스마트폰에서도 직접 테스트해 보세요.
9. 데이터 백업과 복구 방법을 확인했는가?
서비스를 공개한 후 사용자 데이터가 쌓이기 시작하면 백업의 중요성이 커집니다.
- 데이터베이스 백업 정책을 확인했는가?
- 파일 스토리지도 별도로 백업해야 하는지 확인했는가?
- 실수로 데이터를 삭제했을 때 복구할 방법이 있는가?
- 복구 과정을 실제로 테스트해 봤는가?
백업이 존재하는 것과 정상적으로 복구할 수 있는 것은 다릅니다.
보너스: AI 코딩 에이전트에 바로 붙여 넣을 점검 프롬프트
아래 프롬프트를 현재 프로젝트에서 사용해 볼 수 있습니다.
현재 프로젝트를 실제 사용자에게 공개하기
전에 배포 준비 상태를 점검해 주세요.
다음 항목을 검토하세요.
1. API 키 및 환경변수 노출
2. 인증 및 사용자별 접근 권한
3. 데이터베이스 RLS 및 권한 설정
4. 입력 검증과 파일 업로드 보안
5. API Rate Limiting 및 비용 제한
6. 개발/운영 환경 분리
7. 오류 처리와 로깅
8. 모바일 반응형 UI
9. 데이터 백업 및 복구
각 문제에 대해 다음을 보고하세요.
- 위험 수준: Critical / High / Medium / Low
- 문제가 있는 파일 및 코드 위치
- 실제로 발생할 수 있는 문제
- 수정 방법
- 직접 검증할 수 있는 테스트 방법
확인하지 못한 항목은 '미검증'으로
표시하고 안전하다고 가정하지 마세요.
먼저 진단 보고서만 작성하고,
내 승인 없이 코드를 수정하거나
배포하지 마세요.
AI의 코드 리뷰는 점검을 돕는 수단입니다. 실제 서비스의 보안과 안정성은 별도 테스트를 통해 확인해야 합니다.
참고할 만한 공식 문서
- OWASP Top 10:2025 — 웹 애플리케이션 주요 보안 위험
- Supabase Row Level Security — 데이터 접근 권한 설정
- GitHub: Removing Sensitive Data — 유출된 비밀정보 대응
- Vercel Environment Variables — 환경변수 및 배포 환경 관리
마치며
바이브코딩 덕분에 아이디어를 실제 서비스로 구현하는 장벽은 크게 낮아졌습니다.
하지만 코드를 빠르게 만드는 능력과 안정적으로 서비스를 운영하는 능력은 별개입니다.
처음부터 모든 것을 완벽하게 구현할 필요는 없지만, 사용자 데이터와 보안에 영향을 주는 문제는 출시 전에 확인하는 것이 좋습니다.
여러분은 바이브코딩으로 서비스를 만들면서 어떤 문제를 가장 많이 겪으셨나요?
댓글로 경험이나 추가 체크리스트를 공유해 주세요.
다른 빌더들에게도 도움이 될 것 같습니다.
댓글 0
불러오는 중…