SPACE 구축: 장기 실행 에이전트를 위한 안전하고 효율적인 런타임
SPACE는 장기 실행 에이전트 워크플로우와 빠르고 격리된 코드 실행을 구동하는 Perplexity의 보안 및 효율적인 샌드박스 플랫폼입니다.
에이전트 워크플로우가 길어지고 더 자율화됨에 따라 AI 에이전트가 작동하는 환경은 이를 구동하는 모델만큼이나 중요해졌습니다. 에이전트는 코드 실행, 파일 시스템 편집, 수 시간 또는 수일에 걸친 다단계 작업 수행과 같은 실제 업무를 수행해야 합니다. 사용자는 에이전트가 이러한 작업을 수행하는 데 필요한 도구와 파일에 접근할 수 있기를 원하면서도, 동시에 에이전트가 손상되더라도 자신의 시스템이 안전하게 유지될 것이라는 신뢰가 필요합니다. 샌드박스는 이 모든 것을 가능하게 합니다. 즉, 에이전트가 자유롭게 작동하는 동안 호스트, 다른 테넌트 및 민감한 자격 증명을 보호할 수 있는 격리된 환경입니다.
기존의 컨테이너 기반 샌드박스 접근 방식은 이러한 작업용으로 설계되지 않았습니다. 이러한 방식은 일반적으로 수명이 짧고 상태가 없는(stateless) 작업을 가정하며, 커널을 단일 실패 지점으로 간주합니다. 반면 에이전트 세션은 수명이 길고 상태가 유지(stateful)됩니다. 에이전트는 수 시간 동안의 컨텍스트, 작업 파일 시스템 및 단순히 삭제하거나 처음부터 다시 구성할 수 없는 실행 중인 프로세스를 축적합니다. 더욱이 내부 워크로드에 대해서는 기본적으로 신뢰하지 않아야 하며, 이에 따라 더 강력한 보안 조치가 필요합니다. 장기간 실행되는 에이전트 세션은 적대적인 게스트를 격리하고 상태를 보존하면서도 대규모로 운영할 수 있는 기반이 필요합니다.
샌드박스 엔지니어링의 주요 과제는 보안, 기능성, 효율성 간에 종종 발생하는 긴장에서 비롯됩니다. 예시:
더 광범위한 접근 권한을 부여하면 에이전트가 더 많은 작업을 수행할 수 있지만, 신뢰할 수 없는 워크로드에 시스템의 더 많은 부분이 노출됩니다.
샌드박스 간에 더 많은 공유를 허용하면 생성 속도는 빨라지지만 공격 표면은 넓어집니다.
스냅샷을 더 자주 생성하면 복구 기능이 향상되고 롤백과 같은 기능을 활성화할 수 있지만 시간과 스페이스(저장 공간)가 필요합니다.
코드 실행에 필요한 것과 같은 에이전트 샌드박스는 Agent Skills를 사용하거나 Computer 쿼리에서 Search as Code 파이프라인을 수행하는 등 이 세 가지를 모두 필요로 합니다. 당사는 지난 몇 달 동안 당사 제품을 구동하는 차세대 에이전트 인프라를 구축하기 위해 노력해 왔습니다. 오늘 당사는 SPACE(Sandboxed Platform for Agentic Code Execution)를 소개합니다. 이는 보안, 신뢰성 및 효율성을 대규모로 갖춘 에이전트 워크플로우를 위해 구축된 샌드박스 플랫폼입니다. 지난달, 당사는 SPACE를 Perplexity Computer를 구동하는 샌드박스 계층으로 도입하기 시작했습니다. 지난 일주일 동안 SPACE는 수백만 건의 샌드박스 생성과 수천만 건의 재연결을 안전하게 지원했으며, 스핀업(spin-up) 시간은 이전 솔루션보다 3~5배 더 빨라졌습니다.
본 문서에서는 SPACE의 아키텍처 및 설계 결정 사항을 제시합니다. 현재 100%의 Computer 세션이 SPACE에서 실행되고 있습니다. 당사는 사용자 및 개발자에게 동급 최고의 에이전트 런타임을 제공하기 위해 이 플랫폼을 더 많은 영역에 배포할 예정입니다.
아키텍처
높은 수준에서 시스템은 세 가지 계층으로 구성됩니다.
제어 평면은 시스템의 두뇌로서 무엇이 어디에 존재해야 하는지를 결정합니다. 이는 API 게이트웨이와 클러스터 수준의 상태 관리 모듈로 구성됩니다.
노드 로컬 서비스는 제어 평면의 계획을 실행하는 데 필요한 로컬 머시너리입니다. 이 서비스는 샌드박스 수명 주기, 스토리지, 네트워킹 및 그 이면의 권한 있는 작업을 담당합니다.
샌드박스는 격리된 실행 환경 자체입니다. 이는 하드웨어와 페어링된 가상 머신으로 구현되며, space-데몬(워크로드를 위해 파일 시스템, 프로세스 및 네트워크 접근을 중개하는 게스트 내부 백그라운드 프로세스)과 함께 작동합니다.

