์๋ง์กด ํ์ฌ
Bottlerocket(๊ทธ๋ฐ๋ฐ, ์ํ ์์ ํ์ ํ์ฝ ๋ก์ผ์ ๋ถ์ ์ด๋ฆ)์ ์ปจํ ์ด๋์ฉ ์ต์ด์ OS๋ ์๋์ง๋ง AWS ์๋น์ค์์ ๊ธฐ๋ณธ ํตํฉ ๋๋ถ์ ๋๋ฆฌ ๋ณด๊ธ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์์คํ ์ Amazon ํด๋ผ์ฐ๋์ ์ด์ ์ ๋ง์ถ๊ณ ์์ง๋ง ์คํ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ์๋ฒ, Raspberry Pi, ๊ฒฝ์ ํด๋ผ์ฐ๋, ์ปจํ ์ด๋ ์๋ ํ๊ฒฝ ๋ฑ ์ด๋์์๋ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ด๋ Red Hat์ด ๋ฌป์ CoreOS ๋ฐฐํฌํ์ ์๋ฒฝํ๊ฒ ๋์ฒดํ ๊ฐ์น๊ฐ ์๋ ์ ํ์
๋๋ค.
์ค์ ๋ก Amazon Web Services ๋ถ์์๋ ์ด๋ฏธ Amazon Linux๊ฐ ์์ต๋๋ค. ์ด ๋ฒ์ ์ ์ต๊ทผ ๋ ๋ฒ์งธ ๋ฒ์ ์ผ๋ก ์ถ์๋์์ต๋๋ค. ์ด๋ Docker ์ปจํ
์ด๋ ๋๋ Linux KVM, Microsoft Hyper-V ๋ฐ VMware์์ ์คํํ ์ ์๋ ๋ฒ์ฉ ๋ฐฐํฌํ์
๋๋ค. ESXi ํ์ดํผ๋ฐ์ด์ . AWS ํด๋ผ์ฐ๋์์ ์คํ๋๋๋ก ์ต์ ํ๋์์ง๋ง Bottlerocket์ด ์ถ์๋๋ฉด์ ๋ชจ๋ ์ฌ๋์ด ๋ ์์ ํ๊ณ ํ๋์ ์ด๋ฉฐ ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ์๋ก์ด ์์คํ
์ผ๋ก ์
๊ทธ๋ ์ด๋ํ๋๋ก ๊ถ์ฅ๋ฉ๋๋ค.
AWS๊ฐ Bottlerocket์ ๋ฐํํ์ต๋๋ค.
๊ทน๋์ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ
Linux์์๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ์ง ์์ ๋ชจ๋ ๊ฒ์ด ์ ๊ฑฐ๋์์ต๋๋ค. ํ์ฌ์ ๋ฐ๋ฅด๋ฉด ์ด ๋์์ธ์ ๊ณต๊ฒฉ ํ๋ฉด์ ์ค์ ๋๋ค.
์ฆ, ๊ธฐ๋ณธ ์์คํ ์ ์ค์น๋๋ ํจํค์ง ์๊ฐ ์ ์ด OS ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ ๋ฐ์ดํธ๊ฐ ๋ ์ฌ์์ง๊ณ ์ข ์์ฑ์ผ๋ก ์ธํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค์ด ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ์ค์ด๋ญ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ธฐ์ ๋ชจ๋ ๋ด์ฉ์ ๋ณ๋์ ์ปจํ ์ด๋ ๋ด์์ ์๋ํ๋ฉฐ ๊ธฐ๋ณธ ์์คํ ์ ๊ฑฐ์ ๊ทธ๋๋ก์ ๋๋ค.
Amazon์ ๋ํ ๋ชจ๋ ์ ธ๊ณผ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ ๊ฑฐํ์ฌ ์ด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์ค์๋ก ๊ถํ์ ์์น์ํฌ ์ํ์ ์ ๊ฑฐํ์ต๋๋ค. ๋ฏธ๋๋ฉ๋ฆฌ์ฆ๊ณผ ๋ณด์์ ์ํด ๊ธฐ๋ณธ ์ด๋ฏธ์ง์๋ ๋ช ๋ น ์ ธ, SSH ์๋ฒ ๋๋ Python๊ณผ ๊ฐ์ ํด์ ์ธ์ด๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ๊ด๋ฆฌ์ ๋๊ตฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์๋ ๋ณ๋์ ์๋น์ค ์ปจํ ์ด๋์ ๋ฐฐ์น๋ฉ๋๋ค.
์์คํ ์ API์ ์ค์ผ์คํธ๋ ์ด์ ์ด๋ผ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค.
๊ฐ๋ณ ์ํํธ์จ์ด๋ฅผ ์ ๋ฐ์ดํธํ๋ ํจํค์ง ๊ด๋ฆฌ์ ๋์ Bottlerocket์ ์ ์ฒด ํ์ผ ์์คํ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ฌ๋ถํ ํฉ๋๋ค. ๋ก๋๊ฐ ์คํจํ๋ฉด ์๋์ผ๋ก ๋กค๋ฐฑ๋๊ณ , ์ํฌ๋ก๋๊ฐ ์คํจํ๋ฉด ์๋์ผ๋ก ๋กค๋ฐฑ์ด ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ต๋๋ค(API๋ฅผ ํตํ ๋ช ๋ น).
๋ผ๋ /etc
RAM์ ํ์ผ ์์คํ
๊ณผ ํจ๊ป ๋ง์ดํธ๋จ /etc
์ง์๋์ง ์์: ์ค์ ์ ์ ์ฅํ๋ ค๋ฉด API๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ๋ณ๋์ ์ปจํ
์ด๋๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
API ์
๋ฐ์ดํธ ๋ฐฉ์
ะะตะทะพะฟะฐัะฝะพััั
์ปจํ
์ด๋๋ Linux ์ปค๋์ ํ์ค ๋ฉ์ปค๋์ฆ์ธ cgroup, ๋ค์์คํ์ด์ค ๋ฐ seccomp์ ์ํด ์์ฑ๋๋ฉฐ ๊ฐ์ ์ก์ธ์ค ์ ์ด ์์คํ
, ์ฆ ์ถ๊ฐ ๊ฒฉ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฑ ์ ์ปจํ ์ด๋์ ์ปค๋ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๋๋ก ํ์ฑํ๋ฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ๋ ์ฌ์ฉ์๋ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ์ง ๋ชปํ๋๋ก ํ๋๊ทธ๋ก ๋ณดํธ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ผ ์์คํ ์ ์ ๊ทผํ๋ฉด Bottlerocket์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ณ ์ถ์ ํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
"์์ฒด ๊ฒ์ฌ ๋ถํ
" ๋ชจ๋๋ device-mapper-verity ๊ธฐ๋ฅ์ ํตํด ๊ตฌํ๋ฉ๋๋ค(
์์คํ
์ ํํฐ๋ ์์ต๋๋ค
์คํ ๋ชจ๋ธ
์ฌ์ฉ์ ์ ์
ํธ์ง
ะะตะทะพะฟะฐัะฝะพััั
์คํจ ๋ชจ๋
๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค
์ฌ์ฉ์
์์
์
์ด๋ค
์ฌ์ฉ์ ๊ถ๋ฆฌ
์ธํฐ๋ฝํธ ์คํ
์์คํ
ํธ์ถ, ์ค๋ฅ
ํต์ฌ
์์
์๋
๊ณต์
์๋
์ปค๋ ํจ๋
ะฟััะผะพะน
BPF
ัะพะฑััะธะต
์
JIT, ์ฝ์ด-RE
๊ฒ์ฆ, JIT
์๋ฌ ๋ฉ์์ง
์ ํ๋ ๋์ฐ๋ฏธ
BPF๊ฐ ์ผ๋ฐ ์ฌ์ฉ์ ๋๋ ์ปค๋ ์์ค ์ฝ๋์ ๋ค๋ฅธ ์
AWS๋ Bottlerocket์ด "๊ด๋ฆฌ ๊ถํ์ด ์๋ ํ๋ก๋์ ์๋ฒ์ ๋ํ ์ฐ๊ฒฐ์ ๋ฐฉ์งํ์ฌ ๋ณด์์ ๋์ฑ ๊ฐํํ๋ ์ด์ ๋ชจ๋ธ์ ์ฌ์ฉ"ํ๋ฉฐ "๊ฐ ๊ฐ๋ณ ํธ์คํธ์ ๋ํ ์ ์ด๊ฐ ์ ํ๋๋ ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์ ์ ํฉ"ํ๋ค๊ณ ๋ฐํ์ต๋๋ค.
์์คํ
๊ด๋ฆฌ์๋ฅผ ์ํด ๊ด๋ฆฌ์ ์ปจํ
์ด๋๊ฐ ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฌ๋ AWS๋ ๊ด๋ฆฌ์๊ฐ Bottlerocket ๋ด๋ถ์์ ์์
ํ ํ์๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. "๋ณ๋์ Bottlerocket ์ธ์คํด์ค์ ๋ก๊ทธ์ธํ๋ ํ์๋ ์์ฃผ ๋ฐ์ํ์ง ์๋ ์์
, ์ฆ ๊ณ ๊ธ ๋๋ฒ๊น
๋ฐ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ๊ฒ์
๋๋ค."
๋ฌ์คํธ ์ธ์ด
์ปค๋ ์๋จ์ OS ๊ณ์ธก์ ๋๋ถ๋ถ Rust๋ก ์์ฑ๋์์ต๋๋ค. ์ด ์ธ์ด๋ ๊ทธ ์ฑ๊ฒฉ์
ํ๋๊ทธ๋ ๋น๋ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋ฉ๋๋ค. --enable-default-pie
ะธ --enable-default-ssp
์คํ ํ์ผ์ ์ฃผ์ ๊ณต๊ฐ ๋ฌด์์ํ๋ฅผ ํ์ฑํํฉ๋๋ค(
C/C++ ํจํค์ง์ ๊ฒฝ์ฐ ์ถ๊ฐ ํ๋๊ทธ๊ฐ ํฌํจ๋ฉ๋๋ค. -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
ะธ -fstack-clash-protection
.
Rust ๋ฐ C/C++ ์ธ์๋ ์ผ๋ถ ํจํค์ง๋ Go๋ก ์์ฑ๋์์ต๋๋ค.
AWS ์๋น์ค์์ ํตํฉ
์ ์ฌํ ์ปจํ ์ด๋ ์ด์ ์ฒด์ ์์ ์ฐจ์ด์ ์ Amazon์ด Bottlerocket์ AWS์์ ์คํํ๊ณ ๋ค๋ฅธ AWS ์๋น์ค์ ํตํฉํ๋๋ก ์ต์ ํํ๋ค๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ดํฐ๋ Kubernetes์ด๋ฏ๋ก AWS๋ ์์ฒด EKS(Enterprise Kubernetes Service)์์ ํตํฉ์ ๋์
ํ์ต๋๋ค. ์ค์ผ์คํธ๋ ์ด์
๋๊ตฌ๋ ๋ณ๋์ ์ ์ด ์ปจํ
์ด๋์ ์ ๊ณต๋ฉ๋๋ค.
๊ณผ๊ฑฐ์ ์ ์ฌํ ๊ณํ์ด ์คํจํ๋ ์ ์ ๊ณ ๋ คํ๋ฉด Bottlerocket์ด ์ฑ๊ณตํ ์ ์์์ง ์ง์ผ๋ณด๋ ๊ฒ์ ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด Vmware์ PhotonOS๋ ์์ ๊ถ์ด ์ฃผ์ฅ๋์ง ์์ ๊ฒ์ผ๋ก ๋ฐํ์ก๊ณ RedHat์ CoreOS์
Bottlerocket์ด AWS ์๋น์ค์ ํตํฉ๋๋ฉด์ ์ด ์์คํ
์ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ๋
ํนํด์ก์ต๋๋ค. ์ด๊ฒ์ด ์๋ง๋ ์ผ๋ถ ์ฌ์ฉ์๊ฐ CoreOS ๋๋ Alpine๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฐฐํฌํ๋ณด๋ค Bottlerocket์ ์ ํธํ๋ ์ฃผ๋ ์ด์ ์ผ ๊ฒ์
๋๋ค. ์์คํ
์ ์ฒ์์ EKS ๋ฐ ECS์ ํจ๊ป ์๋ํ๋๋ก ์ค๊ณ๋์์ง๋ง ์ด๊ฒ์ด ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋ผ๋ ์ ์ ๋ค์ ํ๋ฒ ๊ฐ์กฐํฉ๋๋ค. ์ฒซ์งธ, Bottlerocket์
Bottlerocket ์์ค ์ฝ๋๋ Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ GitHub์ ๊ฒ์๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด๋ฏธ
๊ด๊ณ ์ ๊ถ๋ฆฌ์
VDSina ์ ๊ณต
์ถ์ฒ : habr.com