ํด๋ผ์ฐ๋ ์์คํ , ๋ง์ดํฌ๋ก์๋น์ค, ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋ ๋ฐ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ ์คํํ๊ธฐ ์ํ ์ ํ์ ๊ฐ๋ฐํ๋ ํ์ฌ์ธ Solo.io๋ ๋ด๋ถ ํน์ ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ eBPF ํ๋ก๊ทธ๋จ์ ์ค๋น, ๋ฐฐํฌ ๋ฐ ์คํ์ ๋จ์ํํ๊ธฐ ์ํ ์คํ ์์ค ํดํท์ธ BumbleBee๋ฅผ ์ถ์ํ์ต๋๋ค. Linux ์ปค๋์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์์ ์ฒ๋ฆฌ, ์ก์ธ์ค ์ ์ด ๋ฐ ์์คํ ๋ชจ๋ํฐ๋ง์ ํ์ฉํฉ๋๋ค. ์ฝ๋๋ Go๋ก ์์ฑ๋์์ผ๋ฉฐ Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
BumbleBee๋ฅผ ์ฌ์ฉํ๋ฉด eBPF ํ๋ก๊ทธ๋จ์ OCI(Open Container Initiative) ํ์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ํจํค์งํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ปดํ์ผ์ด๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์ถ๊ฐ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ชจ๋ ์์คํ ์์ ์คํํ ์ ์์ต๋๋ค. eBPF ํธ๋ค๋ฌ์์ ์ค๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ์ฝ์ด์ ์๋ eBPF ์ฝ๋์์ ์ํธ ์์ฉ์ BumbleBee์ ์ํด ์ธ๊ณ๋ฉ๋๋ค. BumbleBee๋ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฉํธ๋ฆญ, ํ์คํ ๊ทธ๋จ ๋๋ ๋ก๊ทธ ํ์์ผ๋ก ์๋์ผ๋ก ๋ด๋ณด๋ ๋๋ค. ์ปฌ ์ ํธ๋ฆฌํฐ. ์ ์๋ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ eBPF ์ฝ๋ ์์ฑ์ ์ง์คํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์ด ์ฝ๋์์ ์ํธ ์์ฉ, ์ด์ ๋ธ๋ฆฌ ๋ฐ ์ปค๋ ๋ก๋ฉ์ ๊ตฌ์ฑํ๋ ๋ฐ ๋ฐฉํด๊ฐ ๋์ง ์์ต๋๋ค.
eBPF ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ๊ธฐ ์ํด Docker ์คํ์ผ์ "bee" ์ ํธ๋ฆฌํฐ๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ด ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ถ ์ ์ฅ์์์ ๊ด์ฌ ์๋ eBPF ํธ๋ค๋ฌ๋ฅผ ์ฆ์ ๋ค์ด๋ก๋ํ์ฌ ๋ก์ปฌ ์์คํ ์์ ์คํํ ์ ์์ต๋๋ค. ํดํท์ ์ฌ์ฉํ๋ฉด ์ ํํ ์ฃผ์ ์ eBPF ํธ๋ค๋ฌ์ ๋ํด C์์ ์ฝ๋ ํ๋ ์์ํฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค(ํ์ฌ๋ ๋คํธ์ํฌ ์คํ ๋ฐ ํ์ผ ์์คํ ์ ๋ํ ํธ์ถ์ ๊ฐ๋ก์ฑ๋ ๋คํธ์ํฌ ๋ฐ ํ์ผ ์์ ์ฉ ํธ๋ค๋ฌ๋ง ์ง์๋ฉ๋๋ค). ์์ฑ๋ ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ์๋ ๊ด์ฌ ์๋ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
BCC(BPF Compiler Collection)์ ๋ฌ๋ฆฌ BumbleBee๋ Linux ์ปค๋์ ๊ฐ ๋ฒ์ ์ ๋ํ ํธ๋ค๋ฌ ์ฝ๋๋ฅผ ์์ ํ ๋ค์ ๋น๋ํ์ง ์์ต๋๋ค(BCC๋ eBPF ํ๋ก๊ทธ๋จ์ด ์์๋ ๋๋ง๋ค Clang์ ์ฌ์ฉํ์ฌ ์ฆ์ ์ปดํ์ผ์ ์ฌ์ฉํฉ๋๋ค). ์ด์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด CO-RE ๋ฐ libbpf ๋๊ตฌ๊ฐ ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋๋ฅผ ํ ๋ฒ๋ง ๋น๋ํ๊ณ ๋ก๋๋ ํ๋ก๊ทธ๋จ์ ํ์ฌ ์ปค๋ ๋ฐ BTF ์ ํ ํ์์ ๋ง๊ฒ ์กฐ์ ํ๋ ํน์ ๋ฒ์ฉ ๋ก๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. BumbleBee๋ libbpf์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด๋ฉฐ ํ์ค eBPF ๋งต ๊ตฌ์กฐ RingBuffer ๋ฐ HashMap์ ์๋ ๋ฐ์ดํฐ์ ์๋ ํด์ ๋ฐ ํ์๋ฅผ ์ํ ์ถ๊ฐ ์ ํ์ ์ ๊ณตํฉ๋๋ค.
์ต์ข
eBPF ํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ณ OCI ์ด๋ฏธ์ง๋ก ์ ์ฅํ๋ ค๋ฉด "bee build file_with_code name:version" ๋ช
๋ น์ ์คํํ๊ณ "bee run name:version" ๋ช
๋ น์ ์คํํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋ค๋ฌ์์ ๋ฐ์ ์ด๋ฒคํธ๋ ํฐ๋ฏธ๋ ์ฐฝ์ ์ถ๋ ฅ๋์ง๋ง, ํ์ํ ๊ฒฝ์ฐ ํธ๋ค๋ฌ์ ๋ฐ์ธ๋ฉ๋ ๋คํธ์ํฌ ํฌํธ์ ์ปฌ ๋๋ wget ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ํธ๋ค๋ฌ๋ OCI ํธํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํตํด ๋ฐฐํฌ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ghcr.io ๋ฆฌํฌ์งํ ๋ฆฌ(GitHub Container Registry)์์ ์ธ๋ถ ํธ๋ค๋ฌ๋ฅผ ์คํํ๋ ค๋ฉด "bee run ghcr.io/solo-io/bumblebee/tcpconnect:" ๋ช
๋ น์ ์คํํ ์ ์์ต๋๋ค. $(๋ฒ ๋ฒ์ )โ. ์ ์ฅ์์ ํธ๋ค๋ฌ๋ฅผ ๋ฐฐ์นํ๋ ค๋ฉด "bee push" ๋ช
๋ น์ ์ ์ํ๊ณ , ๋ฒ์ ์ ๋ฐ์ธ๋ฉํ๋ ค๋ฉด "bee tag"๋ฅผ ์ ์ํฉ๋๋ค.
์ถ์ฒ : opennet.ru