제어 평면
API 게이트웨이는 진입점입니다. 들어오는 요청은 인증 및 권한 부여를 거친 후 원하는 상태의 레코드로 변환됩니다.
제어 평면은 의도적으로 상태를 유지하지 않으며(stateless), 모든 지속적인 정보는 공유 데이터베이스로 오프로드됩니다. 제어 평면은 샌드박스가 할당된 노드, 실행 위치, 지속적 스토리지에 백업되었는지 여부 등 샌드박스에 대한 클러스터 수준의 정보를 추적합니다. 제어 평면은 원하는 상태와 관찰된 상태를 지속적으로 비교하고 두 상태가 수렴하도록 유도합니다. 작업은 멱등성(idempotent)을 가지므로 제어 평면은 충돌, 재시작 또는 부분적인 장애 발생 시 자동으로 복구할 수 있습니다.
노드 로컬 서비스
노드 로컬 서비스는 템플릿 준비, 샌드박스 시작, 네트워킹 연결 및 호스트 측 런타임 서비스 실행과 같은 실제 작업을 수행합니다. 각 노드는 노드에 배치된 모든 샌드박스를 관리하는 소규모 데몬 세트를 실행하며, 노드는 해당 샌드박스의 실시간 상태에 대한 진실의 원천입니다.
샌드박스 관리자는 샌드박스의 실행, 일시 중지, 중단 또는 정지 여부와 실제 리소스 점유 상태를 파악합니다. 이는 권한 없이 실행되며 모든 권한이 필요한 작업은 기본 프리미티브를 중개하는 단일 루트 프로세스인 노드 관리자에게 위임합니다. 스토리지는 로컬에서 지속적으로 처리됩니다. 즉, 현재 샌드박스 상태의 스냅샷이 노드에 저장되고, 볼륨 관리자는 노드 간 작업을 활성화하기 위해 필요에 따라 스냅샷과 템플릿을 오브젝트 스토리지로/에서 이동시킵니다. 보안 게이트는 샌드박스의 접근 범위를 제한합니다. 자격 증명 관리자는 서비스별 승인 하에 자격 증명 주입을 제어하며, 네트워크 게이트웨이는 각 샌드박스의 송신(egress) 정책을 시행합니다.
샌드박스
샌드박스 자체는 하드웨어 격리 경계 뒤에서 사용자의 워크로드를 실행하는 자체 게스트 커널을 갖춘 가상 머신(VM)입니다. 각 샌드박스는 자체 커널을 가지고 있으므로, 손상된 워크로드가 단일 실패 지점으로서 공유 호스트 커널에 의존할 수 없습니다. 설령 게스트 커널을 성공적으로 악용하더라도 해당 손상은 다른 워크로드로 전파되지 않고 샌드박스의 VM 경계 내에 국한됩니다.
각 가상 머신 내부에서는 space 데몬이 실행되며, 플랫폼이 게스트 내부에서 수행하는 모든 작업이나 수정을 규제하는 경량 에이전트 역할을 합니다. 이 데몬은 파일 시스템 접근과 프로세스 관리를 처리합니다. 또한 게스트 준비 상태를 보고하고 활동을 추적하여, 샌드박스가 유휴 상태가 되어 일시 중지되거나 회수될 수 있는 시점을 플랫폼이 알 수 있도록 합니다. 중요한 점은 space 데몬이 클라이언트와 직접 통신하지 않고, VM 내부의 전용 채널을 통해 호스트와 통신한다는 것입니다. 이는 모든 게스트 상호 작용을 제어된 경로로 유지하고 샌드박스 자체 네트워크를 워크로드의 아웃바운드 트래픽만을 위해 확보합니다.
세 가지 핵심 요소: 보안, 기능성, 효율성
다음으로 SPACE가 보안, 기능성, 효율성이라는 세 가지 측면에서 제공해야 하는 핵심 속성을 살펴보겠습니다. 앞서 언급했듯이 이 세 가지는 상충하는 관계입니다. 그러나 오늘날의 모델 역량을 뒷받침할 강력한 에이전트를 지원하려면 그 어느 것도 타협할 수 없습니다. 보안은 신뢰할 수 없고 적대적일 수 있는 워크로드가 호스트, 다른 테넌트 또는 사용자의 비밀을 해치지 않도록 방지합니다. 기능성은 에이전트에 필요한 풍부한 수명 주기를 제공합니다. 효율성은 제한된 메모리, 디스크 및 컴퓨팅 리소스 환경에서 이 모든 것을 경제적으로 만듭니다.
보안: 데이터 및 시스템 보호
샌드박스 플랫폼은 샌드박스 내부에서 실행되는 오류가 있는 코드나 악성 코드가 다른 곳에 해로운 영향을 미치지 않도록 강력한 보안이 필요합니다. 엄격한 송신(egress) 제어를 시행하고 샌드박스에서 비밀을 배제하지 않으면, 에이전트의 작은 실수 하나로 사용자의 키가 유출되거나 작업 데이터가 외부로 유출될 수 있습니다.

