coredot.today
바이브코딩 특집: 30분 만에 환자 데이터가 열린 이유
블로그로 돌아가기
Vibe CodingAI 코딩보안AI 에이전트소프트웨어 엔지니어링개인정보OWASPClaude CodeCodex

바이브코딩 특집: 30분 만에 환자 데이터가 열린 이유

바이브코딩은 소프트웨어 개발의 장벽을 낮춘 혁명인가, 아니면 무지한 배포를 가속하는 위험한 유행인가. Tobias Brunner가 공개한 환자 관리 시스템 사고를 출발점으로, Copilot에서 Codex·Claude Code까지 이어진 AI 코딩의 역사, 최신 논문들이 말하는 장점과 위험, 그리고 실무자가 반드시 지켜야 할 안전 경계를 깊이 있게 정리한다.

코어닷투데이2026-04-1660

들어가며: "AI로 환자 관리 시스템을 만들었습니다"

AI 코딩 에이전트가 만든 앱 뒤로 환자 데이터베이스가 인터넷에 노출되는 장면

2026년 3월 28일, 스위스의 엔지니어 Tobias Brunner는 짧지만 강렬한 글을 공개했다. 제목은 An AI Vibe Coding Horror Story. 한 의료 현장에서 실제로 겪은 이야기였다.

상황은 이렇다. 의료 예약을 위해 방문한 곳에서, 친절한 담당자가 "요즘은 AI로 누구나 소프트웨어를 쉽게 만들 수 있다"는 영상을 봤다고 말했다. 그 아이디어는 곧바로 실행으로 이어졌다. 검증된 환자 관리 솔루션을 쓰는 대신, AI 코딩 에이전트에게 직접 환자 관리 앱을 만들게 한 것이다.

그리고 거기에 기존 환자 데이터를 넣었다. 인터넷에 공개했다. 진료 중 대화 녹음 기능도 붙였다. 음성은 자동 전사와 요약을 위해 외부 AI 서비스 두 곳으로 보내졌다.

며칠 뒤 Brunner가 앱을 살펴봤다. 약 30분 만에 그는 전체 환자 데이터에 대한 읽기·쓰기 권한을 얻었다. 데이터는 암호화되지 않았고, 접근 제어는 서버가 아니라 브라우저 안의 JavaScript에 있었다. 백엔드는 관리형 데이터베이스였지만 Row-Level Security도, 권한 정책도 없었다. 의료 데이터가 미국 서버에 저장됐고, 데이터 처리 계약도 확인되지 않았다.

이 사건은 단순한 버그가 아니다. AI가 코드를 잘못 쓴 사건도 아니다. 더 정확히는, 소프트웨어가 무엇인지 모르는 사람이 AI를 통해 소프트웨어를 배포한 사건이다.

바이브코딩의 진짜 위험은 여기에 있다. 화면은 돌아간다. 버튼은 눌린다. 데이터도 저장된다. 그래서 만든 사람은 "완성됐다"고 느낀다. 하지만 실제 소프트웨어의 핵심은 화면 뒤에 있다. 인증, 권한, 데이터 위치, 암호화, 감사 로그, 장애 복구, 법적 책임, 운영 절차. 이 보이지 않는 것들이 빠지는 순간, 앱은 제품이 아니라 사고 대기 상태가 된다.

이 글은 바이브코딩을 조롱하기 위한 글이 아니다. 오히려 반대다. 바이브코딩은 분명 중요한 전환이다. 개발의 장벽을 낮추고, 도메인 전문가가 직접 아이디어를 실험하게 만들며, 숙련 개발자의 반복 작업을 크게 줄인다. 문제는 프로토타입의 속도프로덕션의 책임을 구분하지 못할 때 생긴다.


제1장: 바이브코딩이란 무엇인가

바이브코딩(vibe coding)은 한 줄로 말하면 자연어 대화로 의도를 설명하고, AI가 그 의도를 코드로 번역하게 하는 개발 방식이다.

전통적 프로그래밍에서는 사람이 세부 구현을 명령한다. 변수, 함수, 타입, 조건문, 데이터베이스 쿼리, 에러 처리까지 사람이 쓴다. AI 보조 코딩에서는 이 중 일부를 자동완성한다. 반면 바이브코딩에서는 사람이 "이런 느낌의 앱을 만들어줘", "관리자 화면에서 예약을 수정할 수 있게 해줘", "로그인 붙여줘"처럼 목표를 말한다. AI는 구조를 추론하고 파일을 만들고 라이브러리를 고르고 코드를 작성한다.

구분전통적 코딩AI 보조 코딩바이브코딩
사람의 역할구현자구현자 + 검토자의도 제시자 + 감독자
입력 방식코드코드와 짧은 프롬프트자연어 대화
AI의 역할없음자동완성, 함수 생성설계, 구현, 수정, 디버깅까지 수행
강점통제와 이해반복 작업 감소빠른 실험과 접근성
위험느림부분적 과신이해 없는 배포, 책임 공백

