Dasis AI Blog
← 목록으로

AI 에이전트가 코드를 실행할 때 무엇이 달라지는가

· DASIS Team · #LangSmith #AI에이전트 #샌드박스보안

AI 에이전트가 실제 코드를 실행하고, 파일 시스템에 접근하고, 외부 서비스를 호출하는 순간, 기존의 LLM 호출과는 전혀 다른 수준의 격리와 제어가 필요해진다. LangSmith Sandboxes가 GA(General Availability)로 전환되면서, 이 문제를 프로덕션 수준에서 다루는 인프라가 공식적으로 제공된다.

에이전트가 코드를 직접 실행하는 "Agentic 코드 실행" 환경에서는 보안 경계 설정, 실행 상태 관리, 병렬 분기 처리가 핵심 과제다. LangSmith Sandboxes는 이 세 가지를 커널 격리된 microVM 위에서 해결한다.

무엇인가: 커널 격리 microVM 기반 실행 환경

LangSmith Sandboxes는 AI 에이전트가 안전하게 코드를 실행할 수 있도록 설계된 격리 실행 환경이다. 일반적인 컨테이너(Docker 등)와 달리, 각 샌드박스는 독립적인 커널을 가진 microVM으로 실행된다. 이는 호스트 시스템과 커널을 공유하는 컨테이너보다 강한 격리를 제공한다.

컨테이너 기반 실행과 microVM 기반 실행의 차이는 다음과 같다.

비교 항목 컨테이너 microVM (Sandboxes)
커널 공유 호스트와 공유 독립 커널
격리 수준 프로세스 수준 VM 수준
스냅샷 지원 기본 없음 내장
병렬 포크 수동 구현 네이티브 지원

Sandboxes가 해결하려는 문제는 에이전트가 예측 불가능한 코드를 실행할 때 발생하는 세 가지 위험이다. 하나, 실행 환경이 다른 에이전트 실행에 영향을 미치는 교차 오염. 둘, 에이전트가 실패하거나 잘못된 경로로 진행했을 때 복구 기점(checkpoint)이 없는 문제. 셋, 병렬로 여러 에이전트 경로를 탐색할 때 환경을 각각 독립적으로 유지하는 복잡성.

동작 원리: 스냅샷, 포크, 서비스 URL, 인증 프록시

Sandboxes의 핵심 기능은 네 가지다.

스냅샷과 포크(Snapshot & Fork)

에이전트 실행 중 임의 시점에 환경 전체를 스냅샷으로 저장할 수 있다. 이 스냅샷에서 병렬 포크를 생성하면, 동일한 시작점에서 서로 다른 에이전트 경로를 동시에 탐색할 수 있다. 예를 들어, 코딩 에이전트가 특정 의존성 설치 이후 두 가지 접근 방식을 테스트해야 할 때, 스냅샷 시점까지의 환경을 복제하고 각 포크에서 독립적으로 실험할 수 있다.

# 스냅샷 생성 및 포크 예시 (원문 기준)
sandbox = client.create_sandbox()
snapshot_id = sandbox.snapshot()

# 동일 환경에서 두 가지 경로 병렬 실행
fork_a = client.fork_sandbox(snapshot_id)
fork_b = client.fork_sandbox(snapshot_id)

서비스 URL(Service URLs)

샌드박스 내부에서 실행 중인 웹 서버나 API 서버에 외부에서 접근할 수 있는 고유 URL이 자동으로 부여된다. 에이전트가 샌드박스 안에서 개발 서버를 띄우면, 그 서버에 대한 URL을 통해 외부에서 결과를 확인하거나 다른 에이전트가 호출할 수 있다.

인증 프록시(Auth Proxies)

에이전트가 외부 서비스(GitHub, Slack, 사내 API 등)를 호출할 때, 자격증명(API 키, OAuth 토큰 등)을 에이전트 코드에 직접 주입하지 않아도 된다. 인증 프록시가 자격증명 관리를 중간에서 처리하므로, 에이전트 실행 환경에 민감한 정보가 노출되는 위험을 줄인다.

전체 실행 흐름을 요약하면 아래와 같다.

에이전트 실행 요청
       │
       ▼
  microVM 생성 (커널 격리)
       │
       ▼
  코드 실행 / 서비스 기동
       ├─── 서비스 URL 부여 (외부 접근)
       ├─── 인증 프록시 경유 (외부 API 호출)
       │
       ▼
  스냅샷 저장
       │
       ├─ 포크 A ──▶ 경로 A 실행
       └─ 포크 B ──▶ 경로 B 실행