SPACE는 샌드박스 보안을 보장하기 위해 계층화된 접근 방식을 취합니다. 샌드박스 격리에는 VM 격리와 호스트 OS 프로세스 격리라는 두 가지 구성 요소가 있습니다. 샌드박스 간 접근을 하려면 둘 다 침해되어야 합니다. 샌드박스와의 통신은 엄격하게 제어되며, 프로세스는 전용 채널을 통해서만 통신할 수 있습니다. 네트워크 게이트웨이는 모든 송신(egress) 트래픽을 강제로 통과시킵니다. space 데몬은 (신뢰할 수 없는) 샌드박스와 (신뢰할 수 있는) 플랫폼 간의 유일하게 승인된 채널입니다.
자격 증명은 에이전트가 훔칠 수 있는 곳에 절대 저장되지 않습니다. 자격 증명 저장소는 샌드박스 경계 외부에 위치하며 자격 증명 수명 주기를 책임집니다. 이 저장소는 플러그형 볼트(vault) 백엔드를 통해 비밀을 저장하고 검색하며, 계층적 스코핑을 사용하여 자격 증명을 확인하고, 주입 방법 및 만료와 같은 메타데이터를 관리하며, 모든 접근에 대한 속도 제한 및 감사 로깅을 시행합니다. 필요할 때 자격 증명은 샌드박스에 직접 입력되는 대신 네트워크 계층에서 주입되거나 브라우저 에이전트에 의해 자동 완성됩니다.
데이터는 저장 시(at rest) 보호됩니다. SPACE는 외부 저장 데이터를 보호하기 위해 BYOK(Bring Your Own Key)를 지원합니다. 암호화 키는 고객의 키 관리 서비스에서 생성되며 샌드박스에는 절대 들어오지 않습니다. 기업이 키를 취소하면 해당 데이터는 읽을 수 없게 됩니다.
기능성: 에이전트 워크플로우 지원
에이전트 워크플로우를 지원하려면 샌드박스에 풍부한 수명 주기 지원이 필요합니다. 에이전트가 한 번에 많은 샌드박스를 스핀업할 수 있고 부팅을 기다려서는 안 되므로, 샌드박스는 빠르고 대규모로 생성되어야 합니다. 세션이 몇 분 동안 지속되거나 몇 달 동안 실행될 수 있으므로 무기한 지속되어야 합니다. 작업이 사람의 입력을 기다리는 경우와 같이 때로는 장기간 동안 깔끔하게 일시 중지되어야 합니다. 또한 세션이 분기되거나, 잘못된 단계를 되돌리거나, 처음부터 시작하는 대신 장애 후 다시 시작할 수 있도록 포크(forking), 롤백 및 충돌 복구를 지원해야 합니다.
SPACE는 위에서 언급한 모든 기능을 지원합니다. SPACE는 전체 샌드박스 수명 주기를 명시적 상태 머신으로 모델링하며, 이것이 바로 생성, 일시 중지, 재개, 중단 및 복원과 같은 작업을 가능하게 하는 핵심입니다.