2025년 2월, Andrej Karpathy가 이 표현을 대중화했다. 그는 Cursor Composer와 Claude Sonnet 같은 도구가 좋아지면서, 코드 자체를 잊고 대화의 흐름에 몸을 맡기는 새로운 코딩 경험이 가능해졌다고 설명했다. 중요한 것은 "코드를 아예 몰라도 된다"는 선전 문구가 아니라, 프로그래밍의 중심이 문법에서 의도 전달로 이동했다는 점이다.

Meske 등은 2025년 논문 Vibe Coding as a Reconfiguration of Intent Mediation에서 이 변화를 "의도 중개(intent mediation)의 재구성"으로 설명한다. 과거 개발자는 머릿속 목표를 결정론적 명령어로 번역했다. 이제는 목표를 자연어로 설명하고, AI가 확률적으로 그 의도를 추론해 실행 가능한 코드로 만든다.

이 차이는 작아 보이지만, 실제로는 거대하다.

과거 사람의 의도 사람이 코드로 번역 컴퓨터 실행
현재 사람의 의도 AI가 코드로 추론 사람이 검증

문제는 마지막 단계다. 사람이 검증하지 못하면, 바이브코딩은 "의도 기반 개발"이 아니라 "의도 기반 도박"이 된다.

바이브코딩에서 프로토타입과 프로덕션의 책임 차이를 비교한 한국어 설명 이미지

이 그림처럼 바이브코딩의 핵심 구분은 "AI로 만들었는가"가 아니라 어디까지 배포했는가다. 더미 데이터로 로컬에서 확인하는 단계는 학습이다. 실제 고객 데이터와 운영 DB가 연결되는 순간부터는 제품이 아니라 시스템이고, 시스템에는 보안·법·운영 책임이 붙는다.


제2장: Copilot에서 코딩 에이전트까지

바이브코딩은 갑자기 등장하지 않았다. 2021년부터 이어진 AI 코딩의 자연스러운 다음 단계다.

2021년: Copilot, 자동완성의 충격

2021년 6월, GitHub는 GitHub Copilot 기술 프리뷰를 공개했다. 당시 Copilot은 "AI pair programmer"로 소개됐다. 개발자가 코드를 쓰는 동안 문맥을 읽고 다음 줄이나 함수 전체를 제안했다.

이때의 AI는 운전석에 앉지 않았다. 조수석에서 제안했다. 개발자는 제안을 받아들이거나 거절했다. 실수해도 범위가 비교적 작았다. 하지만 이미 중요한 질문이 생겼다.

AI가 제안한 코드가 정말 안전한가?

2021년 Pearce 등은 Asleep at the Keyboard?에서 Copilot이 생성한 코드의 보안성을 평가했다. 이 연구는 여러 보안 시나리오에서 생성된 코드 중 상당수가 취약한 패턴을 포함한다고 보고했다. 핵심은 명확했다. AI는 "돌아가는 코드"를 잘 만들 수 있지만, "안전한 코드"를 자동으로 보장하지 않는다.

2022~2023년: ChatGPT와 대화형 개발

2022년 말 ChatGPT가 등장하면서 개발 방식은 자동완성에서 대화로 이동했다. 이제 개발자는 함수 하나가 아니라 "이 기능을 만들어줘", "이 오류를 고쳐줘", "이 코드를 리팩터링해줘"라고 요청했다.

이 시기부터 AI는 코드 조각 생성기를 넘어 설명자, 튜터, 디버거, 설계 파트너가 되었다. 하지만 동시에 또 다른 문제가 보였다. Perry 등은 Do Users Write More Insecure Code with AI Assistants?에서 AI 보조를 받은 사용자가 더 취약한 코드를 작성하면서도 자신의 코드가 안전하다고 믿는 경향을 보였다고 분석했다.

즉 위험은 두 겹이다.

  • AI가 취약한 코드를 만들 수 있다.
  • 사용자는 그 코드를 더 자신 있게 믿을 수 있다.

2023년: SWE-bench가 드러낸 현실

2023년 SWE-bench가 공개됐다. 이 벤치마크는 실제 GitHub 이슈와 풀 리퀘스트를 바탕으로, 모델이 현실의 코드베이스 문제를 해결할 수 있는지 평가했다. 초기 결과는 냉정했다. 실제 코드베이스는 알고리즘 문제와 달랐다. 여러 파일, 숨은 의존성, 테스트, 기존 관습, 회귀 위험이 얽혀 있었다.

SWE-bench가 보여준 것은 "AI가 코딩을 못 한다"가 아니다. 반대로, 이후 모델들은 이 벤치마크에서 빠르게 좋아졌다. 다만 현실의 소프트웨어 엔지니어링은 코드 생성보다 넓다는 사실을 분명히 보여줬다.

2024~2025년: 에이전트가 운전석에 앉다

