Cloudflare Workers, ์ง์ TCP ์์ผ ์์ฑ์ ์ง์ํ๋ connect() API ๊ณต๊ฐ
Cloudflare Workers๋ ์ด์ connect() API๋ก ์์๋ฐ์ด๋ TCP ์์ผ ์์ฑ์ ์ง์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์์ ์ ํ๊ฒฝ์์ ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํฌํจํ TCP ๊ธฐ๋ฐ ์ธํ๋ผ์ ์ํํ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.

์ต๊ทผ ๊ฐ๋ฐ์ ์ฃผ๊ฐ 2023์์ Cloudflare๋ ๊ฐ๋ฐ์๊ฐ ์์๋ฐ์ด๋ TCP ์์ผ์ ์ค์ ํ ์ ์๋๋ก ์ง์ํ๋ ์๋ก์ด Worker API๋ฅผ ๊ณต๊ฐํ์ต๋๋ค. ์ด ํ๊ธฐ์ ์ธ ์์ผ API๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํฌํจ๋ Worker์์ ์ง์ TCP ๊ธฐ๋ฐ ์ธํ๋ผ์ ์ํํ๊ฒ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ง๊ธ๊น์ง ์์ ์๋ HTTP endpoints ๋ฐ ๊ธฐํ Cloudflare ์๋น์ค์๋ง ํต์ ํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ TCP ์์ผ์ ์ค์ ํด์ผ ํฉ๋๋ค.
Cloudflare์ ์ ํ ๊ด๋ฆฌ์์ธ Brendan Irvine-Broque์ Cloudflare์ ์ ํ ์ฑ ์์์ธ Matt Silverlock์ ์ API์ ๋ํด ์์ธํ ์ค๋ช ํ์ต๋๋ค. ...) ํ์ง๋ง TCP ์์ผ์ ๊ฒฝ์ฐ ๋ฐํ์ ์ ๋ฐ์ ๊ฑธ์ณ ๋ช ํํ ๊ณต์ ํ์ค์ด ์๋ค๋ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๊ธฐ์กด API ๋ฐ ์ ์์ ์ต์์ ์์๋ฅผ ํตํฉํ๋ ค๊ณ ๋ ธ๋ ฅํ์ผ๋ฉฐ ํฅํ ํ์ค์ ๋ค์ ๊ธฐ์ฌํ ๊ณํ์ ๋๋ค."
์๋ ๊ฐ์์ Cloudflare, Vercel ๋ฐ Shopify๋ ๋น์น ๋ธ๋ผ์ฐ์ ๋ฐ JavaScript ๊ธฐ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ์คํ๋ ์น API์ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ ๊ตฌํ์ ๋ง๋๋ ๋ฐ ์ ๋ ํ๋ ์๋ก์ด ์ปค๋ฎค๋ํฐ ๊ทธ๋ฃน์ธ WinterCG๋ฅผ ์ค๋ฆฝํ์ต๋๋ค.
์ต์ API๋ cloudflare:sockets ์์ ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. PostgreSQL์ฉ JavaScript ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ์ธ pg๋ ์ด๋ฏธ ์๋ก์ด API๋ฅผ ์ง์ํ์ง๋ง MySQL ๋๋ผ์ด๋ฒ( mysql ๋ฐ mysql2) ๋ ์์ง ์ง์ํ์ง ์์ต๋๋ค. Irvine-Broque์ Silverlock์ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ํฉ๋๋ค.
๋ชจ๋ ์์ฒญ์ โโ๋ํด ์ ์ฐ๊ฒฐ์ด ์์ฑ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ํ๋ซํผ(...)์์ ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ํ์ฌ ๊ฐ์ฅ ํฐ ๊ณผ์ ์ค ํ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ ํ๋ง์ ๋ํ ๋ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ ์ฐ๊ตฌํ๊ณ ์์ต๋๋ค.
Cloudflare๋ QUIC ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ ์ฝ๊ณผ ํจ๊ป ๊ฐ๋ฐ์๊ฐ ์์ฒญํ ์ธ๋ฐ์ด๋ TCP ๋ฐ UDP ์ฐ๊ฒฐ ์ง์๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ํฅํ ์ถ์ํ ์์ ์ ๋๋ค.
connect() API์ ๋์ ์ 2023๋ ๊ฐ๋ฐ์ ์ฃผ๊ฐ ๋์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๋ฐํ์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ฐ์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํ Secrets Store์ ์ถ์, D1(Cloudflare์ ์๋ฒ๋ฆฌ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ๋ํ ๊ฐ์ ์ฌํญ, Queues ๋ฉ์์ง ์๋น์ค์ ์๋น์ ๋์์ฑ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. . ๋ํ Cloudflare๋ Neon, PlanetScale ๋ฐ Supabase on Workers๋ฅผ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ์ ๋ฐํํ์ต๋๋ค.
์ด๋ฆฐ ๊ฐ TCP ์์ผ์ ์์ ์๊ฐ ๋์์ ์ ์งํ ์ ์๋ ์ด๋ฆฐ ์ฐ๊ฒฐ์ ์ต๋ ์์ ๊ธฐ์ฌํฉ๋๋ค. SMTP ๋ฉ์ผ ์๋ฒ๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด๊ธฐ ์ํด ํฌํธ 25์์ TCP ์ฐ๊ฒฐ์ ์์ฑํ๋ ๊ฒ์ ์ฌ์ ํ โโ๋ถ๊ฐ๋ฅํฉ๋๋ค.
AppMaster ์ ๊ฐ์ ๋ ธ์ฝ๋ ๋ฐ ๋ก์ฐ์ฝ๋ ํ๋ซํผ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ connect() API์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋์ ์ ์ฐ๊ฒฐ์ ๊ฐ์ํํ๊ณ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ก์ด ๊ธฐํ๋ฅผ ์ฐฝ์ถํจ์ผ๋ก์จ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋์ฑ ๊ฐํํ ๊ฒ์ ๋๋ค.


