Artifact Pre-generation — 무거운 렌더를 빌드타임 산출·serve-with-fallback
PDF 같은 걸 만들려면 무거운 프린터(전용 프로그램) 가 필요한데, 손님한테 내주는 가게(서버)엔 그 프린터가 없어요. 그래서 미리 집에서 인쇄해 서랍에 넣어두고, 손님이 찾으면 그 종이를 그대로 꺼내줘요.
비유: 미리 뽑아둔 인쇄물 🖨️
동네 카페에서 메뉴판 PDF 를 손님에게 준다고 해봐요. 카페엔 커다란 인쇄기가 없어요.
- 원본(HTML) = 컴퓨터 속 메뉴 파일.
- 완성물(PDF) = 그걸 인쇄한 종이.
- 큰 인쇄기(headless Chrome) = PDF 를 뽑는 무거운 장비. 집(개발자 컴퓨터)에만 있어요.
- 가게 서랍(파일 저장소) = 미리 뽑은 종이를 넣어두는 곳.
핵심: 미리 집에서 뽑아 서랍에 넣어두면, 인쇄기 없는 가게도 손님한테 종이를 그냥 건넬 수 있어요.
손님이 찾을 때 (3단 폴백)
손님이 "그 PDF 줘" 하면, 가게는 순서대로 확인해요.
거의 항상 1번(서랍에서 꺼내기) 으로 끝나요. 미리 다 뽑아뒀으니까요.
종이 이름 규칙 (짝꿍 파일)
어떤 종이가 어떤 원본에서 나왔는지 헷갈리지 않게, 이름을 똑같이 짓고 확장자만 달리 해요.
메뉴.html 옆에 메뉴.pdf. 별도 목록표 없이도 짝을 바로 찾아요.
트레이드오프 (쉽게)
- 👍 가게 서버가 가벼워도 돼요 (인쇄기 없이 종이만 꺼내면 되니까).
- 👍 종이도 git 으로 관리 → 버전·이력이 남아요.
- 👎 원본을 고치면 집에서 다시 뽑아 서랍을 갱신해야 해요. 안 하면 옛날 종이가 나가요.
- 규칙: 종이는 손으로 고치지 않기. 원본 바꾸고 → 다시 뽑고 → 서랍에 넣기(커밋). 이 순서를 꼭 지켜요.
핵심만 다시
- 무거운 인쇄(PDF)는 미리 집에서 뽑아 서랍에 넣어둬요.
- 손님이 찾으면 서랍에서 꺼내기 → 없으면 즉석 → 그것도 안 되면 안내 순서.
- 원본과 종이는 이름을 맞춰 짝을 짓고 나란히 보관.
- 원본이 바뀌면 다시 뽑아 갱신 — 종이를 직접 고치지 않아요.
더 자세한 진짜 코드·설계는 옆의 개요 / Variants / Apply Recipe 탭에서 볼 수 있어요.