Cloudflare CLI ์ฌ์ฉ๋ฒ: cf ์ค์น๋ถํฐ Worker ๋ง์ด๊ทธ๋ ์ด์ ๊น์ง
Cloudflare CLI ์ฌ์ฉ๋ฒ์ ์ค์น, ์ธ์ฆ, ๋ช ๋ น ๊ฒ์, JSON ์ถ๋ ฅ ์์๋ก ์ ๋ฆฌํฉ๋๋ค. cf๋ก Worker๋ฅผ ๋ง๋ค๊ณ Vite ํ๋ก์ ํธ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ, Wrangler๋ฅผ ๊ณ์ ์จ์ผ ํ๋ ๊ฒฝ์ฐ, ์์ ํ ์๋ํ ์์น๊น์ง ์ค์ ์์ ๋ก ์ดํด๋ด ๋๋ค.
๊ฒ์์ผ

์ด์ Cloudflare CLI ํ๋๋ง ์ค์นํ๋ฉด ํ์ํ ๋ช
๋ น์ ๊ฒ์ํ๊ณ , ๊ตฌ์กฐํ๋ JSON ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์, ๊ฐ์ ์ง์
์ ์์ Worker๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์์ต๋๋ค. 9์ 28์ผ ์คํ ๋ฒ ํ๊ฐ ์ค์ํ ์ด์ ๋ cf๊ฐ ์ด์ 3,000๊ฐ๊ฐ ๋๋ Cloudflare API ์์
์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฝ 280๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Wrangler๋ณด๋ค ๋ฒ์๊ฐ ํจ์ฌ ๋์ง๋ง, Wrangler๊ฐ ํ์ํ ์ํฌํ๋ก์์๋ ์ฌ์ ํ ๋ด๋ถ์ ์ผ๋ก Wrangler๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ค์ง์ ์ธ ์ด์ ์ ๋ช ๋ น์ด๊ฐ ์งง์์ก๋ค๋ ๋ฐ ์์ง ์์ต๋๋ค. ์ฐ๋ ์์ ์์ฒด๊ฐ ์ค์ด๋ญ๋๋ค. ์ฐฝ์ ์๋ ๋์๋ณด๋๋ฅผ ๋ค์ง์ง ์๊ณ ๊ณ์ ์ ์ ๊ฒํ ์ ์๊ณ , ํ๋ซํผ ํ์ ์์ด์ ํธ์ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์์ด์ ์๋ ์ ํ๋ง๋ค ๋ณ๋์ API ๋ํผ๋ฅผ ์ ์งํ์ง ์๊ณ ๋ ์ฌ๋ฌ ๊ณ ๊ฐ ๊ณ์ ์ Cloudflare ์์ ์ ํ์คํํ ์ ์์ต๋๋ค.
cf๋ฅผ ์ฐ๊ธฐ ์ํด ๋ณ๋ ๋ผ์ด์ ์ค๋ฅผ ์ด ํ์๋ ์์ต๋๋ค. ์ ์ฅ์๋ ์คํ ์์ค์ด๊ณ , ์์ Worker๋ Cloudflare Free ํ๋์์ ์์ํ ์ ์์ผ๋ฉฐ, Workers Paid์ ์ ์ต์ ์๊ธ์ $5์
๋๋ค. ์์ฐ์ ๋ฐ๋ํธ์๋ Starter+ ํฐ์ด๊ฐ $20,000์ธ Spacelift ๊ฐ์ ๋ฒ์ฉ ์ธํ๋ผ ๊ฑฐ๋ฒ๋์ค ํ๋ซํผ์ด ์์ต๋๋ค. cf๋ ์ด ๋ ์ ํ์ง ์ฌ์ด์์ API ์ฐ๋์ ๋๋ ์๊ณ ๋ฅผ ํฌ๊ฒ ๋์ด ์ค๋๋ค. ํ์ง๋ง ์น์ธ ์ ์ฐจ, ๊ฐ์ฌ ์ถ์ , ์ธ์ฌํ ๊ถํ ์ค๊ณ๊น์ง ์์ ์ฃผ๋ ๊ฒ์ ์๋๋๋ค.
์๋ก์ด cf CLI๋ ์ ํํ ๋ฌด์์ธ๊ฐ
cf๋ Cloudflare API ์ ์ฒด๋ฅผ ๋ช
๋ น์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ์๋ ์์ฑ๋ ์ธํฐํ์ด์ค์, Worker ์์ฑยท๋น๋ยท๋ง์ด๊ทธ๋ ์ด์
ยท๋ฐฐํฌ ๊ฐ์ ์์
์ ์ํด ์ง์ ์ค๊ณํ ํ๋ก์ ํธ ์ํฌํ๋ก๋ฅผ ๋ํ ํด์
๋๋ค. Wrangler๊ฐ Worker๋ฅผ ์ํ ์ ๋ฌธ ์์
๋๋ผ๋ฉด, cf๋ Cloudflare๋ผ๋ ๊ฑด๋ฌผ ์ ์ฒด๋ฅผ ์๋ดํ๋ ๋๋ ํฐ๋ฆฌ์ด์ ์๋น์ค ๋ฐ์คํฌ์ ๊ฐ๊น์ต๋๋ค. ๋ค๋ง Wrangler๊ฐ ๋ ์์ ์ ์ธ ์์
์ ๊ณ์ Wrangler๋ก ๋๊น๋๋ค.
์ด ์ฐจ์ด๋ ์ด๋ฒ ๋ฆด๋ฆฌ์ค์ Cloudflare์ 4์ 13์ผ ๊ธฐ์ ํ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ๋ฅด๋ ๊ธฐ์ค์ด๊ธฐ๋ ํฉ๋๋ค. 4์ ๋น๋๋ ์ผ๋ถ ์ ํ๋ง ์ง์ํ์ต๋๋ค. 9์ ์คํ ๋ฒ ํ์๋ API ์ ์ฒด ๋ฒ์, ๊ธฐ๋ณธ JSON ์ถ๋ ฅ, ๋ช ๋ น ๊ฒ์, TypeScript Worker ์ค์ , ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ Worker ๊ฒฝ๋ก๋ก์์ Vite๊ฐ ํฌํจ๋์ต๋๋ค.
์ํฌํ๋ก๋ฅผ ๋ฐ๊พธ๋ ํต์ฌ์ ๋ค์ 4๊ฐ์ง์ ๋๋ค.
- API ์ ์ฒด ๋ฒ์: ์๋ ์์ฑ๋ ๋ช
๋ น์ 3,000๊ฐ๊ฐ ๋๋ ์์
์ ๊ฑธ์ณ
cf <product> [groupโฆ] <operation>ํ์์ ๋ฐ๋ฆ ๋๋ค. - ๋ช
๋ น ๊ฒ์:
cf cli search์ ์์ฐ์ด๋ก ํ ์ผ์ ์ ๋ ฅํ๋ฉด ๊ด๋ จ๋๊ฐ ๋์ 5๊ฐ ๋ช ๋ น์ JSON์ผ๋ก ๋๋ ค์ค๋๋ค. ๋ช ๋ น ํธ๋ฆฌ๋ฅผ ์ธ์ธ ํ์๊ฐ ์์ต๋๋ค. - ๊ธฐ๋ณธ ์ถ๋ ฅ์ JSON: API ๊ฒฐ๊ณผ๊ฐ ๋ณด๊ธฐ ์ข๊ฒ ์ ๋ฆฌ๋ JSON์ผ๋ก ํ์ค ์ถ๋ ฅ์ ์ ๋ฌ๋๋ฏ๋ก ์ฌ๋, ์คํฌ๋ฆฝํธ, ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ๊ฐ์ ์๋ต์ ํํฐ๋งํ ์ ์์ต๋๋ค.
- ํ์
์ด ์ ์ฉ๋ Worker ์ค์ :
cloudflare.config.ts๋๋ถ์ ์๋ํฐ์ ์ฝ๋ฉ ์์ด์ ํธ๊ฐ TypeScript ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์์ต๋๋ค. ํ์ฌ๋ Workers๋ถํฐ ์ง์ํฉ๋๋ค. DNS, zone, ์ ์ฑ ์ ์์ฐ๋ฅด๋ ๊ณ์ ์ ์ฒด ์ค์ ์ ํฅํ ๋ฐฉํฅ์ด๋ฉฐ, ์ง๊ธ ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ์๋๋๋ค.

