์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ Linux ๋ฐฐํฌํŒ์ธ Bottlerocket์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ Linux ๋ฐฐํฌํŒ์ธ Bottlerocket์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€

์•„๋งˆ์กด ํšŒ์‚ฌ ๋ฐœํ‘œํ–ˆ๋‹ค. ์ตœ์ข… ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ๋ณ‘ ๋กœ์ผ“ โ€” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ „๋ฌธ ๋ฐฐํฌํŒ์ž…๋‹ˆ๋‹ค.

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์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 2020 ๋…„ XNUMX ์›”. ๊ทธ๋…€๋Š” CoreOS, Rancher OS ๋ฐ Project Atomic์„ ์˜๊ฐ์˜ ์›์ฒœ์œผ๋กœ ์–ธ๊ธ‰ํ•˜๋ฉด์„œ ์ด๊ฒƒ์ด ์ตœ์ดˆ์˜ "์ปจํ…Œ์ด๋„ˆ์šฉ Linux"๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ์ฆ‰์‹œ ์ธ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์šด์˜ ์ฒด์ œ๊ฐ€ "์˜ค๋žซ๋™์•ˆ Amazon ๊ทœ๋ชจ๋กœ ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ตํ›ˆ๊ณผ ์ง€๋‚œ XNUMX๋…„ ๋™์•ˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์–ป์€ ๊ฒฝํ—˜์˜ ๊ฒฐ๊ณผ"๋ผ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค.

๊ทน๋„์˜ ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜

Linux์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด ์ด ๋””์ž์ธ์€ ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์ค„์ž…๋‹ˆ๋‹ค.

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

Amazon์€ ๋˜ํ•œ ๋ชจ๋“  ์…ธ๊ณผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ˆ˜๋กœ ๊ถŒํ•œ์„ ์ƒ์Šน์‹œํ‚ฌ ์œ„ํ—˜์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜๊ณผ ๋ณด์•ˆ์„ ์œ„ํ•ด ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—๋Š” ๋ช…๋ น ์…ธ, SSH ์„œ๋ฒ„ ๋˜๋Š” Python๊ณผ ๊ฐ™์€ ํ•ด์„ ์–ธ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ๋„๊ตฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” ๋ณ„๋„์˜ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์€ API์™€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๋Œ€์‹  Bottlerocket์€ ์ „์ฒด ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋กค๋ฐฑ๋˜๊ณ , ์›Œํฌ๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ˆ˜๋™์œผ๋กœ ๋กค๋ฐฑ์ด ํŠธ๋ฆฌ๊ฑฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(API๋ฅผ ํ†ตํ•œ ๋ช…๋ น).

๋ผˆ๋Œ€ TUF (์—…๋ฐ์ดํŠธ ํ”„๋ ˆ์ž„์›Œํฌ)๋Š” ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋Œ€์ฒด ๋˜๋Š” "๋งˆ์šดํŠธ ํ•ด์ œ๋œ" ํŒŒํ‹ฐ์…˜์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜์ด ์‹œ์Šคํ…œ์— ํ• ๋‹น๋˜๋ฉฐ ๊ทธ ์ค‘ ํ•˜๋‚˜์—๋Š” ํ™œ์„ฑ ์‹œ์Šคํ…œ์ด ํฌํ•จ๋˜๊ณ  ์—…๋ฐ์ดํŠธ๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒํ‹ฐ์…˜์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์€ ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ๋กœ ๋งˆ์šดํŠธ๋˜๊ณ  ํŒŒํ‹ฐ์…˜์€ /etc RAM์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ๋งˆ์šดํŠธ๋จ tmpfs ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ์›๋ž˜ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ • /etc ์ง€์›๋˜์ง€ ์•Š์Œ: ์„ค์ •์„ ์ €์žฅํ•˜๋ ค๋ฉด API๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ Linux ๋ฐฐํฌํŒ์ธ Bottlerocket์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€
API ์—…๋ฐ์ดํŠธ ๋ฐฉ์‹

ะ‘ะตะทะพะฟะฐัะฝะพัั‚ัŒ

