2023๋…„ 5์›” 29์ผยท1๋ถ„ ์ฝ๊ธฐ

Cloudflare Workers, ์ง์ ‘ TCP ์†Œ์ผ“ ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” connect() API ๊ณต๊ฐœ

Cloudflare Workers๋Š” ์ด์ œ connect() API๋กœ ์•„์›ƒ๋ฐ”์šด๋“œ TCP ์†Œ์ผ“ ์ƒ์„ฑ์„ ์ง€์›ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์—…์ž ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•œ TCP ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ์— ์›ํ™œํ•˜๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Cloudflare Workers, ์ง์ ‘ TCP ์†Œ์ผ“ ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” connect() API ๊ณต๊ฐœ

์ตœ๊ทผ ๊ฐœ๋ฐœ์ž ์ฃผ๊ฐ„ 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์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์˜ ๋„์ž…์€ ์—ฐ๊ฒฐ์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๊ธฐํšŒ๋ฅผ ์ฐฝ์ถœํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋”์šฑ ๊ฐ•ํ™”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Easy to start
Create something amazing

Experiment with AppMaster with free plan.
When you will be ready you can choose the proper subscription.

Get Started
Cloudflare Workers, ์ง์ ‘ TCP ์†Œ์ผ“ ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” connect() API ๊ณต๊ฐœ | AppMaster