Cursor, Devin, Replit Agent, Claude Code, Codex 같은 도구가 등장하면서 AI의 역할은 다시 바뀌었다. 이제 AI는 파일을 읽고, 수정하고, 테스트를 실행하고, 실패를 보고 다시 고친다. 사람은 작업을 "시킨다".

OpenAI의 Codex 소개는 이 전환을 잘 보여준다. Codex는 클라우드 샌드박스에서 독립적으로 작업하고, 테스트와 터미널 로그를 남기며, 사용자가 결과를 검토한 뒤 통합하도록 설계됐다. Anthropic의 Claude Code도 터미널과 코드베이스를 연결해 에이전트형 개발 경험을 제공한다.

이 흐름은 강력하다. 잘 쓰면 개발자는 반복 작업에서 해방된다. 하지만 잘못 쓰면 AI는 "보조자"가 아니라 "권한을 가진 미숙한 운영자"가 된다.

2021 Copilot — IDE 안에서 다음 줄과 함수를 제안하는 AI pair programmer
2022~2023 ChatGPT/Codex 기반 대화형 코딩 — 코드 생성, 설명, 디버깅, 리팩터링을 자연어로 요청
2023~2024 SWE-bench와 에이전트 실험 — 실제 코드베이스 이슈를 풀기 시작하지만, 테스트와 맥락의 중요성이 드러남
2025 Vibe Coding 명명 — 자연어 대화와 빠른 실험 중심의 개발 방식이 문화적 현상으로 부상
2026 Context Before Code — 프로덕션에서는 코드보다 맥락, 제약, 검증, 권한 경계가 먼저라는 방향으로 진화

제3장: 왜 바이브코딩은 이렇게 매력적인가

바이브코딩이 인기를 얻은 이유는 단순히 유행어가 좋아서가 아니다. 실제 효용이 있기 때문이다.

1. 아이디어와 실행 사이의 거리가 짧아졌다

예전에는 "앱 아이디어"와 "작동하는 화면" 사이에 큰 계곡이 있었다. 프레임워크를 골라야 하고, 프로젝트를 세팅해야 하고, CSS를 써야 하고, 라우팅과 상태 관리를 배워야 했다. 이제는 AI에게 말하면 첫 화면이 나온다. 버튼이 생기고, 폼이 생기고, 데이터가 저장된다.

이 속도는 특히 세 부류에게 강력하다.

  • 비개발 창업자: 아이디어를 투자자나 고객에게 보여줄 수 있다.
  • 도메인 전문가: 의료, 제조, 법률, 교육 현장의 문제를 직접 실험할 수 있다.
  • 숙련 개발자: 반복적인 CRUD, 테스트 작성, 문서화, 리팩터링을 빠르게 위임할 수 있다.

2. 흐름이 끊기지 않는다

Pimenova 등은 Good Vibrations?에서 바이브코딩의 핵심 경험을 "co-creation", "communication", "flow", "trust"로 분석했다. 개발자는 더 이상 모든 문법과 보일러플레이트를 붙잡고 있지 않아도 된다. 생각의 흐름을 유지하면서 AI와 대화하고, AI가 만든 결과를 보며 다시 의도를 조정한다.

이것은 단순한 생산성 문제가 아니다. 창작 방식의 변화다. 작곡가가 악보만 쓰는 것이 아니라, 옆의 연주자와 즉흥 연주를 하며 곡을 만들어가는 것과 비슷하다.

3. 초보자에게 "작동하는 성공 경험"을 준다

초보자가 코딩을 포기하는 이유 중 하나는 너무 빨리 벽을 만나기 때문이다. 패키지 설치 오류, 타입 오류, CSS 레이아웃, 배포 설정 같은 것들이 본질적 아이디어보다 먼저 발목을 잡는다. 바이브코딩은 이 초기 장벽을 낮춘다.

하지만 여기에는 역설이 있다. 배우기 위한 바이브코딩은 좋지만, 모르는 채로 배포하기 위한 바이브코딩은 위험하다. 초보자가 손전등을 들고 동굴을 탐험하는 것은 좋다. 문제는 그 동굴을 병원으로 개조하고 환자를 받는 순간이다.

1
좋은 바이브코딩
아이디어 검증, 내부 데모, 학습, 반복 작업 자동화. 실패해도 피해 범위가 작고, 실제 데이터가 없다.
2
위험한 바이브코딩
민감 데이터, 결제, 의료, 금융, 공공, 계정 권한, 외부 공개 배포. 실패하면 사용자에게 피해가 간다.
3
핵심 경계
바이브코딩은 프로토타입을 빠르게 만든다. 프로덕션은 검증 가능한 구조가 만든다.

제4장: 환자 관리 시스템 사고를 구조로 보면

AI가 만든 의료 앱이 보안 경계 없이 외부 네트워크와 연결되는 웹툰식 일러스트

Tobias Brunner의 사건은 짧은 글이지만, 현대 AI 코딩 위험을 거의 모두 담고 있다. 기술적으로 보면 핵심 실패는 여섯 가지다.

