# Show GN: [GN] 비개발자 + Claude로 프로덕션 운영 238일 — 무엇이 됐고 무엇이 안 됐나?

> Clean Markdown view of GeekNews topic #28439. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28439](https://news.hada.io/topic?id=28439)
- GeekNews Markdown: [https://news.hada.io/topic/28439.md](https://news.hada.io/topic/28439.md)
- Type: show
- Author: [workdriver](https://news.hada.io/@workdriver)
- Published: 2026-04-12T20:53:05+09:00
- Updated: 2026-04-12T20:53:05+09:00
- Original source: [chajooin.com](http://www.chajooin.com)
- Points: 7
- Comments: 5

## Topic Body

차주인닷컴(chajooin.com)을 만든 운영자입니다. 고졸, 화물차 8년(2017~). 코드를 한 줄도 칠 줄 모르는 상태에서 2025년 8월 16일 Claude와 함께 첫 커밋을 찍었습니다. 238일이 지났고, 지금 이 서비스는 매일 자동으로 데이터를 수집하고 리포트를 발행합니다.  
  
이 글은 "만들었다"가 아니라 **"만들고 운영 중이다"** 의 기록입니다. 바이브 코딩으로 프로토타입을 만든 후기는 많은데, 프로덕션 운영을 이어가는 경험은 드물어서 씁니다. 성공담이 아니라 **작동한 것과 안 한 것의 솔직한 기록**입니다.  
  
---  
  
#### 배경  
  
- **도메인**: 화물차 시세 비교 (17조원 시장, 실거래가 공식 기록 없음)  
- **이전 시도**: 2024년 턴키 외주 3천만원 → 수정 주도권이 외주에 있어 포기  
- **전환**: 2025년 7월 AI 2달 학습 → 8월 16일 첫 커밋  
  
#### 스택  
  
```  
Frontend    Vite + React + TypeScript + Tailwind  
Backend     Node.js + Express + Prisma  
DB          PostgreSQL (Railway managed)  
수집        Playwright (headless) + 소스별 파서 46개  
ML          LightGBM (Python, 75 features)  
배포        Railway (Docker)  
자동화      Node scheduler + 텔레그램 알림  
AI 협업     Claude (주 개발) + GPT-4o (쇼츠 대본/프롬프트)  
인증        Naver/Kakao OAuth  
```  
  
스택을 "선택"한 게 아닙니다. AI에게 "이거 만들려면 뭐 써야 돼?"를 물었고 받아썼습니다. 나중에 보니 합리적인 조합이었습니다. AI 에이전트의 실용적 가치 — 선택의 인지적 부담을 대신 져줍니다.  
  
#### 숫자 (2025-08-16 ~ 2026-04-12)  
  
| 항목 | 값 |  
|------|-----|  
| 전체 커밋 | 3,493 |  
| 커밋한 날 | 189일 |  
| 코드 파일 수 | 약 1,500 (js/ts/py 기준) |  
| 롤백 | 20회+ |  
| 배포 실패 | 39회 (초기 Railway 셋업 이틀) |  
| 같은 버그 최대 반복 | 7회 (가격 단위) |  
| 활성 매물 | 약 48,000대 |  
| 외부 소스 파서 | 46개 |  
| CLAUDE.md | 187줄, 24조 절대 규칙 |  
| 메모리 파일 | 129개 |  
  
---  
  
### 1부. 만들기 — 작동하게 만든 3가지  
  
#### 1.1 CLAUDE.md — 규칙으로 AI를 제어  
  
같은 버그가 두 번 터지면 "조심해줘"는 무의미합니다. 구체 규칙을 파일에 적고, AI가 매 세션 시작 시 읽게 합니다.  
  
```  
"파서=원 → 정규화=÷10,000 → DB=만원. DB값에 ×10,000 금지"  
"파서 연식 추출 실패 시 getFullYear() 대입 금지"  
"kakaotalk을 vercel.json UA rewrite에 추가 금지"  
"setInterval 값은 Math.min(value, 2^31-1) 클램핑 필수"  
```  
  
현재 24조. 전부 실제 사고 이후에 생겼습니다.  
  
#### 1.2 역할 분리 — 기획/판단은 사람, 구현은 AI  
  
코드는 못 읽어도 결과는 판단할 수 있습니다. 포터 2톤이 500만원으로 뜨면 "이건 틀렸다"고 할 수 있고, 윙바디와 카고가 같은 가격으로 나오면 "분리하라"고 할 수 있습니다. 도메인 감각이 테스트 역할을 합니다.  
  
#### 1.3 메모리 파일 — 세션 간 컨텍스트 유지  
  
129개 메모리 파일에 결정/실패/정책을 누적. 새 세션이 열릴 때 관련 메모리를 읽어 과거 판단을 유지합니다. AI 컨텍스트 윈도우의 한계를 파일 시스템으로 메우는 구조입니다.  
  
---  
  
### 2부. 운영 — 만드는 것과 다른 문제  
  
#### 2.1 자동으로 돌고 있는 것들  
  
- **매물 인제스천**: 스케줄러가 외부 소스에서 데이터 수집 → 품질 게이트 → DB 반영  
- **시세 리포트**: 매일 자동 생성 → 블로그/카페에 자동 발행  
- **쇼츠 대본 생성**: 톤급별로 GPT-4o가 대본/Sora 프롬프트 생성 (영상 합성은 별도 단계)  
- **ML 재학습**: 주 1회 신규 데이터로 시세 엔진 재학습  
- **모니터링**: 파이프라인 이상 시 텔레그램 알림  
  
개발자는 저 혼자입니다.  
  
#### 2.2 비용  
  
- **인프라**: Railway (PostgreSQL + Node + Playwright)  
- **AI API**: Claude 구독(개발용) + GPT-4o API (쇼츠 생성용, `api_usage_log` 기반 **월 $1 내외 추정**)  
- **도메인/OAuth**: 네이버/카카오  
  
#### 2.3 사고 대응 기록  
  
- **1,138건 데이터 오염 (3/2)**: 연식 폴백 버그 발견 → DB 패치 + 재처리 파이프라인 + 규칙 추가  
- **Slack 알림 6개월 미작동 (3/18 발견)**: 환경 변수/경로 문제 → 텔레그램 단일 경로로 통합 재구성  
- **setInterval 32-bit 오버플로우 (4/10)**: 로그인 먹통 → 핫픽스 + 클램핑 규칙 추가  
- **카카오톡 빈 화면 (1/31)**: SEO UA rewrite가 카카오톡 인앱 브라우저까지 잡음 → UA 목록 수정  
  
#### 2.4 운영 규칙 발췌  
  
CLAUDE.md에 운영 관점 규칙도 포함되어 있습니다.  
  
```  
"배포 후 3가지 숫자로 보고: 서버 상태(health 200),  
 오늘 크롤 건수(어제 ±20% 이내), 활성 매물 수(급변동 없음)"  
  
"4개 이상 파일 수정 시, 스케줄러 연결 시, DB 스키마 변경 시,  
 이전에 revert된 영역 재수정 시 → 사전 보고 필수"  
  
"임시 변경(폴백/TODO/하드코딩)은 대장에 기록:  
 무엇을 언제까지 원복해야 하는지, 원복 안 하면 뭐가 터지는지"  
```  
  
AI는 이 규칙을 매번 읽고, 해당 상황이 오면 작업 전에 먼저 보고합니다.  
  
---  
  
### 3부. 작동하지 않은 것들  
  
#### 3.1 같은 버그 7번 반복 — 데이터 경로 전체를 못 본다  
  
가격 단위 버그가 7번 터진 이유: 수집 → 파서 → 정규화 → DB → API → UI의 6단계 중 한 곳만 고치면 다른 경로에서 또 터집니다. "전체를 보는 능력"이 비개발자+AI 조합에 가장 부족합니다. AI는 시키는 곳만 고치고, 사람은 다른 경로가 있는 줄 모릅니다.  
  
#### 3.2 1,138건 데이터 오염 — AI의 "친절한" 기본값  
  
파서가 연식 추출에 실패했을 때 `getFullYear()`를 반환하는 코드가 들어갔습니다. AI 입장에서는 "null보다 현재 연도가 낫다"는 판단이었을 겁니다. 결과: 2003년식 포터가 2026년식으로 DB에 박혔습니다. **"모르면 null"을 AI에게 따로 적어주지 않으면, 무언가를 채워넣습니다.**  
  
#### 3.3 Slack 알림 6개월 미작동 — 감시 시스템을 감시하지 않음  
  
알림이 실패로 끝나고, 실패 자체가 로그에 안 남아서 6개월간 조용했습니다. 그동안 파이프라인 이상이 몇 건 있었지만 "문제없다"고 착각했습니다. **AI로 만든 시스템에서 가장 위험한 상태는 '잘 돌아가는 것처럼 보이는' 상태입니다.** 현재는 텔레그램 단일 경로로 단순화했습니다.  
  
#### 3.4 setInterval 32-bit 오버플로우 — 언어 함정  
  
`setInterval`이 int32만 받는다는 걸 모르면, 30일을 밀리초로 넣었을 때 즉시 실행된다는 걸 모릅니다. 로그인 먹통. AI는 이런 edge case를 자발적으로 경고해주지 않습니다. 터진 뒤에야 클램핑 규칙이 생겼습니다.  
  
#### 3.5 ML 과적합 — 학습 MAPE 8.56% vs 실전 42%  
  
LightGBM 75 features로 학습 MAPE 8.56% 달성 후 "됐다"고 생각했습니다. 실전 42%. 이유: 호가 데이터의 구조적 한계(실거래가 부재, 다운계약서, 딜러 마진). 도메인 전문가면 처음부터 알 수 있는 건데, "학습 결과가 좋으면 된다"에 갇혔습니다.  
  
---  
  
#### 남은 생각  
  
238일 돌아보고 정리하면:  
  
- **AI는 구현 속도를 크게 당겨준다.** 코드 모르는 사람도 작동하는 서비스를 만들 수 있다.  
- **대신 운영 품질은 자동으로 따라오지 않는다.** 사고는 예외 없이 터지고, AI는 자발적으로 경고해주지 않는다.  
- **비개발자의 일은 코드 작성이 아니라 규칙·감시·검증 설계**로 옮겨간다. 결과 판단과 재발 방지가 본업이 된다.  
  
혼자 운영하는 프로덕션이라 샘플 n=1입니다. 일반화하지 않겠습니다. 같은 조건에서 다른 분들 경험이 궁금합니다.  
  
---  
  
**링크**  
- 서비스: https://chajooin.com (화물차 시세 비교·분석)  
  
피드백 환영합니다. 특히 **"잘 돌아가는 것처럼 보이는 상태"를 혼자서 어떻게 감시하시는지** 궁금합니다.

## Comments



### Comment 55199

- Author: savvykang
- Created: 2026-04-13T15:16:57+09:00
- Points: 1

잘 돌아가는 것처럼 보이는 상태 문제는 주기적으로 장애 복구 훈련을 하고 데이터의 어떤 특성이 정상인지 정의하면 어느 정도 완화할 수 있지않을까 합니다

### Comment 55202

- Author: workdriver
- Created: 2026-04-13T15:43:23+09:00
- Points: 1
- Parent comment: 55199
- Depth: 1

네 좋은의견 감사합니다.  
시스템이 커지니 관리하기가 버거운건 사실입니다.

### Comment 55224

- Author: savvykang
- Created: 2026-04-13T20:23:57+09:00
- Points: 1
- Parent comment: 55202
- Depth: 2

네 혼자 운영하시면 모니터링 서비스도 직접 관리하셔야 돼서 현 상황에서는 쉽지 않을 것으로 보입니다. 외부 모니터링 서비스를 받으시는 것도 방법입니다

### Comment 55191

- Author: jjw9512151
- Created: 2026-04-13T12:22:14+09:00
- Points: 1

실제 현장데이터 감사합니다.

### Comment 55195

- Author: workdriver
- Created: 2026-04-13T13:10:33+09:00
- Points: 1
- Parent comment: 55191
- Depth: 1

네 감사합니다
