바이브 코딩으로 상용 서비스 개발하기

생산성 미쳤지만 가끔 미친 짓도 한다

by 핑크곰

최근 Claude Code를 사용해서 회원관리가 가능한 커뮤니티 서비스를 개발하고 있다. 웹서비스와 모바일 앱까지 고려하는 꽤 큰 규모의 프로젝트인데, DAU도 어느 정도 있는 실제 운영 서비스라 책임감도 상당하다. 바이브 코딩으로 상용 서비스를 개발하면서 겪은 경험과 시행착오들을 정리해보고자 한다.



미친 생산성: 코드 타이핑의 종말

확실히 생산성은 미쳤더라. 그냥 이제 코드 타이핑은 안 한다고 봐도 과언이 아니다.

작년 겨울만 해도 LLM 채팅방식으로 개발했었는데, 그때는 정말 복붙 지옥이었다. 코드 생성하고, 복사하고, 붙여넣고, 에러 나면 다시 채팅창에 에러 내용 복사해서 물어보고... 끝없는 Ctrl+C, Ctrl+V의 연속이었지.

하지만 Claude Code는 파일 시스템에 직접 접근하고 변경사항을 실시간으로 보니까 완전히 다른 경험이다. 마치 옆에 주니어 개발자가 앉아서 내가 말하는 대로 코딩하는 느낌이랄까. 아니, 주니어보다 훨씬 빠르고 정확하다.

개발 세상은 정말 빨리 변할 것 같다. 예전에는 "개발자 = 코드 치는 사람"이었는데, 이제는 "개발자 = AI와 대화하면서 시스템 설계하는 사람"이 되어가고 있으니까.


여전히 골치 아픈 UI/UX

그런데 UI/UX는 여전히 불편하다. 아주 작은 디자인 변경도 생각보다 잘 못하고, 하나를 고쳤을 때 다른 쪽에 영향을 미치는 사이드 이펙트도 꽤 있다.

그래도 작년에 비하면 확실히 많이 좋아진 것 같다. CSS 몇줄 바꾸는, 예를들어 패딩이나 마진 조금 수정했다고 레이아웃 다 깨지는일은 없어졌다. 작년만해도 "이것만 바꿔줘"라고 해도 이것 저것까지 다 건드렸었는데.

모델이 업그레이드되면서 확실히 좋아졌지만, 여전히 UI 작업은 Claude Code의 약점인 것 같다.


프로세스 관리의 악몽

제일 불편한 게 두 가지가 있는데, 먼저 프로세스 관리 문제다.

웹 프로젝트할 때 백엔드, 프론트엔드 서버를 로컬에서 구동해서 개발하는데, 이 서버가 정상적으로 종료가 안 되는 경우가 많다. 포트 3000번에서 서버 떠있는데 Claude Code가 제대로 종료 안 시키고 다시 띄우려다가 "포트 이미 사용 중" 에러가 나면, 그럼 또 3001로 바꿔서 띄우고...

더 황당한 건 서버가 안 떠 있는데 웹서비스가 비정상이라고 판단하는 거다. 그럼 또 다른 방식으로 코드를 고치고... Claude Code가 reasoning을 하면서 계속 포트 찾고 죽이고 이런 걸 반복한다. 토큰도 쓸데없이 많이 사용되고 시간도 오래 걸린다.

그리고 패키지 매니저 문제도 있다. Claude Code가 pnpm이라는 최신 도구를 추천해서 사용했는데, 정작 본인이 pnpm으로 환경을 구성해 놓고 서버 구동을 npm으로 하면서 계속 에러가 나는 경우도 있었다. "야, 너가 pnpm 쓰자고 했잖아!"라고 말해도 소용없더라.


도커를 건드리는 Claude Code: 진짜 끔찍한 경험

두 번째 문제는 어쩌면 이게 제일 끔찍한 문제인 것 같은데, 도커 같은 컨테이너를 함부로 제어하면서 심각한 문제를 초래하는 경우다.

내 경험은 이렇다. MySQL을 도커로 설치해서 돌리고 있고 웹서비스가 이 DB를 바라보는데, Claude Code가 MySQL에 접근하다가 안 되면 도커를 재실행시켜버리더라.

결과는? DB 데이터를 두 번 날렸다.

볼륨 마운트 제대로 안 되어 있으면 컨테이너 재시작하면서 데이터가 다 날아가는데, Claude Code는 그런 걸 고려하지 않고 그냥 "접속 안 되네? 재시작하자!"라는 단순한 로직으로 움직인다.

이런 경험을 하고 나서는 claude.md 파일에 "절대 도커 컨트롤하지 마!"라고 명확히 남겨놨다.


