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