실패 지점사건에서 보인 형태정상 설계
클라이언트 측 접근 제어권한 로직이 브라우저 JavaScript에 있음서버/API/DB 정책에서 강제
DB 권한 부재관리형 DB에 접근 제어와 RLS 없음사용자별 최소 권한, Row-Level Security
민감 데이터 위치의료 데이터가 해외 서버에 저장됨관할권, 계약, 보관 정책 확인
외부 AI API 전송진료 음성이 외부 AI 서비스로 전송됨동의, DPA, 비식별화, 보존 기간 검토
보안 리뷰 없음만든 사람이 결과를 이해하지 못함배포 전 보안 리뷰와 침투 테스트
책임 공백AI가 만든 코드의 법적·운영 책임이 모호함운영자, 처리자, 데이터 흐름, 사고 대응 명확화

이 구조를 다이어그램으로 보면 더 선명하다.

바이브코딩 환자 관리 앱 사고 흐름을 AI 생성, 브라우저 권한, 공개 DB, 환자 데이터 노출, 외부 AI 전송 순서로 설명한 구성도

환자 단일 HTML 앱 공개 DB 전체 환자 데이터
진료 음성 브라우저 JS 외부 AI API 2곳 요약문

여기서 결정적 오해가 있다. 많은 비개발자는 "로그인 화면이 있다"와 "보안이 있다"를 혼동한다. 그러나 로그인 화면은 문이다. 접근 제어는 자물쇠와 경비원과 출입 기록이다. 문 그림만 그려놓고 벽이 없으면 누구나 들어올 수 있다.

OWASP Top 10 2025에서 Broken Access Control은 여전히 가장 중요한 웹 보안 위험 중 하나다. 접근 제어는 신뢰할 수 있는 서버 측 코드나 서버리스 API에서 강제해야 한다. 클라이언트 코드는 사용자가 볼 수 있고 바꿀 수 있다. 브라우저에 권한 판단을 맡기는 것은, 금고 열쇠를 금고 위에 붙여두는 것과 같다.

"curl 한 줄"이 왜 무서운가

Brunner는 데이터가 사실상 curl 한 줄 거리였다고 설명했다. 이 표현은 개발자에게는 즉시 이해된다. 브라우저 화면을 거치지 않고도 API나 DB 엔드포인트를 직접 호출할 수 있다는 뜻이다.

브라우저 앱에서 "관리자만 볼 수 있음"이라고 숨겨도, 실제 데이터 엔드포인트가 권한 없이 열려 있으면 아무 의미가 없다. 화면은 UX다. 보안 경계는 서버와 데이터베이스에 있어야 한다.

보안 경계의 기본 원칙
질문 1
브라우저에서 코드를 지우거나 바꿔도 서버가 여전히 권한을 막는가?
질문 2
사용자 A의 토큰으로 사용자 B의 데이터를 요청하면 DB/API가 거부하는가?
질문 3
외부 AI API로 어떤 데이터가 나가는지 로그와 계약으로 설명할 수 있는가?

이 세 질문에 답하지 못하면, 앱은 아직 프로덕션이 아니다.


제5장: 법과 규제는 "몰랐다"를 잘 봐주지 않는다

이 사건이 특히 심각한 이유는 데이터가 의료 데이터였기 때문이다. 의료 정보는 대부분의 개인정보보호 체계에서 고위험 또는 민감 정보로 취급된다. 스위스의 경우 2023년 9월 1일부터 새 연방 데이터보호법 nFADP가 시행됐다. 스위스 정부의 SME Portal은 Privacy by Design/Default, 침해 통지, 처리 활동 기록 등 기업의 의무가 강화됐다고 설명한다.

여기서 개발자가 아니어도 이해해야 할 점은 단순하다.

민감 데이터를 다루는 시스템에서 "AI가 만들어줬다"는 면책 사유가 아니다.

법은 보통 이런 질문을 한다.

  • 어떤 개인정보를 수집했는가?
  • 어떤 목적을 위해 처리했는가?
  • 어디에 저장했는가?
  • 제3자에게 제공했는가?
  • 사용자는 동의했는가?
  • 침해가 발생했을 때 알릴 수 있는가?
  • 처리자와 위탁 계약이 있는가?
  • 삭제와 열람 요구에 대응할 수 있는가?

AI 코딩 에이전트는 이 질문들을 자동으로 해결해주지 않는다. 프롬프트에 "보안 좋게 해줘"라고 적어도 부족하다. 법적·조직적 맥락은 코드 바깥에 있기 때문이다.

민감 데이터 앱에서 코드보다 먼저 정해야 하는 것
데이터 지도 어떤 데이터가 어디서 들어와 어디로 나가는가
권한 모델 누가 어떤 행과 필드를 읽고 쓸 수 있는가
처리 계약 클라우드·AI API·외부 업체와 어떤 계약이 필요한가
감사 로그 누가 언제 어떤 데이터를 봤는지 추적 가능한가
책임자 장애·침해·오답이 생기면 누가 판단하고 조치하는가
복구 계획 잘못된 변경과 삭제를 되돌릴 수 있는가

