TL;DR
- 가상 머신(VM) 격리가 필요한 AI 에이전트 워크로드에서는 클라우드 VM용
fork가 샌드박스 수명 주기 관리의 기본 진입점이 될 수 있으며, 별도 API보다 복잡성을 줄이는 방식임. fork(2)는 호출 프로세스를 복제하는 단순한 계약으로, 1971년 첫 번째 Unix에 포함된 방식임.- VM 포크는 메모리·디스크·호스트 외부의 영속 스토리지를 포함한 전체 상태를 보존하는 내구성 체크포인트임.
- VM 포크는 실행 중에도 전체 워크로드 상태를 충실히 복제해 분기(branching)와 테스트 시점 확장을 지원하는 기본 프리미티브임.
- 거의 모든 샌드박스·VM API를 포크 위에 구현할 수 있어 인프라 종속(lock-in)을 줄이며,
ComputeSDK와 Arker API가 그 사례임.
포크의 기원과 VM 샌드박스
- 1971년 첫 번째 Unix에
fork(2)가 수록됨. 참고 자료는 [UNIX Programmer's Manual](UNIX Programmer's Manual)과 K. Thompson, D. M. Ritchie임. - 이 개념은 Berkeley Timesharing System의 [A User Machine in a Time-Sharing System](A User Machine in a Time-Sharing System)에서 비롯됐으며, 해당 연구는 1963년 Melvin Conway의 [A Multiprocessor System Design](A Multiprocessor System Design)으로 아이디어를 추적함.
fork(2)의 계약은 단순함. 호출하면 CPU가 커널 모드로 전환되고 호출 중인 프로세스가 복제됨.- 2026년 현재 많은 애플리케이션의 작업 단위는 AI 에이전트가 수행하며, 이 에이전트에는 프로세스가 아니라 가상 머신(VM) 수준의 격리가 필요한 경우가 많음.
- 클라우드 VM을 위한
fork(3)에 해당하는 기능이 어디에 있는지가 핵심 질문임.
순환 복잡성에 대한 거부
- 대부분의 샌드박스 API는 생성, 스냅샷, 템플릿, 분기를 서로 다른 개념으로 노출함.
- 확장된 API 자체에 본질적인 문제는 없지만, 가상 머신 인프라처럼 신뢰성이 중요한 시스템에서는 순환 복잡성(cyclomatic complexity)을 가능한 한 줄이는 편이 바람직함.
- 단일
fork작업은 별도의 실행 경로로 갈라질 수 있는 수명 주기 관리 대부분을 처리할 수 있음.
베이스 VM
- VM 인프라 위에 구축된 모든 제품과 서비스에는 베이스 VM이 존재하며, 다른 모든 VM은 이를 포크함.
- 베이스 VM은 OCI 이미지나
Dockerfile에서 생성될 수 있지만, 애플리케이션 세션 중 생성되는 모든 VM은 본질적으로 포크임. - 따라서 서비스의 기본 진입점으로 포킹을 노출하는 데 의미가 있음.
- 대부분의 워크로드는 베이스 VM을 포크함.
체크포인트
- 프로세스의 상태는 스왑을 위해 RAM과 디스크에 걸쳐 존재하지만, 호스트 머신과 관련해 영속적이지 않음.
- 영속 VM의 상태는 RAM과 디스크뿐 아니라 호스트 머신 외부의 영속 스토리지에도 걸쳐 존재함.
- 이에 따라 VM 포크는 내구성 있는 체크포인트가 됨.
- 상위 단계의 요구사항은 VM 포크가 실행 중간에도 작동해야 한다는 점임.
- 하위 단계의 이점은 잘 구현된 포크를 기반으로 사용자가 임의의 체크포인트 로직을 구축할 수 있다는 점임.
- 체크포인트는 포크임.
브랜치
- 코딩 에이전트 워크로드는 테스트 시점 확장(test-time scaling)의 이점을 크게 얻으며, 이 기법은 Stanford 연구실에서 개발됨.
- 많은 워크로드에서 테스트 시점 확장에는 실행 중간을 포함한 분기가 필요함.
- 포킹은 분기 로직을 구현하는 자연스러운 기본 프리미티브임.
- 이에 따라 포크는 정확히 무엇을 포크할지 제어할 수 있어야 한다는 상위 단계의 요구사항이 생김.
- 포킹은 전체 워크로드 상태를 충실히 보존한 브랜치를 생성함.
인프라 종속 제거
- 포크를 기본 프리미티브로 선호하는 마지막 이유는 인프라 종속을 제거한다는 점임.
- 누군가 설계한 거의 모든 샌드박스 또는 VM API는 포크로 구현할 수 있음.
ComputeSDK는 샌드박스를 위한 대중적인 통합 API이며, Arker API는 포크 위에 구축된 얇은 심(shim)임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요