Cloudflare๋Š” NGINX์—์„œ Rust๋กœ ์ž‘์„ฑ๋œ ์ž์ฒด Pingora ํ”„๋ก์‹œ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

Cloudflare๋Š” Rust๋กœ ์ž‘์„ฑ๋œ Pingora ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ”„๋ก์‹œ๋Š” NGINX ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ์„ Lua ์Šคํฌ๋ฆฝํŠธ๋กœ ๋Œ€์ฒดํ–ˆ์œผ๋ฉฐ ํ•˜๋ฃจ์— 70์กฐ ๊ฑด์ด ๋„˜๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŠน์ˆ˜ ํ”„๋ก์‹œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์•ˆ์ „ํ•œ ์ž‘์—…์œผ๋กœ ์ธํ•ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ฑ๋Šฅ ๋ฐ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Pingora ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์–‘์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ CPU ๋ฆฌ์†Œ์Šค๋Š” 67%, ๋ฉ”๋ชจ๋ฆฌ๋Š” XNUMX% ์ ๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋žซ๋™์•ˆ NGINX ๋ฐ Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ์ตœ์ข… ์„œ๋ฒ„ ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์„ ํ”„๋ก์‹œํ•˜๋Š” ์‹œ์Šคํ…œ์€ Cloudflare์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ–ˆ์ง€๋งŒ ๋„คํŠธ์›Œํฌ๊ฐ€ ์„ฑ์žฅํ•˜๊ณ  ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๋ฒ”์šฉ ์†”๋ฃจ์…˜์€ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ ๊ฐ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๊ธฐํšŒ์˜ ํ™•์žฅ์„ฑ๊ณผ ๊ตฌํ˜„์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด. ํŠนํžˆ ๋‹จ์ˆœํ•œ ๊ฒŒ์ดํŠธ์›จ์ด์™€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ด์ƒ์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ์š”์ฒญ์„ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์—ฌ ๋‹ค๋ฅธ HTTP ํ—ค๋” ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ณ„๋„์˜ ์ž‘์—…์ž ํ”„๋กœ์„ธ์Šค(์ž‘์—…์ž)๋กœ ๋ถ„ํ• ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ๋Œ€์‹  Pingora๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ Cloudflare ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค(ํ†ต๊ณ„ ๋ณ€ํ™”๊ฐ€ ํฐ ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ์˜ ํŠธ๋ž˜ํ”ฝ ์ง‘์ค‘)์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. CPU ์ฝ”์–ด. ํŠนํžˆ nginx์—์„œ ๋ถˆ๊ท ํ˜•ํ•œ ์š”์ฒญ์„ ํ”„๋กœ์„ธ์Šค์— ๋ฐ”์ธ๋”ฉํ•˜๋ฉด CPU ์ฝ”์–ด์— ๋ถˆ๊ท ํ˜•ํ•œ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์š”์ฒญ๊ณผ I/O ์ฐจ๋‹จ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ ค์กŒ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฐ๊ฒฐ ํ’€์„ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ๋ฐ”์ธ๋”ฉํ•˜๋ฉด ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—์„œ ์ด๋ฏธ ์„ค์ •๋œ ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

nginx:

Cloudflare๋Š” NGINX์—์„œ Rust๋กœ ์ž‘์„ฑ๋œ ์ž์ฒด Pingora ํ”„๋ก์‹œ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•‘๊ณ ๋ผ:

Cloudflare๋Š” NGINX์—์„œ Rust๋กœ ์ž‘์„ฑ๋œ ์ž์ฒด Pingora ํ”„๋ก์‹œ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

Pingora์˜ ๋„์ž…์œผ๋กœ ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ ์„ค์ • ์ž‘์—… ์ˆ˜๋ฅผ 160๋ฐฐ ์ค„์ด๊ณ  ์žฌ์‚ฌ์šฉ ์š”์ฒญ์˜ ๋น„์œจ์„ 87.1%์—์„œ 99.92%๋กœ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์žฌ์—ฐ๊ฒฐ์„ ์ค„์ด๊ณ  CPU ์ฝ”์–ด๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ƒˆ ํ”„๋ก์‹œ์˜ ์„ฑ๋Šฅ์€ ์ฃผ๋กœ nginx์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๋Š๋ฆฐ Lua ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Rust ์–ธ์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „ ๋„๊ตฌ์˜ ๊ฐ€์šฉ์„ฑ๊ณผ ๊ฒฐํ•ฉ๋œ ๊ณ ์„ฑ๋Šฅ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Cloudflare ์—”์ง€๋‹ˆ์–ด์˜ ๋†’์€ ์ž๊ฒฉ๊ณผ C ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ ๊ฒ€ํ† ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ(์˜ˆ: HTML ํŒŒ์„œ์˜ ์ทจ์•ฝ์„ฑ)๋กœ ์ด์–ด์ง€๋Š” ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ฝ”๋“œ์— ๊ด€ํ•ด์„œ๋Š” Pingora์˜ ํฌ๋ž˜์‹œ ๋ถ„์„ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ๋Š”๋ฐ, ์ด๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ Linux ์ปค๋„์˜ ๋ฒ„๊ทธ ๋ฐ ํ•˜๋“œ์›จ์–ด ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Linus Torvalds๋Š” ์š”์ฆ˜ ์—ด๋ฆฌ๋Š” Open-Source Summit Europe ์ปจํผ๋Ÿฐ์Šค์—์„œ Linux ์ปค๋„์— Rust ์–ธ์–ด ์ง€์›์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผํ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. 6.0 ์ปค๋„์—๋Š” Rust ์–ธ์–ด๋กœ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํŒจ์น˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ Linus์— ๋”ฐ๋ฅด๋ฉด 6.1 ์ปค๋„์— ์ฑ„ํƒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ํ†ตํ•ฉ์„ ์ถ”์ง„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Rust์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋™๊ธฐ๋กœ Linus๋Š” ๋ณด์•ˆ์— ๋Œ€ํ•œ ๊ธ์ •์ ์ธ ์˜ํ–ฅ ์™ธ์—๋„ ์ƒˆ๋กœ์šด ์ฐธ๊ฐ€์ž์˜ ํ•ต์‹ฌ ์ž‘์—…์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€