어떤 상황에서 유효하고, 어떤 상황에서는 고려가 필요한가

Sandboxes가 명확하게 가치를 발휘하는 세 가지 시나리오가 있다.

코딩 에이전트(Coding Agent) 환경이 첫 번째다. 에이전트가 코드를 생성하고 직접 실행해 결과를 검증하는 루프에서, 실행 환경의 격리와 재현성이 보장되지 않으면 에이전트 출력 자체를 신뢰할 수 없다. 스냅샷 기반의 결정론적 실행 환경은 이 문제를 구조적으로 해결한다.

CI 에이전트(CI Agent)가 두 번째다. 테스트 실행, 빌드, 코드 리뷰 자동화를 에이전트로 처리할 때, 각 실행이 완전히 격리된 환경에서 시작되어야 한다. microVM 수준의 격리는 이전 실행이 남긴 상태(파일, 환경 변수, 프로세스)가 다음 실행에 영향을 주는 문제를 원천 차단한다.

데이터 파이프라인 에이전트가 세 번째다. 에이전트가 데이터 변환 코드를 생성하고 실행할 때, 실행 실패 시 스냅샷으로 되돌아가 다른 방법을 시도하는 패턴은 파이프라인 안정성에 직접 기여한다.

반면, 단순한 LLM 호출이나 텍스트 생성 워크플로에는 Sandboxes가 필요하지 않다. 코드 실행이나 외부 서비스 연동 없이 프롬프트와 응답 사이클만 다루는 에이전트라면, 샌드박스 수준의 격리 인프라는 오버엔지니어링이다. 또한, Sandboxes는 LangSmith 플랫폼 위에서 동작하므로 이미 다른 에이전트 오케스트레이션 스택을 프로덕션에서 운영 중이라면 통합 비용을 먼저 평가해야 한다.

실전 팁: 엔터프라이즈 환경에서 확인해야 할 설정 포인트

인증 프록시 설계를 먼저 결정한다. 에이전트가 사내 API나 SaaS를 호출할 때 어떤 자격증명을 어떤 방식으로 프록시에 등록할지 설계하지 않으면, 인증 프록시의 보안 이점이 반감된다. 사내 비밀 관리 시스템(AWS Secrets Manager, HashiCorp Vault 등)과의 연동 방안을 사전에 정의한다.

스냅샷 시점을 명확히 정한다. 스냅샷은 "무거운 의존성 설치 완료 후", "데이터 로드 완료 후" 같이 명확한 체크포인트에 찍어야 의미 있다. 무분별한 스냅샷은 저장 비용과 복잡성만 늘린다.

포크 병렬 실행은 비용 모델을 확인 후 사용한다. 포크를 통한 병렬 탐색은 에이전트의 의사결정 품질을 높이지만, 각 포크가 독립 microVM으로 실행되므로 계산 비용이 선형 이상으로 증가할 수 있다. 프로덕션 적용 전에 LangSmith의 요금 구조와 포크 수 제한을 확인한다.

서비스 URL의 네트워크 정책을 점검한다. 샌드박스 내 서비스에 부여되는 URL이 퍼블릭 접근을 허용하는지, 아니면 LangSmith 플랫폼 내부로 제한되는지 확인해야 한다. 사내 보안 정책에 따라 외부 노출 여부를 제어할 수 있는지 검토한다.

정리

LangSmith Sandboxes는 AI 에이전트가 코드를 실행하는 환경에서 발생하는 격리, 재현성, 병렬 탐색 문제를 microVM 수준에서 다루는 인프라다. 스냅샷과 포크로 에이전트 실행을 결정론적으로 제어하고, 인증 프록시로 자격증명 노출 위험을 줄이며, 서비스 URL로 샌드박스 내부 서비스를 외부와 연결한다. 코딩 에이전트, CI 에이전트, 데이터 파이프라인 에이전트처럼 실제 코드 실행이 핵심인 워크플로에서 가장 직접적인 가치를 발휘한다. 도입 전에 인증 프록시 설계, 스냅샷 전략, 포크 비용 모델, 네트워크 정책 네 가지를 선제적으로 검토하면 운영 단계의 혼란을 줄일 수 있다.

더 읽을 자료