바이브코딩 부록 · 개념편 ④

API와 .env — 식당 주문과 비밀의 방

언제 보나 내 사이트에 AI 기능·키를 붙일 때
한 줄 정의 API=주문 창구 / .env=열쇠 숨기는 방
짝 모듈 M09 · M10 · M11

1한 줄로

API = 식당 주문. 주방(AI 회사)에 직접 안 들어가고, 창구로 "이거 주세요" 주문하면 결과를 받습니다.
.env = 비밀의 방. 그 식당 회원카드(키)를 코드에 대놓고 쓰지 않고, 아무도 못 보게 숨겨두는 파일.
내 사이트 손님(내 앱) 주문(API 요청) + 🪪 회원카드(키) 결과(답) 🍳 AI 회사 주방 (Gemini · ChatGPT 등) 주문 받아 처리 후 결과 전달 🔒 비밀의 방 (.env) 🪪 회원카드(키)를 여기 숨김 GitHub엔 안 올라감 주문할 때 방에서 키를 꺼내 씀
내 사이트가 AI 주방에 "주문(API)"하고 그 결과를 받습니다. 주문엔 회원카드(키)가 필요한데, 그 키는 비밀의 방(.env)에 숨겨둡니다.

내 사이트가 AI에게 일을 시키려면 "주문"을 해야 하는데(API), 그 주문에는 내 회원카드(API 키)가 필요합니다. 이 카드는 남에게 보이면 안 되므로 비밀의 방(.env)에 숨깁니다.

2좀 더 자세히 — 키가 왜 그렇게 중요한가

API 키는 나를 증명하는 회원카드입니다. AI 회사는 이 카드로 "누가 주문했는지"를 확인하고 그 사람에게 사용량·요금을 매깁니다. 그래서 카드가 남에게 넘어가면 남이 내 이름으로 주문하고, 그 요금이 나에게 청구됩니다.

가장 위험한 실수는 이 키를 코드에 그대로 적어서 GitHub에 올리는 것입니다. GitHub은 인터넷 공개 공간이라, 올라간 키는 순식간에 자동 프로그램들에게 수집됩니다. 그래서 키는 코드가 아니라 .env라는 비밀 파일에 적고, 이 파일은 .gitignore로 "GitHub에 올리지 마" 목록에 넣어 둡니다.

한 가지 더. 내 컴퓨터의 .env배포된 사이트로 따라가지 않습니다. 그래서 Vercel에 사이트를 올릴 때는, Vercel의 "환경변수"라는 또 다른 비밀의 방에 같은 키를 한 번 더 넣어야 배포 사이트에서도 AI가 작동합니다.

3기억할 흐름

키 발급(AI 회사) → .env에 숨김 → 코드는 "그 방에서 키 꺼내 써" → 배포 땐 Vercel 비밀의 방(환경변수)에도 따로 넣기
무료 크레딧으로 만든 AI 사이트를 자랑하려고 GitHub에 올렸는데, 키를 코드에 그대로 둔 채였습니다. 다음 날 아침, 누군가 그 키로 밤새 주문을 돌려 요금 폭탄이 찍혔습니다. 처음부터 .env에 숨겼다면 없었을 일이에요. 키가 새어나갔다면 즉시 그 키를 폐기하고 새로 발급받는 게 정답입니다.

4용어 미니사전

용어쉬운 뜻
API다른 서비스에 "이거 해줘" 주문하는 창구
API 키그 창구에서 나를 확인하는 회원카드 (비밀)
.env키를 숨겨두는 비밀 파일
.gitignore"이 파일은 GitHub에 올리지 마" 목록
Vercel 환경변수배포된 사이트용 비밀의 방
API는 주문 창구, 키는 내 회원카드, .env는 키 숨기는 방. 키는 절대 코드·GitHub에 대놓고 쓰지 않는다.

5직접 확인 (내 것으로)

내 사이트가 쓰는 API(예: Gemini):

키를 넣어둔 곳 2군데: ① .env(로컬)   ②

가져갈 문장 3개.
  1. "API는 주문 창구, 키는 내 회원카드."
  2. "키는 .env(비밀의 방)에 — 코드·GitHub에 대놓고 쓰지 않기."
  3. "배포 사이트엔 Vercel 환경변수에도 키를 따로 넣어야 작동한다."