최신 기술에 대한 집착

아무래도 Claude Code는 최신 기술을 최대한 많이 접목하려고 하는 것 같다. 일반적인 웹 개발도 무조건 SPA로 하려고 하고, 이때 사용하는 프레임워크나 도구도 가장 최신의 것들을 차용한다.

간단한 웹페이지 만들어달라고 해도 React에 Next.js에 Tailwind에... 풀세트로 깔고 시작하려고 한다. "야, 그냥 간단하게 해!"라고 해도 잘 안 듣는다.

이런 경향을 보면 앞으로 언어나 프레임워크의 변화가 굉장히 빨라질 것 같다는 생각이 든다. 바이브 코딩 시대에는 개발자들이 특정 프레임워크 문법을 외우는 게 의미가 없어지니까, "더 좋은 게 나왔네? 바꾸자!"라는 결정이 훨씬 쉬워질 것 같다.


MSA와 바이브 코딩의 공생

바이브 코딩하는 개발자들이 컨테이너 기반의 MSA 방식 개발을 많이 하는데, 이는 바이브 코딩의 컨텍스트 크기 제한 때문에 MSA가 더 중요해질 것 같다. 거대한 모놀리식 애플리케이션보다는 작은 서비스들로 쪼개는 게 AI가 이해하기도 쉽고, 실수도 덜하니까.

근데 아이러니하게도 MSA는 도커 같은 컨테이너 기술이 필수인데, Claude Code는 도커를 너무 위험하게 다룬다는 게 문제다. 이런 점은 정말 명확히 하고 가야겠더라.


돌아갈 수 없는 강

바이브 코딩으로 진입한 이상 예전 방식으로 돌아갈 수는 없을 것 같다. 컴파일 이후로 천공카드가 사라지고, IDE가 나온 이후로 텍스트 에디터를 더 이상 개발에 사용하지 않은 것처럼 말이다.

DB를 날려먹는 끔찍한 경험을 하면서도 계속 쓴다는 건, 그만큼 생산성 향상이 압도적이라는 얘기다. 생각해보면 IDE 초창기에도 버그 많고 불안정했지만, 결국 모든 개발자가 쓰게 됐으니까.


바이브 코딩 시대의 개발자 정체성

20년간 개발이 내 주 무기였는데, 코드 타이핑이 사라지니 좀 당황스럽다. 그래서 과연 바이브 코딩 시대에 나의 경쟁력은 뭘까 자문하는 중이다.

전략을 잘 짜는 게 중요할 것 같은데, 아직까지는 정답을 모르겠다. 우선 지금은 최대한 바이브 코딩을 많이 사용해서 익숙해지고, 어떤 역할이 필요한지 찾는 단계다.

어쩌면 "코드 치는 개발자"에서 "프로덕트를 만드는 아키텍트"로 진화하는 과정일지도 모른다. 소프트웨어 아키텍트가 "어떻게 만들 것인가"에 집중했다면, 프로덕트 아키텍트는 "무엇을, 왜 만들 것인가"에 집중하는 역할이 될 것 같다.


이번엔 다르다

WYSIWYG이 처음 나와서 웹 개발은 다 끝났다고 말할 때도 경험했고, 템플릿 기반의 J2EE 개발 도구가 나올 때 기획자만 살아남을 거라고 난리칠 때도 경험했다. 그때는 변화에 대해서 우려하거나 내 직업이 사라질 거라는 걱정은 안 했거든.

그런데 바이브 코딩은 아닌 것 같다. 그냥 패러다임이 다 바뀌는 것 같다. 완전 새로운 세상인 거지.

이전의 도구들은 "개발을 쉽게 도와주는" 수준이었다면, 바이브 코딩은 "개발을 대신 해주는" 수준이다. DB 날려먹는 사고를 치면서도 혼자서 웹, 앱, 백엔드를 다 만들어내는 AI를 보면... 정말 이건 도구의 진화가 아니라 개발 자체의 재정의다.


마치며

바이브 코딩 시대, 우리는 무엇을 준비해야 할까?

일단 나는 계속 써보면서 익숙해지려고 한다. 그리고 AI가 하지 못하는, 20년 경력이 주는 "경험"과 "직관"의 영역을 찾아가려고 한다. 특히 "이건 해봤는데 안 돼"라는 실패의 경험들은 AI가 따라올 수 없는 영역이니까.

무튼, 개발의 패러다임이 완전히 바뀌고 있다. 준비된 자만이 살아남을 거다. 독자분들도 한번 시도해보시길. 단, DB는 꼭 백업하고... ㅎㅎ

keyword
매거진의 이전글AI 시대의 코딩