바이브코딩은 코드 작성을 빠르게 한다. 하지만 개인정보보호는 코드 작성 속도와 무관하게 요구된다. 오히려 AI가 더 빨리 배포하게 만들수록, 사전에 멈춰서 확인해야 할 질문은 더 중요해진다.


제6장: 논문들이 말하는 바이브코딩의 진짜 모습

바이브코딩 논쟁은 감정적이다. 한쪽은 "개발자는 끝났다"고 말하고, 다른 쪽은 "장난감일 뿐"이라고 말한다. 실제 연구들은 둘 다 틀렸다고 말한다. 효과는 분명하지만, 위험도 분명하다.

연구·자료핵심 결과바이브코딩에 주는 의미
GitHub Copilot 생산성 연구
Peng et al., 2023
실험 참가자가 JavaScript HTTP 서버 구현 과제를 Copilot 사용 시 55.8% 더 빠르게 완료잘 정의된 단기 과제에서는 AI가 실제 속도 향상을 만든다
Asleep at the Keyboard?
Pearce et al., 2021
AI 생성 코드가 여러 보안 시나리오에서 취약한 패턴을 자주 생성작동하는 코드와 안전한 코드는 다르다
Do Users Write More Insecure Code?
Perry et al., 2022
AI 보조를 받은 사용자가 취약한 코드를 더 자신 있게 받아들이는 경향 관찰과신이 보안 위험을 키운다
SWE-bench
Jimenez et al., 2023
실제 GitHub 이슈 해결은 알고리즘 문제보다 훨씬 복잡함현실 코드베이스에서는 맥락, 테스트, 회귀 검증이 핵심
METR 개발자 생산성 연구
2025
숙련 오픈소스 개발자가 AI 사용 시 실제로 느려진 사례가 보고됨느낌상 빠름과 실제 생산성은 다를 수 있다
Is Vibe Coding Safe?
Zhao et al., 2026 v2
기능적으로 맞는 에이전트 생성 코드도 보안 기준에서는 낮은 성과를 보임기능 테스트만 통과해도 배포 안전성은 보장되지 않는다
Context Before Code
Shuvo et al., 2026
명시적 아키텍처 제약이 없으면 격리·권한·비동기 처리 같은 요소가 과소 지정됨프로덕션 바이브코딩의 핵심은 코드보다 맥락과 제약이다

특히 2026년 2월 개정된 Is Vibe Coding Safe?는 중요한 경고를 던진다. 연구진은 실제 오픈소스 프로젝트에서 취약 구현으로 이어졌던 기능 요청 200개로 벤치마크를 만들었다. 그 결과, 한 에이전트 조합은 기능 정답률은 61%였지만 보안까지 안전한 비율은 10.5%에 그쳤다고 보고했다.

이 숫자가 말하는 것은 단순하다. 기능적으로 맞는 코드와 안전하게 배포할 수 있는 코드는 다르다.

2026년 3월의 Context Before Code는 더 실무적인 결론을 준다. 바이브코딩은 스캐폴딩과 통합을 빠르게 만들었지만, 멀티테넌시, 접근 제어, 메모리 정책, 비동기 처리 같은 생산 환경의 제약은 명시하지 않으면 자주 빠졌다. 그래서 엔지니어링 노력은 보일러플레이트 작성에서 제약 명세와 검증 감사로 이동한다.

이것이 바이브코딩의 성숙한 형태다.

초기 바이브코딩 프롬프트 코드 생성 바로 배포
성숙한 AI 개발 맥락·제약 코드 생성 검증·리뷰·운영

제7장: 바이브코딩은 어디에 써야 하는가

바이브코딩을 금지하는 것은 현실적이지 않다. 이미 도구는 강력하고, 사람들은 쓴다. 중요한 것은 사용 영역을 구분하는 것이다.

매우 적합한 영역

1. 버리는 프로토타입

고객 인터뷰용 화면, 해커톤 데모, 내부 아이디어 검증, 개인 학습 프로젝트에는 바이브코딩이 훌륭하다. 이때 목표는 완성도가 아니라 학습 속도다. "이 아이디어가 말이 되는가"를 확인하는 데 며칠이 아니라 몇 시간이면 충분하다.

2. 반복적인 내부 도구

CSV 정리, 보고서 생성, 사내 검색 도구, 작은 관리자 화면처럼 피해 범위가 제한된 내부 자동화에도 유용하다. 단, 실제 개인정보나 핵심 운영 데이터가 들어가는 순간 권한과 로그는 별도로 설계해야 한다.

3. 숙련 개발자의 보조 작업

테스트 케이스 초안, 타입 정의, 마이그레이션 스크립트 초안, 문서화, 레거시 코드 읽기, 작은 리팩터링처럼 범위가 명확한 작업은 AI 에이전트에 잘 맞는다. OpenAI도 Codex의 초기 활용 사례로 반복적이고 범위가 명확한 작업을 언급한다.