Cloudflare CLI ์ค์น, ์ธ์ฆ, ์ฝ๊ธฐ ํ ์คํธ
๋จผ์ ์ฝ๊ธฐ ์ ์ฉ ์์ ๋ถํฐ ์คํํฉ๋๋ค. ์คํฌ๋ฆฝํธ์ ๋ณ๊ฒฝ ๊ถํ์ ์ฃผ๊ธฐ ์ ์ ํจํค์ง, ์ธ์ฆ ์ ๋ณด, ๊ณ์ ์ ํ, ๋ช ๋ น ๊ฒ์, JSON ์ฒ๋ฆฌ ๊ฒฝ๋ก๊ฐ ๋ชจ๋ ์ ๋๋ก ๋์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ณต์ ํจํค์ง๋ Node.js 22 ์ด์์ด ํ์ํฉ๋๋ค. ์ฌ๋์ด ํฐ๋ฏธ๋์์ ์ฌ์ฉํ ๋๋ cf auth login์ด ๊ธฐ๋ณธ OAuth ํ๋กํ์ ๊ด๋ฆฌํฉ๋๋ค. CI์์๋ ๊ถํ ๋ฒ์๋ฅผ ์ขํ CLOUDFLARE_API_TOKEN์ ์ค์ ํฉ๋๋ค. cf๋ ์ ์ฅ๋ OAuth ํ๋กํ๋ณด๋ค ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค. ๊ณ ๊ฐ์ฌ๋ ํ์ฌ ๊ณ์ ์ ์ค๊ฐ ๋๋ ์ด๋ฆ์ด ์๋ ํ๋กํ์ ๋ง๋ค๊ณ ๊ฐ๊ฐ ๋ค๋ฅธ ๋๋ ํฐ๋ฆฌ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
cf cli search์ ๋๊ธฐ๋ ๋ฌธ์ฅ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฑํฉ๋๋ค. ๋๋ฉ์ธ, ์ด๋ฉ์ผ ์ฃผ์, ๊ณ์ ID, ํ ํฐ์ ๋ฃ์ง ๋ง๊ณ ์์
๊ณผ ๋ฆฌ์์ค ์ ํ๋ง ์ค๋ช
ํฉ๋๋ค.
node --version
npm i -g cf
cf --version
cf auth login
cf auth whoami
cf cli search "list zones in an account"
cf zones list | jq -e 'type == "array" and all(.[]; has("name") and has("status"))'ํ์ฌ ์ด ์์
์ ๊ฒ์ํ๋ฉด cf zones list๊ฐ ์ฒซ ๋ฒ์งธ๋ก ๋์ต๋๋ค. ๋ง์ง๋ง ์ค์ด ์ค์ ๊ฒ์ฆ ๋จ๊ณ์
๋๋ค. ์ฝ๊ธฐ ์ ์ฉ API๋ฅผ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๊ฐ name๊ณผ status๋ฅผ ํฌํจํ ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋ JSON ๋ฐฐ์ด์ผ ๋๋ง ์ฑ๊ณต์ผ๋ก ์ข
๋ฃํฉ๋๋ค. ๊ณ์ ์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด --profile๋ก ์ด๋ฆ์ด ์๋ ํ๋กํ์ ๊ณ ๋ฅด๊ฑฐ๋ --account-id๋ก ๋ช
๋ น ๋์์ ์ ํํฉ๋๋ค.
ํ ํฐ์ ์ ธ ๊ธฐ๋ก์ ์ง์ ๋ถ์ฌ ๋ฃ์ผ๋ฉด ์ ๋ฉ๋๋ค. ๋ฒ์๊ฐ ์ ํ๋ ํ ํฐ์ CI ํ๋ก์ธ์ค ํ๊ฒฝ์ ๋๊ณ , ์์ ์ ๊ผญ ํ์ํ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ถํ๋ง ๋ถ์ฌํฉ๋๋ค. ๊ฐ์ธ์ด ํฐ๋ฏธ๋์์ ์์ ํ ๋๋ cf๊ฐ ์ ํ๋ ํ๋กํ์ ๊ฐฑ์ ํ ์ ์์ผ๋ฏ๋ก OAuth๊ฐ ๋ ํธํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
์ผํ์ฉ ํ ์คํธ์์ ํ์ธํ ๋ฒ์
9์ 29์ผ, ์๋ก ๋ถ๋ฆฌํ ํ๊ฒฝ์ ์ค์นํ์ ๋ cf v1.0.0-beta.5๊ฐ ๋ฐํ๋์ต๋๋ค. ๋ช
๋ น ๊ฒ์์ ์ ํจํ 5๊ฐ ํญ๋ชฉ์ JSON ๋ฐฐ์ด์ ๋๋ ค์คฌ๊ณ , cf init์ ํ์
์ด ์ ์ฉ๋ Worker ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ต๋๋ค. ์ ํ๋ก์ ํธ์ ๋ง์ด๊ทธ๋ ์ด์
ํ Vite ํฝ์ค์ฒ ๋ชจ๋ ๋ก์ปฌ ๋น๋์ ์ฑ๊ณตํ์ต๋๋ค. ์ด ํ๊ฒฝ์๋ Cloudflare ํ
์คํธ ๊ณ์ ์ธ์ฆ ์ ๋ณด๊ฐ ์์์ผ๋ฏ๋ก, ์ธ์ฆ์ด ํ์ํ zone ์ฝ๊ธฐ์ ๋ฐฐํฌ๋ ์๋ฃ๋ ํ
์คํธ์ ํฌํจํ์ง ์์์ต๋๋ค.
์ด ๊ฒฝ๊ณ๋ ์ค์ํฉ๋๋ค. ๋ก์ปฌ ๋น๋ ์ฑ๊ณต์ ํ๋ก์ ํธ ๊ฒฝ๋ก๊ฐ ์ ์์ด๋ผ๋ ๋ป์ ๋๋ค. ํ ํฐ์ ์ฌ๋ฐ๋ฅธ ํ๋ก๋์ ๊ถํ์ด ์๋์ง, ์ค์ ๋ฐฐํฌ๊ฐ Cloudflare์ ๋๋ฌํ๋์ง๊น์ง ์ฆ๋ช ํ์ง๋ ์์ต๋๋ค.
์์ Worker๋ฅผ ๋ง๋ค๊ณ cf๊ฐ ์์ฑํ ํ์ผ ํ์ธํ๊ธฐ
cf init์ ์ ํ๋ก์ ํธ ์ํฌํ๋ก๋ฅผ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ๊น๋ํ๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ๋น ๋๋ ํฐ๋ฆฌ์์ ์คํํ๋ฉด TypeScript ์์ค, cloudflare.config.ts, vite.config.ts, ํจํค์ง ์คํฌ๋ฆฝํธ, ์์ฑ๋ Worker ํ์
์ด ๋ง๋ค์ด์ง๋๋ค. ์ด์ด์ cf build๋ฅผ ์คํํ๋ฉด Cloudflare Vite Plugin์ ๋น๋๋ฅผ ๋งก๊ธฐ๊ณ ํ์คํ๋ Build Output์ ์์ฑํฉ๋๋ค.
cf init hello-cf --package-manager npm
cd hello-cf
npm run build
# In a copied existing Vite Worker:
cf migrate --dry-run
cf migrate
npm run build์ด๋ ๊ฒฝ๋ก๋ฅผ ํํ๋ ์๋ฃ ํ์๋ cloudflare.config.ts๋ฅผ ์ด์ด ๋ด
๋๋ค. ๊ธฐ๋ณธ Worker๋ผ๋ฉด ์ด๋ฆ, ํธํ์ฑ ๋ ์ง, ์ง์
์ , ํ์
์ด ์ ์ฉ๋ ๋ฐ์ธ๋ฉ์ ํฌํจํ๋ worker ๋ธ๋ก์ด ์์ด์ผ ํฉ๋๋ค. ํ
์คํธ ๋ฐ์ธ๋ฉ์ ์ฌ๋ฌ ํ๊ฒฝ ๋ธ๋ก์ ๋ณต์ฌํ๋ ๋์ ์ค์ API๋ฅผ ํตํด ์ ์ธํฉ๋๋ค. ์ฌ๊ธฐ์ TypeScript์ ๊ฐ์น๊ฐ ๋๋ฌ๋ฉ๋๋ค. ํ๋ ์ด๋ฆ์ ์๋ชป ์
๋ ฅํ์ ๋ ๋ฐฐํฌ ์คํจ๊ฐ ์๋๋ผ ์๋ํฐ ํผ๋๋ฐฑ์ผ๋ก ๋จผ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
์์ฑ๋ Vite ์ค์ ์ ์ฅ์์ด ์๋๋๋ค. ์ด์ Vite๋ cf์ ๊ธฐ๋ณธ ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ ๋น๋ ๊ฒฝ๋ก์ด๋ฉฐ, Cloudflare๋ ํ๋ฐํธ์๋์ ๋ฐฑ์๋ API ๋ชจ๋์ Vite plugin์ ๊ถ์ฅํฉ๋๋ค. ์ผํ์ฉ ํ๋ก์ ํธ์์๋ npm run build๊ฐ Vite์ ์์
์ ๋๊ฒจ ์๋ฃ๋์ต๋๋ค. ๋ฐฐํฌ๋ ์๋์ ์ผ๋ก ์ ์ธํ์ต๋๋ค. ๊ฒํ ์ ๊ณ์ ํ
์คํธ๊ฐ ๋๋๋ฉด ๋ฌธ์์ ์๋ด๋ cf deploy ๋ช
๋ น์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋์ ์
๋ก๋๋ฅผ ์ํํฉ๋๋ค.