스냅샷은 이러한 기능 대부분을 뒷받침하는 메커니즘입니다. 스케줄러는 일정한 간격으로 실행되며 디스크 스냅샷(파일 시스템의 특정 시점 복사본)과 전체 스냅샷(일시 중지된 VM 전체의 체크포인트)이라는 두 가지 유형의 스냅샷을 캡처합니다. 디스크 스냅샷은 자주 캡처되는 반면 전체 체크포인트는 빈도가 낮습니다. 모든 데이터는 노드에 남아 있으며 보존 기간은 계층에 따라 결정됩니다. 이러한 스냅샷은 세션 내 복구에 사용될 수 있습니다. 예를 들어, 디스크 스냅샷은 파일 시스템을 롤백하여 파괴적인 명령을 취소하는 데 사용할 수 있고, 전체 체크포인트는 충돌한 샌드박스가 콜드 디스크 대신 최근 실행 시점부터 재개할 수 있도록 합니다.
샌드박스가 중단되면 VM이 일시 중지되고 전체 스냅샷이 생성되며, 전체 스냅샷의 아티팩트가 오브젝트 스토리지에 업로드됩니다. 데이터베이스 행은 스냅샷을 추적하며 모든 아티팩트가 업로드된 후에만 복원 가능 상태가 되므로, 부분적으로 업로드된 스냅샷이 손상된 상태로 재개되는 일은 발생하지 않습니다. 복원은 중단의 역순입니다. 스냅샷은 원본 노드가 아닌 오브젝트 스토리지에 존재하므로 어느 노드에서나 샌드박스를 다시 불러올 수 있습니다. 스케줄러가 노드를 선택하면 해당 노드는 아티팩트를 다운로드하고 템플릿 위에 파일 시스템 델타를 다시 적용한 다음 캡처된 상태에서 VM을 재개합니다.
효율성: 시간과 스페이스 최적화
위의 기능을 단순히 구현하는 것만으로는 충분하지 않으며, 엄격한 리소스 제약 조건 하에서 가능해야 합니다. 노드의 메모리와 디스크는 유한하며 사용자는 에이전트가 가능한 한 빨리 작동하기를 원하므로 수명 주기 작업은 시간과 스페이스 측면에서 비용이 적게 들어야 합니다. 샌드박스가 생성, 일시 중지 또는 분기될 때마다 전체 머신 이미지를 복사할 여유는 없습니다.
이것을 가능하게 하는 핵심 설계 선택은 파일 시스템입니다. SPACE는 샌드박스 스토리지를 위한 노드 내 파일 시스템으로 btrfs를 사용합니다. Btrfs(B-tree 파일 시스템)는 Copy-on-Write 파일 시스템과 통합된 논리 볼륨 관리를 결합합니다. 여기에는 다음과 같은 몇 가지 이점이 있습니다.
Reflink 복사는 기본 익스텐트(extents)를 공유하므로 빠르며, 메타데이터만 복사하면 됩니다.
스냅샷은 새로운 루트를 생성하기만 하면 되므로 원자적이며 빠릅니다.
변경 사항만 저장하면 되므로 최소한의 스토리지 공간이 필요합니다.
결과적으로 샌드박스를 빠르고 효율적으로 생성 및 복원할 수 있습니다. 매번 처음부터 샌드박스를 만드는 대신, 디스크에 공통 템플릿이 이미 구체화된 포드(pod)의 풀을 유지하고, 템플릿이 일치하는 포드에 바인딩하여 요청을 처리합니다. 해당 샌드박스에 자체 쓰기 가능한 루트 파일 시스템을 제공하는 것은 전체 복사가 아니라 Copy-on-Write 클론입니다. 적합한 포드가 없을 경우 템플릿을 주문형으로 구체화합니다. 당사는 동일한 이미지에 대한 동시 요청을 단일 다운로드로 결합하므로, 동일한 요청이 몰려도 동일한 작업이 중복으로 발생하지 않습니다.
그 결과 강력하고 가벼우며 매우 빠른 샌드박스 런타임이 탄생했습니다. SPACE를 출시했을 때 당사는 동일한 프로덕션 트래픽에서 이전 샌드박스 제공업체와 함께 SPACE를 실행했습니다. 출시 주간 동안 SPACE는 전체적으로 3~5배 더 빠르게 샌드박스를 생성했습니다. 구체적으로, 중간 생성 지연 시간은 185밀리초에서 60밀리초로(3.1배 향상), 90분위 지연 시간은 447밀리초에서 89밀리초로(5.0배 향상) 단축되었습니다. 당사는 다른 성능 및 리소스 사용 지표에서도 유사한 규모의 개선을 확인했습니다.