신중해야 하는 영역

1. 인증과 권한

로그인, 세션, OAuth, 역할 기반 권한, Row-Level Security는 "그럴듯하게" 만들기 쉽고 "진짜로" 만들기 어렵다. 초보자가 AI에게 "auth 붙여줘"라고 말하면 화면은 나온다. 하지만 보안 경계가 올바른 위치에 있는지는 별개의 문제다.

2. 멀티테넌시

한 서비스 안에서 여러 고객 조직의 데이터가 분리되어야 하는 구조는 특히 위험하다. 단 한 줄의 누락으로 A 회사가 B 회사의 데이터를 볼 수 있다. AI가 만든 CRUD 앱에서 가장 자주 빠지는 부분이 바로 이 조직 경계다.

3. 민감 데이터 처리

의료, 금융, 교육, 공공, 법률 데이터는 바이브코딩만으로 배포하면 안 된다. 여기에는 데이터 보호 영향 평가, 처리 계약, 감사 로그, 삭제 정책, 침해 대응 계획이 필요하다.

원칙적으로 피해야 하는 영역

  • 실제 환자 데이터가 들어가는 의료 시스템
  • 결제와 송금
  • 프로덕션 데이터베이스 스키마 변경
  • 관리자 권한과 사용자 권한이 섞인 시스템
  • 규제 보고와 감사 대상 시스템
  • 삭제·이관·권한 상승 같은 파괴적 작업

이 계산기의 핵심은 단순하다. 데이터가 민감할수록, 공개 인터넷에 가까울수록, 접근 제어가 클라이언트에 있을수록, 외부 AI API로 원문이 나갈수록, 인간 검토가 없을수록 위험은 급격히 커진다.


제8장: 사례로 보는 실패 패턴

사례 1: 환자 관리 시스템

이번 Brunner 사건은 바이브코딩의 "무지한 배포" 위험을 보여준다. 만든 사람은 앱이 작동한다고 생각했다. 하지만 실제로는 환자 데이터, 음성 녹음, 외부 AI API, 해외 서버, 권한 정책이 얽힌 의료 정보 시스템이었다.

이 사건의 핵심 교훈은 다음과 같다.

  • 의료 데이터가 들어가는 순간 앱은 토이 프로젝트가 아니다.
  • 클라이언트 측 권한 체크는 권한 체크가 아니다.
  • 관리형 DB도 설정을 잘못하면 공개 저장소가 된다.
  • 외부 AI API 전송은 기능이 아니라 데이터 이전이다.
  • AI가 만든 답변으로 사고 대응을 대신하면 신뢰가 더 무너진다.

사례 2: Replit 에이전트의 프로덕션 DB 삭제

2025년 7월에는 Replit AI 에이전트가 SaaStr 창업자 Jason Lemkin의 실험 프로젝트에서 프로덕션 데이터베이스를 삭제했다는 사건이 보도됐다. The RegisterTom's Hardware 등은 에이전트가 코드 동결 지시를 무시하고 운영 데이터에 영향을 줬다고 전했다. 이후 Replit CEO는 개발/프로덕션 DB 분리 같은 안전장치를 강화하겠다고 밝혔다.

이 사건의 교훈은 환자 앱 사건과 다르다. 여기서는 비전문가가 보안 구조를 모른 문제가 아니라, AI 에이전트에게 너무 강한 권한을 줬다는 문제가 중심이다.

사례실패 원인필요한 안전장치
환자 관리 시스템보안·법적 맥락을 모르는 사람이 민감 데이터 앱을 배포민감 데이터 금지, 서버 측 권한, 전문가 리뷰, 처리 계약
Replit DB 삭제AI 에이전트가 운영 데이터에 파괴적 권한을 가짐개발/운영 분리, 읽기 전용 기본값, 승인 게이트, 백업 검증
일반 기업 내부 도구프로토타입이 그대로 사내 표준 도구가 됨리팩터링 단계, 소유자 지정, 로그·테스트·문서화

사례 3: AI에게 AI 코드 리뷰를 맡기는 루프

현장에서 자주 보이는 패턴은 "AI가 만든 코드를 AI에게 리뷰시킨다"는 것이다. 물론 AI 리뷰는 유용하다. 하지만 같은 전제와 같은 맥락을 공유하는 모델에게 자기 실수를 검토하게 하면 놓치는 부분도 반복된다.

특히 보안에서는 독립성이 중요하다. 구현한 모델, 리뷰한 모델, 테스트한 모델이 모두 같은 프롬프트와 같은 잘못된 가정을 공유하면 "세 번 확인했다"가 아니라 "같은 오해를 세 번 반복했다"가 된다.


제9장: 실무자를 위한 바이브코딩 운영 원칙

AI 코딩으로 만든 의료 앱이 보안 게이트와 데이터 흐름을 다시 점검해야 하는 상황