Wrangler๋ฅผ ๊ณ์ ์จ์ผ ํ๋ ๊ฒฝ์ฐ
cf ์ค์น๊ฐ ์ฑ๊ณตํ๋ค๋ ์ด์ ๋ง์ผ๋ก Wrangler๋ฅผ ์ ๊ฑฐํ๋ฉด ์ ๋ฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ง์ด๊ทธ๋ ์ด์ ํ๋จ์ ํ๋ก์ ํธ์ ๋น๋ ๊ฒฝ๋ก์ ๋ฌ๋ ค ์์ต๋๋ค.
๊ธฐ์กด Vite Worker์์๋ cf migrate๋ก Wrangler JSON, JSONC, TOML์ cloudflare.config.ts๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด ๋ช
๋ น์ Wrangler ์ค์ ์์์ Cloudflare Vite Plugin์ ์ฐพ์ Vite ๊ฒฝ๋ก๋ฅผ ์ ํํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ด ์ ์ธ๋ผ ์์ง ์์ผ๋ฉด ํ์ฌ ๋ฒ ํ ๋ฆด๋ฆฌ์ค๋ Wrangler ๋ฒ๋ค๋ฌ๋ฅผ ์ ํํฉ๋๋ค. ์ค์ ํ๋ก์ ํธ๋ฅผ ๊ฑด๋๋ฆฌ๊ธฐ ์ ์ dry-run ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์คํํ๊ณ , ๋ชจ๋ ํ์ ํญ๋ชฉ์ ์ฝ์ ๋ค, ๋ณต์ฌ๋ณธ์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๋ธ๋์น์์ ๋ง์ด๊ทธ๋ ์ด์
ํฉ๋๋ค.
Wrangler์ esbuild ๋์์ ๊ณ์ ์์กดํ๋ JavaScript Workers๋ผ๋ฉด cf๋ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ๋ฅผ Wrangler์ ๋งก๊น๋๋ค. Rust์ Python Workers๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด๋ ๋ง์ด๊ทธ๋ ์ด์ ์คํจ๊ฐ ์๋๋ผ ํธํ์ฑ์ ์ํ ์ค๊ณ์ ๋๋ค. ํ์ cf๋ฅผ ๋จ์ผ ์ง์ ์ ์ผ๋ก ์ฐ๋ฉด์๋ ๊ฒ์ฆ๋ ๋น๋๋ฅผ ์์ ๊ฒฝ๋ก์ ๋จ๊ฒจ ๋ ์ ์์ต๋๋ค.
Cloudflare์ ์ง์ ์ผ์ ๋ ์คํดํ๊ธฐ ์ฝ์ต๋๋ค. Wrangler ์ ์ง๋ณด์๋ ์คํ ๋ฒ ํ๊ฐ ๋๋ ๋ค 18๊ฐ์ ๋์ ์ด์ด์ง ์์ ์ด๋ฉฐ, 9์ 28์ผ ์ถ์์ผ๋ถํฐ 18๊ฐ์์ด ์๋๋๋ค. ์ด๋ฒ ์ฃผ์ Rust, Python, esbuild ํ๋ก์ ํธ๋ฅผ ์ต์ง๋ก Vite๋ก ์ ํํ ์ด์ ๋ ์์ต๋๋ค.