또한 스냅샷이 빠르고 스페이스 효율적이며 샌드박스를 일시 중지할 필요가 없기 때문에 롤링 디스크 스냅샷을 쉽게 수행할 수 있습니다. 또한 효율적인 델타 스토리지는 이러한 스냅샷을 저장하는 데 필요한 공간을 줄여줍니다.
결론
복잡한 시스템을 설계할 때 단일 목표를 독립적으로 최적화하려는 유혹이 있습니다. 그러나 프론티어 에이전트 개발자는 보안, 기능성, 효율성을 동일한 수준에서 요구합니다. SPACE를 통해 당사는 이 세 가지 모든 측면에서 파레토 개선을 달성하고자 했습니다.
각각의 개별 설계 선택은 여러 목표를 동시에 달성할 수 있어 이러한 섬세한 균형을 가능하게 합니다. 샌드박스당 VM을 사용하면 각 워크로드에 자체 커널이 제공되어 강력한 격리를 통해 보안이 강화되는 동시에 스냅샷이 의존하는 깔끔한 체크포인트 경계를 제공합니다. Btrfs는 에이전트 런타임에 필수적인 스냅샷, 포크 및 기타 작업을 효율적으로 구현할 수 있게 합니다. space 데몬은 모든 게스트 상호 작용을 제어된 호스트 측 경로로 유지하여 게스트-호스트 경계를 봉인하면서도 에이전트의 자유로운 기동성을 보존합니다. 중앙 네트워크 게이트웨이는 게스트에 비밀을 노출하지 않으면서 송신(egress) 및 자격 증명 주입을 중개합니다.
이러한 설계 결정의 결과는 대규모 실세계 에이전트 오케스트레이션을 가능하게 하는 플랫폼입니다. SPACE는 장기 실행되는 상태 유지 에이전트가 성능이나 보안을 희생하지 않고도 임의의 복잡성이나 지속 시간을 가진 작업을 안전하게 처리할 수 있는 기반을 제공합니다.
오늘날 SPACE는 이미 수백만 건의 Perplexity Computer 세션을 구동하고 있습니다. 당사는 SPACE가 Linux microVM부터 Windows 게스트, 사용자의 로컬 머신에 이르기까지 모든 환경에서 샌드박스를 프로비저닝하고 제어하기 위한 통합 계층으로 기능하기를 기대합니다. 당사는 개발자들이 사용자가 일하는 모든 곳에서 작동하는 AI 제품을 제공할 수 있도록 SPACE를 새로운 환경으로 확장하기 위해 노력하고 있습니다.
내일의 프론티어 에이전트를 구동하는 컴퓨팅 계층을 형성하는 데 관심이 있다면 저희 팀에 합류하세요.