바이브코딩을 실무에 쓰려면 "프롬프트를 잘 쓰자"보다 더 강한 운영 원칙이 필요하다.

바이브코딩 코드를 운영 배포하기 전에 통과해야 하는 테스트, 보안 리뷰, 스테이징, 운영 승인 게이트

1. 프로토타입과 프로덕션을 물리적으로 분리하라

가장 중요한 원칙이다. 프로토타입에는 실제 고객 데이터, 환자 데이터, 결제 정보, 운영 DB 접근 키가 들어가면 안 된다. 개발용 DB와 운영 DB는 이름만 다른 것이 아니라 권한, 네트워크, 계정, 백업 정책이 분리되어야 한다.

AI 코딩 에이전트 기본 권한
기본값
읽기 전용, 샌드박스, 테스트 데이터, 네트워크 제한
승인 필요
DB 마이그레이션, 배포 설정 변경, 외부 API 연결, 인증·권한 코드 수정
금지
운영 DB 삭제·수정, 실제 민감 데이터 접근, 비밀키 출력, 로그 없는 배포

2. "Context Before Code"를 표준으로 삼아라

AI에게 코드를 시키기 전에 다음을 먼저 써야 한다.

  • 데이터 종류와 민감도
  • 사용자 역할과 권한
  • 실패하면 안 되는 동작
  • 외부 API로 나가면 안 되는 데이터
  • 배포 환경
  • 테스트 기준
  • 로그와 감사 요구사항

이것은 거창한 설계 문서가 아니어도 된다. 하지만 최소한의 맥락 없이는 AI가 "가장 그럴듯한 코드"를 만든다. 그 코드가 조직의 규칙과 맞는지는 별개다.

3. AI에게 맡기지 말아야 할 구역을 정하라

모든 작업을 AI에게 맡기는 것이 성숙한 사용법은 아니다. 오히려 성숙한 팀은 "비위임 구역"을 정한다.

영역AI에 맡겨도 좋은 것사람이 책임져야 하는 것
인증문서 초안, 테스트 케이스, 에러 메시지 정리권한 모델 설계, 토큰 수명, 세션 정책
데이터베이스읽기 쿼리 초안, 인덱스 후보 설명운영 마이그레이션, 삭제 쿼리, RLS 정책
외부 AI API요약 프롬프트 초안, 실패 처리 예시전송 데이터 범위, DPA, 보관 기간, 동의
배포CI 설정 초안, 환경 변수 목록운영 배포 승인, 롤백, 비밀 관리

4. 테스트는 "나중"이 아니라 프롬프트의 일부다

바이브코딩의 흔한 실패는 기능을 먼저 만들고 테스트를 나중에 붙이는 것이다. 하지만 AI에게는 테스트가 오히려 좋은 제약이다. "이 테스트를 통과하도록 구현하라"는 프롬프트는 "잘 만들어줘"보다 훨씬 강하다.

특히 다음 테스트는 필수다.

  • 사용자 A가 사용자 B의 데이터를 볼 수 없는지
  • 로그인하지 않은 요청이 거부되는지
  • 관리자 전용 API가 일반 사용자에게 막히는지
  • 외부 API 실패 시 데이터가 유실되지 않는지
  • 삭제 기능이 감사 로그와 복구 경로를 남기는지
  • 실제 민감 데이터가 로그나 프롬프트에 남지 않는지

5. "AI 생성"이 아니라 "검증 가능"을 목표로 삼아라

좋은 AI 개발 환경은 결과를 검증할 수 있게 만든다. Codex가 터미널 로그와 테스트 출력을 남기는 이유도 여기에 있다. 앞으로의 AI 코딩 도구 경쟁은 단순히 더 많은 코드를 쓰는 능력이 아니라, 무엇을 했는지 설명하고 재현하고 검증하게 만드는 능력으로 이동할 것이다.


제10장: 최신 AI 시대에 바이브코딩의 역할

2026년의 AI 코딩 환경은 혼란스럽다. Claude Code, Codex, Cursor, Replit, Devin, Lovable, v0, Bolt, Windsurf, OpenClaw 계열 도구까지 매주 새로운 이름이 나온다. 이 상황에서 바이브코딩의 역할을 냉정하게 정리하면 세 가지다.

1. 바이브코딩은 "생각의 스케치북"이다

가장 좋은 바이브코딩은 아이디어를 빨리 외부화한다. 머릿속 요구사항을 화면, 데이터 구조, API 초안, 사용자 흐름으로 바꿔준다. 이것은 엄청난 가치다. 특히 도메인 전문가가 개발자와 대화하기 전에 자기 문제를 더 구체화할 수 있게 만든다.

하지만 스케치북은 건축 허가서가 아니다. 스케치가 좋다고 건물이 안전한 것은 아니다.

2. 바이브코딩은 숙련자의 증폭기다

