Cloudflare Workers๋ก ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ ์ ๊ฐ๋ ฅํจ์ ์์๋ณด์ธ์. ์ฝ๋๋ฅผ ์ฃ์ง์ ์ง์ ๋ฐฐํฌํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ , ์ฝํ ์ธ ๋ฅผ ๊ฐ์ธํํ๋ฉฐ, ๋ณด์์ ๊ฐํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ : Cloudflare Workers๋ก ์ฑ๋ฅ ํฅ์
์ค๋๋ ์ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋์งํธ ํ๊ฒฝ์์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๋ ์์น์ ๊ด๊ณ์์ด ์ฆ๊ฐ์ ์ธ ๋ก๋ฉ ์๊ฐ๊ณผ ์ํํ ๊ฒฝํ์ ๊ธฐ๋ํฉ๋๋ค. ์ด๊ฒ์ด ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ ์ด ์ค์ํ ์ด์ ์ด๋ฉฐ, Cloudflare Workers๋ ์ฝ๋๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น๊ฒ ๊ฐ์ ธ์ค๋ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ ์ด๋ ๋ฌด์์ธ๊ฐ์?
์ ํต์ ์ธ ์น ์ํคํ ์ฒ๋ ์ข ์ข ์ค์ ์๋ฒ์์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. CDN(Content Delivery Networks)์ ์ ์ ์์ฐ์ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น๊ฒ ์บ์ํ์ง๋ง, ๋์ ์ฝํ ์ธ ๋ ์ฌ์ ํ ์ค๋ฆฌ์ง ์๋ฒ๋ก์ ์๋ณต์ ํ์๋ก ํฉ๋๋ค. ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ ์ CDN์ ์ฃ์ง ์๋ฒ์์ ์ง์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ํ์ฌ ์ด๋ฅผ ํ์ ํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋์ด ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋๊ธฐ ์๊ฐ์ ์ ๊ฑฐํ๊ณ , ์๋ฒ ๋ก๋๋ฅผ ์ค์ด๋ฉฐ, ๊ฐ์ธํ๋๊ณ ๋์ ์ธ ๊ฒฝํ์ ์ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค.
๋ณธ์ง์ ์ผ๋ก, ์ด์ ์ ๋ฐฑ์๋ ์๋ฒ ๋๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ๊ตญํ๋์๋ ๋ก์ง์ ์ฃ์ง ๋คํธ์ํฌ๋ก ์ด๋ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ฑ๋ฅ์ ํ๊ธฐ์ ์ผ๋ก ํฅ์์ํค๊ณ ์ด์ ์ ๋ฌ์ฑํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Cloudflare Workers ์๊ฐ
Cloudflare Workers๋ JavaScript, TypeScript ๋๋ WebAssembly ์ฝ๋๋ฅผ Cloudflare์ ๊ธ๋ก๋ฒ ๋คํธ์ํฌ์ ๋ฐฐํฌํ ์ ์๋ ์๋ฒ๋ฆฌ์ค ํ๋ซํผ์ ๋๋ค. ์ด๋ ๊ธฐ์กด ์๋ฒ ์์ด ์ฃ์ง์์ HTTP ์์ฒญ ๋ฐ ์๋ต์ ๊ฐ๋ก์ฑ๊ณ ์์ ํ๋ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
Cloudflare Workers์ ์ฃผ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ธ๋ก๋ฒ ๋๋ฌ ๋ฒ์: ์ ์ธ๊ณ์ ๊ด๋ฒ์ํ ๋ฐ์ดํฐ ์ผํฐ ๋คํธ์ํฌ๋ฅผ ๋ณด์ ํ Cloudflare์ ์ฝ๋๋ฅผ ๋ฐฐํฌํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์งง์ ๋๊ธฐ ์๊ฐ์ ๋ณด์ฅํฉ๋๋ค.
- ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ: ์๋ฒ ๋๋ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. Cloudflare๊ฐ ํ์ฅ ๋ฐ ์ ์ง๋ฅผ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฝ๋์ ์ง์คํ ์ ์์ต๋๋ค.
- ๋ฎ์ ๋๊ธฐ ์๊ฐ: ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด์์ ์ฝ๋๋ฅผ ์คํํ์ฌ ์ค๋ฆฌ์ง ์๋ฒ๋ก์ ์๋ณต์ ์ต์ํํ๊ณ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
- ๋น์ฉ ํจ์จ์ฑ: ์ฌ์ฉํ๋ ๋ฆฌ์์ค์ ๋ํด์๋ง ๋น์ฉ์ ์ง๋ถํ๋ฏ๋ก ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ๋น์ฉ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ๋๋ค.
- ๋ณด์: DDoS ๋ณดํธ ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฉํ๋ฒฝ(WAF)์ ํฌํจํ Cloudflare์ ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ Cloudflare Workers์ ์ฌ์ฉ ์ฌ๋ก
Cloudflare Workers๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฅ์์ํฌ ์ ์๋ ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ช ๊ฐ์ง ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ฃ์ง์์์ A/B ํ ์คํธ
์ค๋ฆฌ์ง ์๋ฒ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๊ณ A/B ํ ์คํธ๋ฅผ ๊ตฌํํฉ๋๋ค. Cloudflare Workers๋ ์ฌ์ฉ์๋ฅผ ์น์ฌ์ดํธ์ ๋ค๋ฅธ ๋ณํ์ ๋ฌด์์๋ก ํ ๋นํ๊ณ , ํ๋์ ์ถ์ ํ๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ธฐ๋ฐ ํต์ฐฐ๋ ฅ์ ๋ฐํ์ผ๋ก ์น์ฌ์ดํธ๋ฅผ ์ ์ํ๊ฒ ๋ฐ๋ณตํ๊ณ ์ต์ ํํ ์ ์์ต๋๋ค.
์: ์ ํ ํ์ด์ง์์ ๋ ๊ฐ์ ๋ค๋ฅธ CTA(Call-To-Action) ๋ฒํผ์ ํ ์คํธํ๋ ๊ธ๋ก๋ฒ ์ ์ ์๊ฑฐ๋ ํ์ฌ๋ฅผ ์์ํด ๋ณด์ธ์. Cloudflare Workers๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์์ 50%๋ฅผ ํ ๋ฒํผ์ผ๋ก, 50%๋ฅผ ๋ค๋ฅธ ๋ฒํผ์ผ๋ก ๋ผ์ฐํ ํ์ฌ ์ด๋ค ๋ฒํผ์ด ๋ ๋์ ์ ํ์จ๋ก ์ด์ด์ง๋์ง ์ธก์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํ ์ฝ๋๋ ์ฟ ํค๋ฅผ ์ฝ๊ณ , ์์ง ์ฟ ํค๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ๋ณํ์ ํ ๋นํ ๋ค์, ์ฌ์ฉ์์๊ฒ ์ ์ก๋๊ธฐ ์ ์ HTML ์๋ต์ ์์ ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด ๋ชจ๋ ์์ ์ ์ฃ์ง์์ ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ค๋ฆฌ์ง ์๋ฒ์ ์๋๊ฐ ๋๋ ค์ง์ง ์์ต๋๋ค.
2. ์ฝํ ์ธ ๊ฐ์ธํ
์ฌ์ฉ์์ ์์น, ๊ธฐ๊ธฐ ๋๋ ๊ธฐํ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ณ ์ฌ์ฉ์์๊ฒ ์ฝํ ์ธ ๋ฅผ ๋ง์ถค ์ค์ ํฉ๋๋ค. Cloudflare Workers๋ ์์ฒญ์ ๊ฐ๋ก์ฑ๊ณ , ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ฉฐ, ๋์ ์ผ๋ก ๊ฐ์ธํ๋ ์ฝํ ์ธ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ฐธ์ฌ ๋ฐ ์ ํ์จ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์: ๊ธ๋ก๋ฒ ๋ด์ค ์น์ฌ์ดํธ๋ Cloudflare Workers๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ธฐ์ฌ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋ฐ๋์ ์๋ ์ฌ์ฉ์๋ ์๊ตญ ์ ์น์ ๋ํ ๊ธฐ์ฌ๋ฅผ ๋ณผ ์ ์๊ณ , ๋ด์์ ์๋ ์ฌ์ฉ์๋ ๋ฏธ๊ตญ ์ ์น์ ๋ํ ๊ธฐ์ฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ Worker ์ปจํ ์คํธ ๋ด์์ ์ฌ์ฉ ๊ฐ๋ฅํ `cf` ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌ์ฑํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ฌ์ฉ์์ ์์น(๊ตญ๊ฐ, ๋์ ๋ฑ)์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Worker๋ ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ํฌํจํ๋๋ก HTML ์๋ต์ ์์ ํฉ๋๋ค.
3. ์ด๋ฏธ์ง ์ต์ ํ
๋ค์ํ ๊ธฐ๊ธฐ ๋ฐ ํ๋ฉด ํฌ๊ธฐ์ ๋ง๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ฆ์ ์ต์ ํํฉ๋๋ค. Cloudflare Workers๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณต๋๊ธฐ ์ ์ ์ต์ ์ ํ์์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ , ์์ถํ๋ฉฐ, ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ชจ๋ฐ์ผ ์ฅ์น์์ ๋์ญํญ ์๋น๋ฅผ ์ค์ด๊ณ ํ์ด์ง ๋ก๋ ์๊ฐ์ ๊ฐ์ ํฉ๋๋ค.
์: ์ฌํ ์์ฝ ์น์ฌ์ดํธ๋ Cloudflare Workers๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ๊ธฐ๊ธฐ์ ๋ฐ๋ผ ํธํ ๋ฐ ๋ชฉ์ ์ง ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ํฌ๊ธฐ ์กฐ์ ํ ์ ์์ต๋๋ค. ๋ชจ๋ฐ์ผ ํฐ ์ฌ์ฉ์๋ ๋ ์๊ณ ์ต์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๊ฒ ๋๊ณ , ๋ฐ์คํฌํฑ ์ปดํจํฐ ์ฌ์ฉ์๋ ๋ ํฌ๊ณ ๊ณ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฑ๋ฅ ์ ํ ์์ด ์ด๋ฏธ์ง๊ฐ ํญ์ ์ต์์ ํ์ง๋ก ํ์๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ค๋ฆฌ์ง ์๋ฒ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ด๋ฏธ์ง ์กฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์ข ์ข ์ฑ๋ฅ์ ์ํ WebAssembly ๋ชจ๋)๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ๋ค์, ์ต์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
4. ๊ธฐ๋ฅ ํ๋๊ทธ
๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๊ธฐ ์ ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ํ์ ์งํฉ์ ์ฝ๊ฒ ์ถ์ํฉ๋๋ค. Cloudflare Workers๋ ์ฌ์ฉ์ ์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํ์ฌ ํผ๋๋ฐฑ์ ์์งํ๊ณ ์ํํ ์ถ์๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ฅ์ ์ฃผ๋ ๊ฒ์ด ์ฌ๊ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ ํฌ๊ณ ๊ธ๋ก๋ฒํ ํ๋ซํผ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์: ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ถ์ํ๊ธฐ ์ ์ ์๋ก์ด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์๊ท๋ชจ ์ฌ์ฉ์ ๊ทธ๋ฃน์ผ๋ก ํ ์คํธํ๋ ค๊ณ ํฉ๋๋ค. Cloudflare Workers๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ผ์ ๋น์จ(์: 5%)์ ๋ฌด์์๋ก ์ ํํ๊ณ ์ UI๋ก ๋ฆฌ๋๋ ์ ํ ์ ์์ต๋๋ค. ๋๋จธ์ง ์ฌ์ฉ์๋ ์ด์ UI๋ฅผ ๊ณ์ ๋ณด๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ซํผ์ ์ UI๋ฅผ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ถ์ํ๊ธฐ ์ ์ ํผ๋๋ฐฑ์ ์์งํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. ์ด๋ ์ข ์ข ์ฟ ํค๋ฅผ ์ฝ๊ณ , ์ฌ์ฉ์์๊ฒ ๊ทธ๋ฃน์ ํ ๋นํ๊ณ , ํ ๋น์ ๊ธฐ์ตํ๋๋ก ์ฟ ํค๋ฅผ ์ค์ ํ๋ ์์ ์ ํฌํจํฉ๋๋ค.
5. ํฅ์๋ ๋ณด์
์ ์์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ์น์ฌ์ดํธ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ฃ์ง์์ ์ฌ์ฉ์ ์ง์ ๋ณด์ ์กฐ์น๋ฅผ ๊ตฌํํฉ๋๋ค. Cloudflare Workers๋ ๋ค์ํ ๊ธฐ์ค์ ๋ฐ๋ผ ์์ฒญ์ ํํฐ๋งํ๊ณ , ์์ฌ์ค๋ฌ์ด ํธ๋ํฝ์ ์ฐจ๋จํ๋ฉฐ, ๋ณด์ ์ ์ฑ ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์น์ฌ์ดํธ์ ์ถ๊ฐ์ ์ธ ๋ณดํธ ๊ณ์ธต์ ์ถ๊ฐํ๊ณ ์ค๋ฆฌ์ง ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ ๋๋ค.
์: ๊ธ์ต ๊ธฐ๊ด์ Cloudflare Workers๋ฅผ ์ฌ์ฉํ์ฌ ์์ฌ์ค๋ฌ์ด ๋ก๊ทธ์ธ ์๋๋ฅผ ๊ฐ์งํ๊ณ ์ฐจ๋จํ ์ ์์ต๋๋ค. ์ฌ์ฉ์์ IP ์ฃผ์, ์์น ๋ฐ ๋ธ๋ผ์ฐ์ ์ง๋ฌธ์ ๋ถ์ํ์ฌ Worker๋ ์ ์ฌ์ ์ผ๋ก ์ฌ๊ธฐ์ฑ ๋ก๊ทธ์ธ์ ์๋ณํ๊ณ ์ค๋ฆฌ์ง ์๋ฒ์ ๋๋ฌํ๊ธฐ ์ ์ ์ฐจ๋จํ ์ ์์ต๋๋ค. ์ด๋ ๋ฌด๋จ ์ก์ธ์ค๋ก๋ถํฐ ์ฌ์ฉ์ ๊ณ์ ์ ๋ณดํธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ ํ์ฌ ์ํ ์ธํ ๋ฆฌ์ ์ค ์๋น์ค์ ํตํฉํ๊ณ ์ฌ์ฉ์์ IP ์ฃผ์๋ฅผ ๋ธ๋๋ฆฌ์คํธ์ ๋น๊ตํ๋ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค.
6. ๋์ API ๋ผ์ฐํ
์ ์ฐํ๊ณ ๋์ ์ธ API ์๋ํฌ์ธํธ๋ฅผ ์์ฑํฉ๋๋ค. Cloudflare Workers๋ ์์ฒญ ๊ฒฝ๋ก, ์ฌ์ฉ์ ์์ฑ ๋๋ ์๋ฒ ๋ก๋์ ๊ฐ์ ๋ค์ํ ์์์ ๋ฐ๋ผ API ์์ฒญ์ ๋ค๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋ก ๋ผ์ฐํ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋ณต์๋ ฅ์ด ๋ฐ์ด๋ API๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์: ๊ธ๋ก๋ฒ ์ฐจ๋ ๊ณต์ ์ฑ์ Cloudflare Workers๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์์น์ ๋ฐ๋ผ API ์์ฒญ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ผํฐ๋ก ๋ผ์ฐํ ํ ์ ์์ต๋๋ค. ์ ๋ฝ์ ์๋ ์ฌ์ฉ์๋ ์ ๋ฝ์ ๋ฐ์ดํฐ ์ผํฐ๋ก ๋ผ์ฐํ ๋๊ณ , ์์์์ ์๋ ์ฌ์ฉ์๋ ์์์์ ๋ฐ์ดํฐ ์ผํฐ๋ก ๋ผ์ฐํ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๊ธฐ ์๊ฐ์ ์ต์ํํ๊ณ ์ฑ์ ์ ์ฒด ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ `cf` ๊ฐ์ฒด๋ฅผ ๊ฒ์ฌํ์ฌ ์ฌ์ฉ์์ ์์น๋ฅผ ํ์ธํ ๋ค์ `fetch` API๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ ์ ํ ๋ฐฑ์๋ ์๋ฒ๋ก ์ ๋ฌํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
Cloudflare Workers ์์ํ๊ธฐ
Cloudflare Workers๋ฅผ ์์ํ๊ธฐ ์ํ ๋จ๊ณ๋ณ ๊ฐ์ด๋์ ๋๋ค.
- Cloudflare ๊ณ์ ์์ฑ: ์์ง ๊ณ์ ์ด ์๋ ๊ฒฝ์ฐ cloudflare.com์์ Cloudflare ๊ณ์ ์ ๊ฐ์ ํ์ธ์.
- ์น์ฌ์ดํธ๋ฅผ Cloudflare์ ์ถ๊ฐ: ์ง์นจ์ ๋ฐ๋ผ ์น์ฌ์ดํธ๋ฅผ Cloudflare์ ์ถ๊ฐํ๊ณ DNS ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
- Wrangler CLI ์ค์น: Wrangler๋ Cloudflare Workers์ฉ ๋ช ๋ น์ค ์ธํฐํ์ด์ค์ ๋๋ค. npm์ ์ฌ์ฉํ์ฌ ์ค์นํฉ๋๋ค: `npm install -g @cloudflare/wrangler`
- Wrangler ์ธ์ฆ: Cloudflare ๊ณ์ ์ผ๋ก Wrangler๋ฅผ ์ธ์ฆํฉ๋๋ค: `wrangler login`
- ์๋ก์ด Worker ํ๋ก์ ํธ ์์ฑ: Worker ํ๋ก์ ํธ์ ๋ํ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์คํํฉ๋๋ค: `wrangler init`
- Worker ์ฝ๋ ์์ฑ: `src/index.js` ํ์ผ(๋๋ ์ ์ฌํ ํ์ผ)์ JavaScript, TypeScript ๋๋ WebAssembly ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- Worker ๋ฐฐํฌ: ๋ค์์ ์ฌ์ฉํ์ฌ Cloudflare์ Worker๋ฅผ ๋ฐฐํฌํฉ๋๋ค: `wrangler publish`
์์ Worker ์ฝ๋ (JavaScript):
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
if (url.pathname === '/hello') {
return new Response('Hello, world!', {
headers: { 'content-type': 'text/plain' },
});
} else {
return fetch(request);
}
}
์ด ๊ฐ๋จํ Worker๋ `/hello` ๊ฒฝ๋ก์ ๋ํ ์์ฒญ์ ๊ฐ๋ก์ฑ "Hello, world!" ์๋ต์ ๋ฐํํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์์ฒญ์ ๊ฒฝ์ฐ ์ค๋ฆฌ์ง ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค.
Cloudflare Workers์ ๋ชจ๋ฒ ์ฌ๋ก
Cloudflare Workers์ ์ด์ ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
- ์ฝ๋๋ฅผ ๊ฐ๋ณ๊ฒ ์ ์ง: ๋น ๋ฅธ ์คํ ์๊ฐ์ ๋ณด์ฅํ๊ธฐ ์ํด Worker ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ์ต์ํํฉ๋๋ค. ๋ถํ์ํ ์ข ์์ฑ์ ํผํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํํฉ๋๋ค.
- ์์ฃผ ์ก์ธ์คํ๋ ๋ฐ์ดํฐ ์บ์ฑ: Cloudflare์ Cache API๋ฅผ ์ฌ์ฉํ์ฌ ์ฃ์ง์์ ์์ฃผ ์ก์ธ์คํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋๊ธฐ ์๊ฐ์ด ์ค์ด๋ค๊ณ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ์ค๋ฅ๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌ: ์์์น ๋ชปํ ์ค๋ฅ๊ฐ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ๊ฐ๋ ฅํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํฉ๋๋ค. ์ค๋ฅ๋ฅผ ๊ธฐ๋กํ๊ณ ์ ์ฉํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฒ ์ ํ๊ฒ ํ ์คํธ: ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ Worker ์ฝ๋๋ฅผ ์ฒ ์ ํ๊ฒ ํ ์คํธํฉ๋๋ค. Wrangler CLI๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ์์ ์ฝ๋๋ฅผ ํ ์คํธํ๊ณ ์ถ๊ฐ ํ ์คํธ๋ฅผ ์ํด ์คํ ์ด์ง ํ๊ฒฝ์ ๋ฐฐํฌํฉ๋๋ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: Cloudflare์ ๋ถ์ ๋์๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ Workers์ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์์ฒญ ๋๊ธฐ ์๊ฐ, ์ค๋ฅ์จ ๋ฐ ์บ์ ์ ์ค๋ฅ ๊ณผ ๊ฐ์ ์งํ๋ฅผ ์ถ์ ํฉ๋๋ค.
- Workers ๋ณด์: ์ ์์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ Workers๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ๋ณด์ ์กฐ์น๋ฅผ ๊ตฌํํฉ๋๋ค. DDoS ๋ณดํธ ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฉํ๋ฒฝ(WAF)๊ณผ ๊ฐ์ Cloudflare์ ๋ณด์ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
๊ณ ๊ธ ๊ฐ๋
Cloudflare Workers KV
Workers KV๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ์ ์ง์ฐ ํค-๊ฐ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋๋ค. ์ฝ๊ธฐ ์์ฃผ์ ์ํฌ๋ก๋๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ ๊ตฌ์ฑ ๋ฐ์ดํฐ, ๊ธฐ๋ฅ ํ๋๊ทธ ๋ฐ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์ก์ธ์คํด์ผ ํ๋ ๊ธฐํ ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ด์์ ์ ๋๋ค.
Cloudflare Durable Objects
Durable Objects๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ ์ ์ฅ ๋ชจ๋ธ์ ์ ๊ณตํ์ฌ ์ฃ์ง์์ ์ํ ์ ์ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ํฉ๋๋ค. ๊ณต๋ ์์ ํธ์ง, ์ค์๊ฐ ๊ฒ์ ๋ฐ ์จ๋ผ์ธ ๊ฒฝ๋งค์ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ์ด์์ ์ ๋๋ค.
WebAssembly (Wasm)
Cloudflare Workers๋ WebAssembly๋ฅผ ์ง์ํ๋ฏ๋ก C, C++, Rust์ ๊ฐ์ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๊ฑฐ์ ๊ธฐ๋ณธ ์๋๋ก ์คํํ ์ ์์ต๋๋ค. ์ด๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ, ๋น๋์ค ์ธ์ฝ๋ฉ ๋ฐ ๋จธ์ ๋ฌ๋๊ณผ ๊ฐ์ ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์ ์ฉํฉ๋๋ค.
๊ฒฐ๋ก
Cloudflare Workers๋ฅผ ์ฌ์ฉํ ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ ์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ , ์ฝํ ์ธ ๋ฅผ ๊ฐ์ธํํ๋ฉฐ, ๋ณด์์ ๊ฐํํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ฝ๋๋ฅผ ์ฃ์ง์ ์ง์ ๋ฐฐํฌํ๋ฉด ๋๊ธฐ ์๊ฐ์ ์ต์ํํ๊ณ , ์๋ฒ ๋ก๋๋ฅผ ์ค์ด๋ฉฐ, ํ์ ์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ์น ๊ฒฝํ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด ์ ์์ต๋๋ค. ์๊ท๋ชจ ์คํํธ์ ์ด๋ ๋๊ท๋ชจ ๊ธฐ์ ์ด๋ Cloudflare Workers๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๋ค์ ๋จ๊ณ๋ก ๋์ด์ฌ๋ฆฌ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
ํํ์ ์ง์ ์ผ๋ก ๊ธ๋ก๋ฒํ๋ฉฐ, ๊ธฐ์ ์ด ๋ค์ํ ์ฒญ์ค์ ์์ฉํ๊ณ ์์น, ๊ธฐ๊ธฐ ๋ฐ ์ฌ์ฉ์ ํ๋์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝํ์ ์ต์ ํํ ์ ์๋๋ก ํฉ๋๋ค. ๋ ๋น ๋ฅด๊ณ , ๋ ๊ฐ์ธํ๋ ์น ๊ฒฝํ์ ๋ํ ์๊ตฌ๊ฐ ๊ณ์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํ๋ก ํธ์๋ ์ฃ์ง ์ปดํจํ ์ ์ ์ ๋ ์ค์ํด์ง ๊ฒ์ ๋๋ค. Cloudflare Workers์ ๊ฐ์ ๊ธฐ์ ์ ์์ฉํ๋ ๊ฒ์ ๋ ์ด์ ์ฌ์น๊ฐ ์๋๋ผ ์ค๋๋ ์ ๋์งํธ ์๋์์ ๊ฒฝ์๋ ฅ์ ์ ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
์ฃ์ง๋ฅผ ๋ฐ์๋ค์ด๊ณ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ๋ฐํํ์ธ์!