์ปจํ…Œ์ด๋„ˆ๋Š” Linux ์ปค๋„์˜ ํ‘œ์ค€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ cgroup, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ seccomp์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋ฉฐ ๊ฐ•์ œ ์•ก์„ธ์Šค ์ œ์–ด ์‹œ์Šคํ…œ, ์ฆ‰ ์ถ”๊ฐ€ ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. SELinux๋ฅผ "๊ฐ•์ œ" ๋ชจ๋“œ์—์„œ.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ฑ…์€ ์ปจํ…Œ์ด๋„ˆ์™€ ์ปค๋„ ๊ฐ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ”Œ๋ž˜๊ทธ๋กœ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๋ฉด Bottlerocket์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ณ  ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

"์ž์ฒด ๊ฒ€์‚ฌ ๋ถ€ํŒ…" ๋ชจ๋“œ๋Š” device-mapper-verity ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค(DM-์ง„์‹ค), ๋ถ€ํŒ…ํ•˜๋Š” ๋™์•ˆ ๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. AWS๋Š” dm-verity๋ฅผ โ€‹โ€‹"ํ•ต์‹ฌ ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฎ์–ด์“ฐ๊ธฐ์™€ ๊ฐ™์ด OS์—์„œ ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” Linux ์ปค๋„์˜ ๊ธฐ๋Šฅ"์ด๋ผ๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์— ํ•„ํ„ฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค eGMP (ํ™•์žฅ BPF, Alexey Starovoitov๊ฐ€ ๊ฐœ๋ฐœํ•œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค๋„ ๋ชจ๋“ˆ์„ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์‹œ์Šคํ…œ ์ž‘์—…์„ ์œ„ํ•ด ๋ณด๋‹ค ์•ˆ์ „ํ•œ BPF ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๋ชจ๋ธ
์‚ฌ์šฉ์ž ์ •์˜
ํŽธ์ง‘
ะ‘ะตะทะพะฟะฐัะฝะพัั‚ัŒ
์‹คํŒจ ๋ชจ๋“œ
๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค

์‚ฌ์šฉ์ž
์ž‘์—…
์˜ˆ
์–ด๋–ค
์‚ฌ์šฉ์ž ๊ถŒ๋ฆฌ
์ธํ„ฐ๋ŸฝํŠธ ์‹คํ–‰
์‹œ์Šคํ…œ ํ˜ธ์ถœ, ์˜ค๋ฅ˜

ํ•ต์‹ฌ
์ž‘์—…
์•„๋‹ˆ
๊ณต์ „
์•„๋‹ˆ
์ปค๋„ ํŒจ๋‹‰
ะฟั€ัะผะพะน

BPF
ัะพะฑั‹ั‚ะธะต
์˜ˆ
JIT, ์ฝ”์–ด-RE
๊ฒ€์ฆ, JIT
์—๋Ÿฌ ๋ฉ”์‹œ์ง€
์ œํ•œ๋œ ๋„์šฐ๋ฏธ

BPF๊ฐ€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๋˜๋Š” ์ปค๋„ ์ˆ˜์ค€ ์ฝ”๋“œ์™€ ๋‹ค๋ฅธ ์  ์ถœ์ฒ˜

AWS๋Š” Bottlerocket์ด "๊ด€๋ฆฌ ๊ถŒํ•œ์ด ์žˆ๋Š” ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ณด์•ˆ์„ ๋”์šฑ ๊ฐ•ํ™”ํ•˜๋Š” ์šด์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉ"ํ•˜๋ฉฐ "๊ฐ ๊ฐœ๋ณ„ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ œ์–ด๊ฐ€ ์ œํ•œ๋˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์— ์ ํ•ฉ"ํ•˜๋‹ค๊ณ  ๋ฐํ˜”์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•ด ๊ด€๋ฆฌ์ž ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ AWS๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ Bottlerocket ๋‚ด๋ถ€์—์„œ ์ž‘์—…ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. "๋ณ„๋„์˜ Bottlerocket ์ธ์Šคํ„ด์Šค์— ๋กœ๊ทธ์ธํ•˜๋Š” ํ–‰์œ„๋Š” ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ž‘์—…, ์ฆ‰ ๊ณ ๊ธ‰ ๋””๋ฒ„๊น… ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค." ์“ฐ๊ธฐ ๊ฐœ๋ฐœ์ž.

๋Ÿฌ์ŠคํŠธ ์–ธ์–ด

์ปค๋„ ์ƒ๋‹จ์˜ OS ๊ณ„์ธก์€ ๋Œ€๋ถ€๋ถ„ Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ๊ทธ ์„ฑ๊ฒฉ์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.๊ณผ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค..

ํ”Œ๋ž˜๊ทธ๋Š” ๋นŒ๋“œ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. --enable-default-pie ะธ --enable-default-ssp ์‹คํ–‰ ํŒŒ์ผ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฌด์ž‘์œ„ํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(์œ„์น˜ ๋…๋ฆฝ์  ์‹คํ–‰ ํŒŒ์ผ, PIE) ๋ฐ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ณดํ˜ธ.

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)์™€์˜ ํ†ตํ•ฉ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋Š” ๋ณ„๋„์˜ ์ œ์–ด ์ปจํ…Œ์ด๋„ˆ์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ณ‘๋กœ์ผ“ ์ œ์–ด ์ปจํ…Œ์ด๋„ˆ, ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๊ณ  API ๋ฐ AWS SSM ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๊ณผ๊ฑฐ์— ์œ ์‚ฌํ•œ ๊ณ„ํš์ด ์‹คํŒจํ–ˆ๋˜ ์ ์„ ๊ณ ๋ คํ•˜๋ฉด Bottlerocket์ด ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์„์ง€ ์ง€์ผœ๋ณด๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Vmware์˜ PhotonOS๋Š” ์†Œ์œ ๊ถŒ์ด ์ฃผ์žฅ๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ๊ณ  RedHat์€ CoreOS์™€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ข…๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค, ํ•ด๋‹น ๋ถ„์•ผ์˜ ์„ ๊ตฌ์ž๋กœ ๊ฐ„์ฃผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Bottlerocket์ด AWS ์„œ๋น„์Šค์— ํ†ตํ•ฉ๋˜๋ฉด์„œ ์ด ์‹œ์Šคํ…œ์€ ๊ณ ์œ ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋…ํŠนํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์•„๋งˆ๋„ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ CoreOS ๋˜๋Š” Alpine๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐฐํฌํŒ๋ณด๋‹ค Bottlerocket์„ ์„ ํ˜ธํ•˜๋Š” ์ฃผ๋œ ์ด์œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ์ฒ˜์Œ์— EKS ๋ฐ ECS์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ์ด๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, Bottlerocket์€ ์ง์ ‘ ์กฐ๋ฆฝํ•ด ๋ณด์„ธ์š” ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ŠคํŒ… ์†”๋ฃจ์…˜์œผ๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋‘˜์งธ, EKS ๋ฐ ECS ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ OS๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bottlerocket ์†Œ์Šค ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ GitHub์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋ฏธ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ ๋ฐ ๊ธฐ๋Šฅ ์š”์ฒญ์— ์‘๋‹ต.

๊ด‘๊ณ ์˜ ๊ถŒ๋ฆฌ์—

VDSina ์ œ๊ณต ์ผ์ผ ๊ฒฐ์ œ VDS. ์ž์‹ ์˜ ์ด๋ฏธ์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์šด์˜ ์ฒด์ œ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ฒ„๋Š” 500๋ฉ”๊ฐ€๋น„ํŠธ์˜ ์ธํ„ฐ๋„ท ์ฑ„๋„์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ DDoS ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ฌด๋ฃŒ๋กœ ๋ณดํ˜ธ๋ฉ๋‹ˆ๋‹ค!

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ Linux ๋ฐฐํฌํŒ์ธ Bottlerocket์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€

์ถœ์ฒ˜ : habr.com

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