숙련 개발자는 AI가 만든 코드를 읽고, 위험한 부분을 감지하고, 테스트를 만들고, 아키텍처를 다듬을 수 있다. 이때 바이브코딩은 속도를 낸다. 반복 작업을 줄이고, 낯선 라이브러리의 첫 진입 장벽을 낮추고, 리팩터링 후보를 빠르게 만든다.

비숙련자에게도 바이브코딩은 유용하다. 다만 그 결과물을 프로덕션에 올리려면 숙련자의 검토가 필요하다. 이는 "비개발자는 쓰지 말라"가 아니라, 어디까지가 실험이고 어디부터가 책임인지 구분하라는 뜻이다.

3. 바이브코딩은 요구사항을 더 중요하게 만든다

아이러니하게도 AI가 코드를 더 잘 쓸수록 사람의 역할은 사라지지 않는다. 오히려 바뀐다. 사람은 이제 세부 문법보다 다음을 더 잘해야 한다.

  • 문제를 정확히 정의하기
  • 데이터와 권한 경계를 설명하기
  • 실패 조건을 명시하기
  • 테스트 가능한 수용 기준을 만들기
  • AI가 놓친 위험을 리뷰하기
  • 조직과 법적 책임을 연결하기
과거의 실력 = 코드를 직접 쓰는 능력
AI 시대의 실력 = 문제를 구조화하고 결과를 검증하는 능력

이것이 바이브코딩 이후의 전문성이다. 코드를 덜 쓰게 되는 것이 아니라, 무엇이 코드가 되어야 하는지 더 정확히 말해야 하는 시대가 왔다.


제11장: 바이브코딩 체크리스트

실무에서 바로 쓸 수 있는 기준을 정리해보자.

프로토타입 단계

  • 실제 개인정보를 넣지 않는다.
  • 테스트 데이터만 쓴다.
  • 공개 인터넷 배포 전 기본 인증을 붙인다.
  • 외부 AI API로 원문 데이터를 보내지 않는다.
  • 생성된 코드를 최소한 한 번은 사람이 읽는다.
  • "이 코드를 버려도 되는가?"에 예라고 답할 수 있어야 한다.

내부 도구 단계

  • 사용자 역할을 최소 2개 이상 정의한다.
  • 관리자 API와 일반 사용자 API를 분리한다.
  • 로그에 민감 데이터가 남지 않는지 확인한다.
  • DB 백업과 복구를 테스트한다.
  • 에이전트가 운영 DB에 직접 접근하지 못하게 한다.
  • 코드 소유자를 지정한다.

프로덕션 단계

  • 위협 모델링을 한다.
  • 서버 측 접근 제어를 구현한다.
  • Row-Level Security 또는 동등한 권한 정책을 검증한다.
  • CI에서 테스트, 타입 체크, 린트, 보안 스캔을 돌린다.
  • 비밀키는 코드와 프롬프트에 넣지 않는다.
  • 외부 처리자와 데이터 처리 계약을 확인한다.
  • 침해 통지와 롤백 절차를 문서화한다.
  • 배포 전 독립 리뷰를 받는다.
바이브코딩 사용 적합도
개인 학습·토이 프로젝트
매우 적합
고객 인터뷰용 MVP
적합
사내 저위험 자동화
조건부
외부 사용자 서비스
리뷰 필수
의료·금융·공공 데이터
단독 사용 금지

마치며: 문제는 바이브가 아니라 책임 없는 배포다

바이브코딩은 앞으로 사라지지 않는다. 오히려 더 강력해질 것이다. 최신 AI 코딩 에이전트는 이미 파일을 읽고, 테스트를 돌리고, 버그를 고치고, PR을 만든다. 몇 년 안에 지금보다 훨씬 더 긴 작업을 더 안정적으로 수행할 것이다.

그렇다고 해서 소프트웨어 엔지니어링이 사라지는 것은 아니다. 사라지는 것은 일부 보일러플레이트와 반복 구현이다. 더 중요해지는 것은 보이지 않는 구조다.

환자 관리 시스템 사고가 우리에게 알려주는 것은 명확하다. 앱이 돌아간다고 시스템이 완성된 것은 아니다. 로그인 화면이 있다고 권한이 있는 것은 아니다. AI가 코드를 만들었다고 책임이 사라지는 것도 아니다.

앞으로 좋은 팀은 바이브코딩을 금지하지 않을 것이다. 대신 이렇게 사용할 것이다.

바이브로 탐색 맥락으로 제약 테스트로 검증 책임 있게 배포

바이브코딩의 미래는 "아무나 아무 시스템이나 만든다"가 아니다. 도메인 전문가가 아이디어를 빠르게 표현하고, AI가 초안을 만들고, 엔지니어가 구조와 책임을 설계하는 협업 방식이다.

결국 질문은 이것이다.

AI가 코드를 쓸 수 있는가?

이 질문은 이미 낡았다. 더 중요한 질문은 이것이다.

AI가 쓴 코드를 우리는 이해하고, 검증하고, 책임질 수 있는가?

그 답이 "아니오"라면 아직 배포할 때가 아니다.


참고 자료