NGINX ํ”„๋กœ์ ํŠธ๋Š” Rust ์–ธ์–ด๋กœ ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.

NGINX ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์ž๋Š” Rust ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ NGINX http ์„œ๋ฒ„ ๋ฐ ๋‹ค์ค‘ ํ”„๋กœํ† ์ฝœ ํ”„๋ก์‹œ์šฉ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ngx-rust ํˆดํ‚ท์„ ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ngx-rust ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋˜๋ฉฐ ํ˜„์žฌ ๋ฒ ํƒ€ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์— ์ด ํˆดํ‚ท์€ NGINX ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” Kubernetes ํ”Œ๋žซํผ์šฉ Istio ํ˜ธํ™˜ ์„œ๋น„์Šค ๋ฉ”์‹œ ๊ฐœ๋ฐœ์„ ๊ฐ€์†ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œํ’ˆ์€ ํ”„๋กœํ† ํƒ€์ž…์„ ๋„˜์–ด์„œ์ง€ ๋ชปํ•˜๊ณ  ๋ช‡ ๋…„ ๋™์•ˆ ์ •์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœํ† ํƒ€์ž… ํ”„๋กœ์„ธ์Šค ์ค‘์— ๊ฒŒ์‹œ๋œ ์˜ˆ์ œ ๋ฐ”์ธ๋”ฉ์€ Rust์—์„œ NGINX์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์‚ฌ ํ”„๋กœ์ ํŠธ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ผ๋งˆ ํ›„ F5 ํšŒ์‚ฌ๋Š” ์„œ๋น„์Šค๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด NGINX์šฉ ํŠน์ˆ˜ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜ ์œ„ํ—˜์„ ์ค„์ด๊ธฐ ์œ„ํ•ด Rust ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Rust ์–ธ์–ด๋กœ NGINX์šฉ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กญ๊ณ  ํ–ฅ์ƒ๋œ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์ž„๋ฌด๋ฅผ ๋งก์€ ngx-rust์˜ ์ž‘์„ฑ์ž๊ฐ€ ํ•ฉ๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํˆดํ‚ท์—๋Š” ๋‘ ๊ฐœ์˜ ์ƒ์ž ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • nginx-sys - NGINX ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฐ”์ธ๋”ฉ ์ƒ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” NGINX ์ฝ”๋“œ ๋ฐ ๋ชจ๋“  ๊ด€๋ จ ์ข…์†์„ฑ์„ ๋กœ๋“œํ•œ ๋‹ค์Œ bingen์„ ์‚ฌ์šฉํ•˜์—ฌ ์›๋ž˜ ํ•จ์ˆ˜(FFI, ์™ธ๋ถ€ ํ•จ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค)์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ngx - Rust ์ฝ”๋“œ์—์„œ C ํ•จ์ˆ˜์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ด์–ด, API ๋ฐ nginx-sys๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ฐ”์ธ๋”ฉ์„ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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