๋จผ์ ํจ๊ณผ๋ฅผ ๋ณผ 7๊ฐ์ง ์ํฌํ๋ก
์ด๊ธฐ ํ์ฉ ์ฌ๋ก๋ก๋ ๋ฐ๋ณต๋๋ ๊ฒ์๊ณผ ์ถ๋ ฅ ํ์ ๋ณํ์ ์ค์ด๋ฉด์๋ ์ฒ์๋ถํฐ ๊ด๋ฒ์ํ ์ฐ๊ธฐ ๊ถํ์ ์ฃผ์ง ์๋ ์์ ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
1. ์์ด์ ์์ ๊ณ์ ์ ๊ฒ ํ์คํ
์์ด์ ์ ์ด์์๋ ๊ณ ๊ฐ ๋๋ ํฐ๋ฆฌ๋ง๋ค ์ด๋ฆ์ด ์๋ OAuth ํ๋กํ์ ์ฐ๊ฒฐํ๊ณ , ํ์ํ ์ฝ๊ธฐ ๋ช ๋ น์ ๊ฒ์ํ ๋ค, ๋์ผํ ํํ์ JSON์ ๊ฒํ ์คํฌ๋ฆฝํธ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ํ ์์ง๋์ด๋ ๋์๋ณด๋๋ฅผ ํด๋ฆญํ๊ณ ๋ค๋ฅธ ์์ง๋์ด๋ ๋ณ๋ curl ๋ช ๋ น์ ๊ด๋ฆฌํ๋ฉด์ ์๊ธฐ๋ ํธ์ฐจ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ํนํ DNS, zone, ๊ณ์ ์ค์ , ๋ณด์ ๊ฒํ ๋ฑ ๊ณ ๊ฐ๋ณ ์์ ์ ๋ฐ๋ณตํ ๋ ํจ๊ณผ๊ฐ ํฝ๋๋ค.
2. ํ๋ซํผ ํ์ด ์ฝ๋ฉ ์์ด์ ํธ์ ์์ ํ Cloudflare ์ธํฐํ์ด์ค ์ ๊ณต
ํ๋ซํผ ์ฑ
์์๋ AGENTS.md์ cf cli search ์ฌ์ฉ ๊ท์น์ ๋๊ณ , ์ฝ๊ธฐ ๋ช
๋ น์ ๊ธฐ๋ณธ ํ์ฉํ๋ ๋ณ๊ฒฝ ์์
์๋ ์ฌ๋์ ์น์ธ์ ์๊ตฌํ ์ ์์ต๋๋ค. ๊ฒ์ ๊ธฐ๋ฅ์ ์์ด์ ํธ๊ฐ ์์ Wrangler ๋ฌธ๋ฒ์ ์ถ์ธกํ์ง ์๊ฒ ํ๊ณ , JSON์ ์ถ๋ ฅ์ ๊ฐ๊ฒฐํ๊ณ ํํฐ๋งํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ํ์ด ์ด๋ฏธ ์์ด์ ํธ์ ๋น๋ ์ํ, ๋ก๊ทธ, ํ, ๊ณ์ ๋ฆฌ์์ค ์ ๊ฒ์ ๋งก๊ธฐ๊ณ ์์ผ๋ฉฐ ํ๋์ ์์ธก ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๋ฅผ ์ํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
3. ๋น์ง ์์ง๋์ด์ ์ฅ์ ์ํฉ ์ ๋ณด ์์ง
์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด์์๋ ์ฌ๋ฌ ์ ํ ํจ๋์ ๋์๋ค๋๋ ๋์ ํ์ํ ๋ก๊ทธ, zone, ๊ท์น ์ธํธ, ๋ถ์ ๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ช
๋ น์ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ ํํ ๋ช
๋ น์ ์ฌ์ ํ ์ค์ํ๊ณ ๊ถํ๋ ๊ทธ๋๋ก ์ ์ฉ๋์ง๋ง, ์ด์ ๋ก์ปฌ์์ ๋ช
๋ น์ ์ฐพ๊ณ ๊ณง๋ฐ๋ก jq๋ก ์๋ต์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. Cloudflare Browser Run ๊ฐ์ ์์
์ ์ด์ํ๋ ํ์ด๋ผ๋ฉด ์คํจํ ์์
์์ ์ฃผ๋ณ ๊ณ์ ์ํ๊น์ง ๋ ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
4. ์ฐฝ์ ์๊ฐ ํด์ฒด์ธ ์ค๊ณ ์์ด Worker ํ๋ ์์ํ๊ธฐ
์นํ
, ๋ฆฌ๋๋ ์
์๋น์ค, ์๊ท๋ชจ ๋ด๋ถ API๋ฅผ ๋ง๋๋ ์ฐฝ์
์๋ cf init์ ์คํํ๊ณ ์์ฑ๋ Worker์ ๋ฐ์ธ๋ฉ์ ํ์ธํ ๋ค, ํจํค์ง๋ฅผ ํ๋์ฉ ๊ณ ๋ฅด์ง ์๊ณ Vite ๋น๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ๋ Workers Free์์ ์์ํ ์ ์์ต๋๋ค. ์ ๋ฃ ํ๋์ด ํ์ํด์ง๋ฉด ํ์ฌ ์ต์ ์๊ธ์ ๊ณ์ ๋น ์ $5์
๋๋ค. ํต์ฌ ๊ฐ์น๋ ๊ฒํ ๊ฐ๋ฅํ ๋ก์ปฌ ๊ฒฐ๊ณผ๋ฌผ๊น์ง ๋น ๋ฅด๊ฒ ๋๋ฌํ๋ ๋ฐ ์์ง, ํ๋ก๋์
์ด์์ด ๋ฌด๋ฃ๊ฐ ๋๋ค๋ ์ฝ์์ ์์ง ์์ต๋๋ค.
5. Vite ํ์ด ์ฑ ์ฌ์์ฑ ์์ด ์ค์ ๋ณํํ๊ธฐ
Vite ๊ธฐ๋ฐ Worker๋ฅผ ์ด์ํ๋ ์์ง๋์ด๋ง ํ์ ๋ณต์ฌ๋ณธ์์ cf migrate --dry-run์ ์คํํ๊ณ , ์์ฑ๋ TypeScript๋ฅผ ๊ฒํ ํ ๋ค์, ๋ฐฐํฌ ๋ฐฉ์์ ๋ฐ๊พธ๊ธฐ ์ ์ ๋น๋ํ ์ ์์ต๋๋ค. ํ๊ฒฝ ๋ธ๋ก์ ๋ฐ๋ณต์ด ๋์ด๋ ํ๋ก์ ํธ์์ ํนํ ์ ์ฉํฉ๋๋ค. ์ ํ์์ ๊ณตํต ๊ธฐ๋ฐ ์ค์ ์์ ๊ฐ์ ๊ณ์ฐํ ์ ์์ง๋ง, ํ์ด ์ฎ๊ฒจ์ผ ํ ๊ฒ์ ๋จ์ํ ํ์ผ ๋ฌธ๋ฒ์ด ์๋๋ผ ๊ธฐ์กด ๋์์
๋๋ค.
6. ๋ฐ์ดํฐยท์ด์ ํ์ด Cloudflare ์ฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์์ ์ฐ๊ฒฐํ๊ธฐ
๊ตฌ์กฐํ๋ ๊ฒฐ๊ณผ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก JSON์ด๋ฏ๋ก ์ด์์๋ Unicode ํ๋ฅผ ์คํฌ๋ํํ์ง ์๊ณ ์ฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ jq, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ๋ก๋, ์์ฝ ๋ณด๊ณ ์๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ๋น์ฆ๋์ค ์ธก๋ฉด์ ํจ๊ณผ๋ ์ข์ ์๋ฏธ๋ก ๋จ์ํฉ๋๋ค. ์ถ๋ ฅ ์ด๋ํฐ์ ๊นจ์ง๊ธฐ ์ฌ์ด ํ์ฑ ๊ท์น์ด ์ค์ด๋ญ๋๋ค. ๋ฒ์๊ฐ ์ ํ๋ ์ฝ๊ธฐ ํ ํฐ์ ์ฌ์ฉํ๊ณ , ๋ช
๋ น ์ถ๋ ฅ์ด ๊ณต๊ฐ CI ๋ก๊ทธ์ ๋จ์ง ์๊ฒ ํฉ๋๋ค.
7. Worker ํ์ด ํ๋ก๋์ ๋ณ๊ฒฝ ์ ๋ก์ปฌ ๋ฆฌ์์ค ์ ๊ฒํ๊ธฐ
์ง์๋๋ ๋ช
๋ น์ --local์ ๋ฐ์ ๋ก์ปฌ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ์คํ๋๋ Miniflare ์ธ์คํด์ค์ ํต์ ํฉ๋๋ค. KV, D1, R2์์ ์ ์๋ ์์
๋ ํฌํจ๋ฉ๋๋ค. ๋ก์ปฌ ๋์ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด cf๋ ์กฐ์ฉํ ํ๋ก๋์
์ผ๋ก ๋์ด๊ฐ์ง ์๊ณ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. Cloudflare AI Search Worker๋ฅผ ๋ง๋๋ ํ์ ์ด ๊ฒฝ๊ณ๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ ๋ช
๋ น์ด ์๊ฒฉ ์ฐ๊ธฐ๋ก ๋ฐ๋ ๊ฑฑ์ ์์ด ๋ณด์กฐ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ํ
์คํธํ ์ ์์ต๋๋ค.
cf๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค ๋งํ ์ ํ 2๊ฐ์ง
CLI ์์ฒด๊ฐ ๊ณง ์ ํ ๊ธฐํ์ธ ๊ฒ์ ์๋๋๋ค. ํญ๋์ API๋ฅผ ์ค์ ์ ๋ฌด์ ์ฐ๋ ค๋ฉด ์ฌ์ ํ ํ์ํ ์ ์ด ๊ณ์ธต์ ๊ธฐํ๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ๋งํ ๊ธฐํ: ์์ด์ ์์ฉ Cloudflare ๋ณ๊ฒฝ ํต์
์ฌ๋ฌ Cloudflare ๊ณ์ ์ ๊ด๋ฆฌํ๋ ์์ด์ ์๋ ์๊ท๋ชจ ํ๋ซํผ ํ์ ์ํด ์น์ธ๊ณผ ์ฆ์ ์ ์ง์คํ ๊ณ์ธต์ ๋ง๋ญ๋๋ค. ์ฌ์ฉ์๊ฐ DNS, zone, WAF, Worker ๋ณ๊ฒฝ์ ์ ์ํ๋ฉด ์ ํ์ด cf๋ก ํ์ฌ JSON ์ํ๋ฅผ ์์งํ๊ณ , ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ์ฐจ์ด๋ฅผ ๋ณด์ฌ ์ฃผ๋ฉฐ, ์น์ธ์ ์์ฒญํฉ๋๋ค. ์ดํ ๋ฒ์๊ฐ ์ ํ๋ ํ๋กํ๋ก ๋ณ๊ฒฝ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค.
์์ ์ ํธ๋ ํฌ์ง ์์ง๋ง ์์
์ฑ์ ์์ต๋๋ค. cloudflare dns management๋ ๋ฏธ๊ตญ์์ ์๊ฐ ๊ฒ์๋์ด ์ฝ 170ํ์ด๊ณ CPC๋ $6์ด๋ฉฐ, ํ์ด์ง ์๋จ ์
์ฐฐ๊ฐ๋ $3.85์์ $36.64์
๋๋ค. ๋ฒ์ฉ ์ธํ๋ผ ๊ฑฐ๋ฒ๋์ค์๋ ์ค์ ์์ฐ์ด ๋ฐฐ์ ๋ฉ๋๋ค. Spacelift์ Starter+ ๊ฐ๊ฒฉ์ $20,000์
๋๋ค. Cloudflare ์ ์ฉ ์ ํ์ ๋ชจ๋ ํด๋ผ์ฐ๋๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ผ๋ฏ๋ก ๋ ์ ๋ ดํ๊ณ ๋์
ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ต์ ํ๋งค ๊ฐ๋ฅ ๋ฒ์ ์ DNS์ Worker ๋ณ๊ฒฝ์ ๋ค๋ฃจ๋ GitHub app ๋๋ ํธ์คํ ํ ๊ฒํ ํ์ ๋๋ค. ํ๋กํ ๊ฒฉ๋ฆฌ, ๋ช ๋ น ํ์ฉ ๋ชฉ๋ก, ๋ณ๊ฒฝ ์ ํ JSON, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฐ API๊ฐ ์ง์ํ๋ ๊ฒฝ์ฐ ์ํด๋ฆญ ๋กค๋ฐฑ์ ํฌํจํฉ๋๋ค. ๋ฌธ์ ๋ ๋ฐฉ์ด๋ ฅ์ ๋๋ค. ๋ช ๋ น ๋ฒ์๋ ์ด๋ฏธ cf๊ฐ ์ ๊ณตํ๋ฏ๋ก, ์ฐจ๋ณํํด์ผ ํ ๋ถ๋ถ์ ์ ์ฑ , ์ฆ์ , ๊ถํ, ์์ด์ ์ ์ํฌํ๋ก์ ๋๋ค. ๋จ์ํ GUI ๋ํผ๋ ๋น ๋ฅด๊ฒ ๋ณต์ ๋ ์ ์์ต๋๋ค.
์ ์ฉํ ๊ธฐ๋ฅ: Worker ๋ง์ด๊ทธ๋ ์ด์ ์ค๋น๋
์ ์ฅ์๊ฐ ๋ค์ดํฐ๋ธ Vite, Wrangler ๊ธฐ๋ฐ esbuild, Python, Rust ๊ฐ์ด๋ฐ ์ด๋์ ์ํ๋์ง ๋ถ๋ฅํ๊ณ , ์์ ํ ๋ง์ด๊ทธ๋ ์ด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์คํํ ๋ค, ํ์ ํญ๋ชฉ์ pull request ์ฒดํฌ๋ฆฌ์คํธ๋ก ๋ฐ๊ฟ ์ฃผ๋ ์ค์บ๋๋ฅผ ๋ง๋ญ๋๋ค. ๊ตฌ๋งค์๋ ์์ ํ๋ก์ ํธ ํ๋๋ฅผ ์ฎ๊ธฐ๋ ๊ฐ์ธ ๊ฐ๋ฐ์๊ฐ ์๋๋ผ ์ฌ๋ฌ Worker๋ฅผ ๋ณด์ ํ ํ์ ๋๋ค.
์ด ๊ธฐ๋ฅ๋ง์ผ๋ก ํ์ฌ๋ฅผ ์ธ์ฐ๊ธฐ์๋ ์์๊ฐ ๋๋ฌด ์์ต๋๋ค. cloudflare worker deployment์ ๋ฏธ๊ตญ ์๊ฐ ๊ฒ์๋์ ์ฝ 10ํ์ ๋ถ๊ณผํ์ง๋ง, ๊ฒ์ ์๋๋ ๊ฑฐ๋ํ์
๋๋ค. ํฉ๋ฆฌ์ ์ธ MVP๋ Cloudflare ์ด์ ์ ํ์ด๋ ๋ง์ด๊ทธ๋ ์ด์
์๋น์ค์ ์ ๋ฃ ๊ธฐ๋ฅ์
๋๋ค. ์ ์ฅ์ ์ค์บ, cf migrate --dry-run, ๋น๋ ๊ฒ์ฆ, ๋ช
ํํ Wrangler ๋์ฒด ๊ฒฝ๋ก ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฌธ์ ๋ ๋ฒ ํ ๊ธฐ๊ฐ์ ๋ฆด๋ฆฌ์ค ๋ณ๋์
๋๋ค. ์ค์บ๋๊ฐ cf์ Cloudflare Vite Plugin ๋ฒ์ ์ ๋ฉด๋ฐํ ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๋ฉด ํ๋ก์ ํธ๋ณด๋ค ์กฐ์ธ์ด ๋ ๋นจ๋ฆฌ ๋ก์ต๋๋ค.
ํ๊ณ์ ํ์ค์ ์ธ ์ ํ
์ง๊ธ cf๊ฐ ์ ๋ง๋ ์ฉ๋๋ ๋ช ๋ น ๊ฒ์, JSON ์ค์ฌ์ ๊ณ์ ์ฝ๊ธฐ, ์ Vite Workers, ์ ์คํ ๋ง์ด๊ทธ๋ ์ด์ ์ํ์ ๋๋ค. cf๊ฐ ์์ ์ Wrangler์ ๋งก๊ธฐ๋ ํ๋ก์ ํธ์์๋ Wrangler๋ฅผ ๊ณ์ ์ค์นํด ๋๊ณ , ํ๋ก๋์ ์ฐ๊ธฐ๋ ๋ช ์์ ์ธ ๊ถํ ๋ฒ์์ ๊ฒํ ์ ์ฐจ ๋ค์ ๋ก๋๋ค.
ํ์ฌ ์คํ ๋ฒ ํ์์ cloudflare.config.ts๋ ๊ณ์ ์ ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๋จ์ผ ๊ธฐ์ค ์ ๋ณด๊ฐ ์๋๋๋ค. ์์์ ์ Workers์
๋๋ค. ๋ํ Cloudflare API ์์
์ ๋ชจ๋ ์์ ํ ๋น์ฆ๋์ค ์ํฌํ๋ก๋ก ๋ฐ๊ฟ ์ฃผ์ง๋ ์์ต๋๋ค. ์ ์ฒด API๋ฅผ ๋ค๋ฃฐ ์ ์๋ค๋ ๊ฒ์ ํ ํฐ์ด ์ ๊ทผ ๊ฐ๋ฅํ ๋ฒ์๋ ๋์ด์ง๋ค๋ ๋ป์ด๋ฏ๋ก, ์ต์ ๊ถํ๊ณผ ๋ช
๋ น ๊ฒํ ๋ ๋ ์ค์ํ ๊ฒ์ด ์๋๋ผ ๋ ์ค์ํด์ง๋๋ค.
๋ก์ปฌ ์ต์
์ ๋ฒ์๋ ์๋์ ์ผ๋ก ์ ํ๋ผ ์์ต๋๋ค. ์ง์๋๋ KV, D1, R2, Durable Object, Workflow ์์
์ ๋ก์ปฌ ์ํ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ก์ปฌ ํ์ ๊ธฐ๋ฅ์ ๋์ ํญ๋ชฉ์ด ์๋ ์์
์ ์ค๋ฅ๋ฅผ ๋
๋๋ค. ์์ ์ธก๋ฉด์์๋ ๋ฐ๋์งํ ์์ฑ์ด์ง๋ง, --local์ด Cloudflare ์ ์ฒด๋ฅผ ์ฌํํ๋ ๋ฒ์ฉ ์คํ๋ผ์ธ ๋ฏธ๋ฌ๋ผ๋ ๋ป์ ์๋๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ฒ ํ ๋ฆด๋ฆฌ์ค๋ ๋น ๋ฅด๊ฒ ๋ฐ๋๋๋ค. ํ ์์ ์์๋ ํ๋ก์ ํธ ์์กด์ฑ์ cf ๋ฒ์ ์ ๊ณ ์ ํ๊ณ , ์์ฑ๋ ์ค์ ์ ๊ฒํ ํ๋ฉฐ, CI๊ฐ ํ๋ก์ ํธ ๋ก์ปฌ ๋ฒ์ ์ ์ฌ์ฉํ๊ฒ ํฉ๋๋ค. ์ ์ญ ์ค์น๋ ๋ช ๋ น์ ํ์ํ ๋ ํธ๋ฆฌํ์ง๋ง, ํ์ ์ ๋ชจ๋๊ฐ ๊ฐ์ ๋์์ ์ป์ผ๋ ค๋ฉด ๋ฒ์ ์ ๊ณ ์ ํด์ผ ํฉ๋๋ค.
Cloudflare CLI๋ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
npm์ผ๋ก cf๋ฅผ ์ค์นํ๊ณ cf auth login ๋๋ ๋ฒ์๊ฐ ์ ํ๋ CLOUDFLARE_API_TOKEN์ผ๋ก ์ธ์ฆํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ cf cli search๋ก ๋ช
๋ น์ ์ฐพ๊ณ , ์ฐ๊ธฐ๋ฅผ ํ์ฉํ๊ธฐ ์ ์ ์ฝ๊ธฐ ์ ์ฉ JSON ๊ฒฐ๊ณผ๋ถํฐ ๊ฒ์ฆํฉ๋๋ค. ์ Worker๋ cf init์ผ๋ก ์์ํ ๋ค cloudflare.config.ts๋ฅผ ํ์ธํ๊ณ ๋ก์ปฌ ๋น๋๋ฅผ ์คํํฉ๋๋ค.
CF CLI๋ ๋ฌด์์ธ๊ฐ์?
์ด ๊ฐ์ด๋์์ cf๋ 3,000๊ฐ๊ฐ ๋๋ Cloudflare API ์์
๊ณผ Worker ํ๋ก์ ํธ ์ํฌํ๋ก๋ฅผ ์ํ Cloudflare์ ์คํ ๋ฒ ํ ๋ช
๋ น์ค ์ธํฐํ์ด์ค์
๋๋ค. ๊ฐ์ cf ์ด๋ฆ์ ์ฐ๋ ๋ณ๊ฐ์ Cloud Foundry CLI์๋ ๋ค๋ฅธ ํด์
๋๋ค.
ํฐ๋ฏธ๋์์ Cloudflare CLI๋ฅผ ์ด๋ป๊ฒ ์ค์นํ๋์?
Node.js 22 ์ด์์ ์ค์นํ ๋ค์ npm i -g cf๋ฅผ ์คํํ๊ณ cf --version์ผ๋ก ํ์ธํฉ๋๋ค. ํจํค์ง๋ Cloudflare์ ์คํ ์์ค ์ ์ฅ์์์ ๋ฐฐํฌํ๋ scope ์๋ cf ํจํค์ง์
๋๋ค.
CLI๋ก Cloudflare Wrangler๋ฅผ ์ด๋ป๊ฒ ์ค์นํ๋์?
Wrangler๋ ๋ณ๋ ํจํค์ง์ ๋๋ค. ์๋ก์ด cf ๋ฒ ํ๋ Wrangler์ esbuild ๊ฒฝ๋ก๊ฐ ํ์ํ ํ๋ก์ ํธ์ Rust ๋๋ Python Workers์์ ๋ด๋ถ์ ์ผ๋ก Wrangler๋ฅผ ๊ณ์ ์ฌ์ฉํฉ๋๋ค. cf๋ฅผ ์ค์นํ๋ค๊ณ ๊ณง๋ฐ๋ก Wrangler๋ฅผ ์ง์ฐ์ง ๋ง๊ณ , ํ๋ก์ ํธ์ ํ์ํ ํด์ ์ค์นํด ๋ฒ์ ์ ๊ณ ์ ํฉ๋๋ค.
Cloudflare Workers๋ฅผ ๋ก์ปฌ์์ ์ด๋ป๊ฒ ์คํํ๋์?
์ค์ ๋ Worker ํ๋ก์ ํธ ์์์ cf dev๋ฅผ ์คํํฉ๋๋ค. cf init์ผ๋ก ๋ง๋ ์ ํ๋ก์ ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Cloudflare Vite Plugin์ ์ฌ์ฉํฉ๋๋ค. ์ง์๋๋ ๋ฆฌ์์ค ๋ช
๋ น์๋ --local์ ๋ถ์ฌ Miniflare ๊ธฐ๋ฐ ๋ก์ปฌ ์ํ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
ํ์ ๋ง๋ ์์ ํ Cloudflare ์๋ํ ๊ฒฝ๋ก๋ฅผ ์ค๊ณํ๊ณ ๊ตฌ์ถํ๋ ค๋ฉด AI production systems๋ฅผ ํ์ธํ์ธ์.
- ๊ฒ์์ผ
- ์นดํ ๊ณ ๋ฆฌ
- Build
- ์ธ์ด







