내 코드를 클라우드에 보관하기 — 잃어버리지 않는 금고와 시간 여행
당신의 서비스는 지금 단 한 곳에 존재합니다.
당신의 컴퓨터.
컴퓨터가 고장 나면? 코드가 망가지면?
전부 사라집니다.
| 비교 | PM2 (7.5) | Git + GitHub (이 장) |
|---|---|---|
| 막는 사고 | 서버가 죽었다 | 코드가 망가졌다 |
| 하는 일 | 죽으면 다시 살린다 | 망가지면 되돌린다 |
| 비유 | 자동 심장 충격기 | 세이브 포인트 + 타임머신 |
| 보관 장소 | 내 컴퓨터 | 내 컴퓨터 + 인터넷 금고 |
6.1.3의 사고 — AI가 루프를 돌다 30분 만에 코드를 난장판으로. PM2는 "죽으면 살리는" 장치일 뿐,
살아 있는데 망가진 코드는 구해주지 못합니다. 서버는 멀쩡히 도는데 화면이 엉망이라면? 되돌릴 지점이 없습니다.
어려운 보스전 앞에서 세이브 → 지면 세이브 지점에서 다시 시작.
Git도 같습니다 — 잘 작동하는 코드를 저장해 두면, 망가졌을 때 그 상태로 복귀.
6.3 루프 그림의 "고리가 실패했을 때 돌아갈 지점" = 바로 이 세이브 포인트.
10장에서 Vercel이 이 금고의 코드를 가져가 전 세계에 공개합니다. 보관 + 자동 배포의 연결 고리.
8.5의 예고 — "9장에서 GitHub을 배우면 내 플러그인을 세상과 공유할 수 있다". 이 장의 끝(9.6)에서 약속을 지킵니다.
| 비교 | 공개 (public) | 비공개 (private) |
|---|---|---|
| 누가 보는가 | 전 세계 누구나 | 나 (+ 내가 초대할 사람) |
| 어울리는 것 | 남과 공유할 것 (플러그인·포트폴리오) | 내 서비스, 실습 프로젝트 |
| 비용 / 이 책에서 | 무료 / my-plugins (9.6) | 무료 / qa-board (9.3) |
금고 안은 저장소(repository) 칸으로 나뉨 — 프로젝트 하나 = 칸 하나. 판단 기준: 망설여지면 비공개(비공개→공개는 쉽지만, 한 번 공개된 것은 이미 누군가 봤을 수 있음). 칸은 미리 만들 필요 없음 — Claude Code가 만들어 줍니다.
.env — Claude API Key (비밀번호와 같다, 7.8)data/ — 사용자들이 올린 질문 (개인정보 가능)logs/ — 접속 기록공개 저장소를 자동으로 뒤지며 API 키를 수집하는 프로그램이 인터넷에서 쉬지 않고 돌고 있습니다. 키가 노출되면 누군가 내 크레딧으로 AI를 마음껏 씁니다.
올린 비밀 파일을 화면에서 삭제해도 — 이전 세이브 기록에는 남아 있을 수 있습니다. 이미 누군가 복사했을 수도 있습니다.
그래서 원칙은 하나: 애초에 넣지 않는다.
반입 금지 목록 = .gitignore — 단, 이미 올라간 파일은 목록 추가만으로 사라지지 않으므로 첫 세이브 전에 만드는 것이 안전.
임무API 키·비밀번호·개인 정보(질문·로그·데이터)가 든 파일을 전부 찾아줘올라가지 않도록 .gitignore를 만들어줘node_modules처럼 올릴 필요 없는 폴더도 제외보고 — 무엇을 왜 제외했는지 표로
7.8을 건너뛴 독자는 ".env 없음"으로 나옵니다 — 그것대로 정상. 중요한 것은 올리기 전에 검문하는 습관. 단, AI가 빠뜨릴 수 있으니 업로드 후 실제 파일 목록을 사람이 재확인.
이 프로젝트를 GitHub에 비공개(private) 저장소로 올려줘.GitHub 계정: XXXXXXXX · 저장소 이름: qa-board나는 계정만 있고, 이 컴퓨터에서 GitHub을 처음 사용해필요한 도구 설치나 인증이 있으면 단계별로 안내해줘완성 후 브라우저에서 확인할 저장소 주소를 알려줘
① 도구 설치 — Git·GitHub 연결 도구(gh)가 없으면 안내. 설치 명령을 대신 실행하기도 하지만, 관리자 승인·버튼 클릭은 사람 몫
② 인증 — "이 컴퓨터가 정말 당신의 금고에 접근해도 되는가". 일회용 코드 + 브라우저 승인 = 금고 주인이 직접 도장을 찍는 순간, 휴먼 인 더 루프가 여기에도.
확인 2와 3이 이 장의 심장입니다.
이것이 고삐를 아는 사람의 업로드입니다. (그림 9.16~9.19)
금고에 넣는 것만으로는 안전벨트가 아닙니다 — "되돌릴 수 있어야" 완성. 이번 절에서 직접 증명합니다: 일부러 망가뜨리고, 되돌립니다.
"테스트를 하려고 해. 메인 화면 제목을 '고장난 게시판'으로 바꾸고, 질문 목록이 화면에 안 보이게 만들어줘. '테스트: 일부러 망가뜨림' 메시지로 GitHub에 업로드해줘."
7.3에서는 서비스를, 8.4에서는 울타리를 공격했고 — 이번엔 코드 자체를 망가뜨립니다. (고장 내는 방식은 실행마다 다를 수 있음)
실제 서비스 중이라면 처참한 상황 — 예전 같으면 "원래대로 고쳐줘"라고 빌며 AI의 기억력에 운명을 맡겨야 했습니다.
6.3 루프의 안전벨트 = "실패 시 돌아갈 지점" —
이제 우리의 루프에는 돌아갈 곳이 생겼습니다.
"하나의 작업이 끝나면 먼저 정상 작동 확인 → .env·사용자 데이터·로그가 포함되지 않았는지 검사 → 두 검사를 통과하면 알아볼 이름으로 세이브하고 GitHub에 올린다. 문제 발견 시 올리지 말고 사용자에게 알린다."
단, CLAUDE.md는 지침 — 언제나 빠짐없이 실행된다는 보장은 없으므로, 실제로 올라갔는지 직접 확인.
"/저장 커스텀 명령어를 만들어줘 — 변경 사항을 요약한 메시지로 커밋하고 푸시."
생성 결과: 변경 없으면 중단 · 민감 파일 확인 · 강제 푸시 금지 안전장치 포함. /저장 좋아요 정렬 수정처럼 인자도 지원. (그림 9.28~9.30)
my-plugins 폴더를 GitHub에 공개(public) 저장소로 올려줘.GitHub 계정: XXXXXXXX · 저장소 이름: my-plugins올리기 전에 비밀·개인 정보가 없는지 먼저 검문해줘다른 사람이 harness-kit를 설치하는 방법을 README로 만들어 함께 올려줘
비밀이 없는 프로젝트는 같은 방식으로 Public 업로드 가능 — 이제 누구든 당신의 고삐 세트와 설치 안내를 볼 수 있습니다.
| 장치 | 맡은 역할 | 사고 시나리오 |
|---|---|---|
| PM2 (7.5) | 죽으면 살리기 (자동 재시작) | 서버 프로세스가 멈췄다 |
| Git + GitHub (9장) | 망가지면 되돌리기 (세이브 포인트·롤백) | 살아 있는데 코드가 엉망이다 |
| GitHub 금고 | 컴퓨터 밖 사본 보관 | 내 컴퓨터가 고장 났다 |
서비스는 이제 — 내 컴퓨터가 고장 나도 살아남고,
AI가 코드를 난장판으로 만들어도 돌아갈 지점이 있습니다.
다음 장에서 이 금고를 출발점 삼아,
서비스를 전 세계에 공개합니다.
잃어버리지 않는 금고를 만들었고,
시간을 되돌리는 타임머신을 얻었고,
올리기 전에 거르는 검문 습관이 생겼습니다.
GitHub 금고의 코드를 Vercel이 가져가 공개 URL로 —
푸시할 때마다 자동으로 새 버전이 배포되는 마법의 뒤 반쪽을 완성합니다.