๐Ÿ“บ ์˜์ƒ ์š”์•ฝ ์•„์นด์ด๋ธŒ
โ† ๋ชฉ๋ก

From fork() to Fleet: Designing an Agent Sandbox Cloud โ€” Abhishek Bhardwaj, OpenAI

AI Engineer ยท 2026-07-14 02:00 ยท 44:34

ํ•œ ์ค„ ํ•ต์‹ฌ

์—์ด์ „ํŠธ๊ฐ€ ์ฝ”๋“œ์™€ ๋„๊ตฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹จ์ˆœํ•œ fork()๋‚˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„˜์–ด, ํ•˜๋“œ์›จ์–ด ๊ฒฉ๋ฆฌ๋˜๋Š” micro VM๊ณผ ์Šค๋ƒ…์ƒท ๊ธฐ๋ฐ˜ ์ €์žฅยท์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜๊นŒ์ง€ ํฌํ•จํ•œ sandbox cloud๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์‹œ๊ฐ„๋ณ„ ์š”์•ฝ

  1. 0:01
    ์ด ์˜์ƒ์€ ChatGPT์™€ Codex ๊ฐ™์€ ์ œํ’ˆ์—์„œ ๋ถˆํ™•์‹คํ•œ ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ agent sandbox cloud์˜ ์„ค๊ณ„ ์›๋ฆฌ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๋ช…ํ•œ๋‹ค. ์—ฐ๊ตฌ์—์„œ๋Š” ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์ด, ์ œํ’ˆ์—์„œ๋Š” ๋‚ฎ์€ ์ง€์—ฐ์‹œ๊ฐ„๊ณผ ์‹ ๋ขฐ์„ฑยท๋ณด์•ˆ์ด ํ•ต์‹ฌ์ด๋ฉฐ, ํŠนํžˆ runtimeยทpersistenceยทorchestration์ด ์ค‘์‹ฌ ์ถ•์ด ๋œ๋‹ค.
  2. 9:00
    Linux์—์„œ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ fork()+exec๋Š” ๊ฐ€์žฅ ๋น ๋ฅด์ง€๋งŒ, ์ปค๋„ ๊ณต๊ฒฉ๊ณผ noisy neighbor ๋ฌธ์ œ๋ฅผ ๋™์‹œ์— ์•ˆ๊ณ  ์žˆ์–ด ์‹ค์‚ฌ์šฉ์— ๋ถ€์ ํ•ฉํ•˜๋‹ค. container๋Š” namespaces์™€ cgroups, seccomp๋กœ ๋ณดํ˜ธ๋ฅผ ๊ฐ•ํ™”ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ host kernel์„ ์ง์ ‘ ๊ณต์œ ํ•˜๋ฏ€๋กœ ๋ณด์•ˆ ๊ฒฝ๊ณ„๊ฐ€ ์ถฉ๋ถ„ํžˆ ๊ฐ•ํ•˜์ง€ ์•Š๋‹ค.
  3. 16:00
    gVisor๋Š” syscall์„ user space์—์„œ ์ฒ˜๋ฆฌํ•ด ์ปค๋„ ๋…ธ์ถœ์„ ์ค„์ด์ง€๋งŒ, ๊ฒฐ๊ตญ host kernel ์œ„์— ์žˆ์–ด ์ฒด์ธํ˜• exploit ๊ฐ€๋Šฅ์„ฑ์„ ์™„์ „ํžˆ ์—†์• ์ง€ ๋ชปํ•œ๋‹ค. ๋ฐ˜๋ฉด virtualization๊ณผ micro VM์€ guest์™€ host๋ฅผ ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•ด host ๋ณดํ˜ธ๋ฅผ ํฌ๊ฒŒ ๊ฐ•ํ™”ํ•˜๋ฉฐ, Rust ๊ธฐ๋ฐ˜ VMM๊ณผ device jail๋กœ ์•ˆ์ „์„ฑ์„ ๋” ๋†’์ธ๋‹ค.
  4. 30:00
    ์—์ด์ „ํŠธ ์ž‘์—…์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก disk persistence๋Š” ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜๊ฐ€ ๋œ๋‹ค. incremental snapshot, copy-on-write, block-level diff, save API, tiered storage๋ฅผ ํ†ตํ•ด ์ž‘์—… ์ƒํƒœ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅยท๋ณต์›ํ•ด์•ผ ๋…ธ๋“œ ์žฅ์• ์—๋„ ์ค‘๋‹จ ์—†์ด ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ , ์žฅ๊ธฐ ํƒ์ƒ‰๊ณผ Monte Carlo์‹ ์žฌ์‹œ๋„๋„ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
  5. 41:02
    ์—ฌ๋Ÿฌ ๋…ธ๋“œ์™€ ๋ฆฌ์ „์œผ๋กœ ํ™•์žฅํ•˜๋ ค๋ฉด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ cluster ์ƒํƒœ์™€ snapshot lineage๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. warm pool, memory snapshot์˜ ์ฆ‰์‹œ ๊ธฐ๋™, snapshot-rich restore๋ฅผ ์กฐํ•ฉํ•˜๋ฉด ์ง€์—ฐ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋ฉด์„œ ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ๋Œ€๊ทœ๋ชจ sandbox ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์‹ค๋ฌด ์ธ์‚ฌ์ดํŠธ

  • ์‹ค๋ฌด์—์„œ๋Š” ๋ณด์•ˆ์„ ๋จผ์ € ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ , ์„ฑ๋Šฅ์€ pre-warm, ์บ์‹œ, snapshot ์ตœ์ ํ™” ๊ฐ™์€ ์‹œ์Šคํ…œ ๊ธฐ๋ฒ•์œผ๋กœ ๋ณด์™„ํ•˜๋Š” ์ ‘๊ทผ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๋‹ค.
  • ์—์ด์ „ํŠธ์šฉ sandbox๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ๋งŒ์ด ์•„๋‹ˆ๋ผ ์ €์žฅยท๋ณต์›ยท์Šค์ผ€์ค„๋ง๊นŒ์ง€ ํ•˜๋‚˜์˜ ์ œํ’ˆ ๊ฒฝํ—˜์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ์žฅ๊ธฐ ์ž‘์—…๊ณผ ์‹คํŒจ ๋ณต๊ตฌ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋‹จ๋ฐœ์„ฑ ์‹คํ–‰๋ณด๋‹ค checkpointableํ•œ ์ž‘์—… ํ๋ฆ„์ด ์ค‘์š”ํ•˜๋ฏ€๋กœ, save/restore API์™€ snapshot lineage๋ฅผ ์ดˆ๊ธฐ์— ์„ค๊ณ„์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.