Opal과 Spark는 실행 주체(Execution Context)와 상태 관리(State Management) 방식에서 근본적인 차이가 있습니다.
- Opal: 프롬프트 체이닝과 API 호출을 JSON 그래프로 엮어 일회성으로 소비하는 'Stateless API Pipeline Builder'
- Spark: 노코드 UI 뒤편에 실제 파일 I/O와 코드 실행 환경을 갖춘 '클라우드 원격 가상 런타임(Agent Sandbox)'을 제공하여 지속적인 자율 실행을 가능하게 만든 구조입
| 구분 | Google Labs Opal (선언적 DAG 오케스트레이션) | Spark / 에이전트 런타임 (상태형 샌드박스 VM) |
|---|---|---|
| 핵심 모델 | 정적 그래프 (DAG) | 동적 루프 (ReAct Loop + Stateful Runtime) |
| 실행 주체 | 무상태(Stateless) API 오케스트레이터 | 격리된 원격 샌드박스 컨테이너/VM |
| 상태 지속성 | 요청-응답 간 상태 소멸 (Ephemeral) | 파일시스템, 메모리, 프로세스 상태 유지 (Persistent State) |
| 연산 및 도구 실행 | 사전 정의된 Webhook / REST API 호출 | 원격 터미널(Bash), Python 인터프리터, 브라우저 렌더러 |
| 제어 흐름 | 결정론적 파이프라인 () | 에이전트의 피드백 루프 (도구 실행 에러 분석 재시도) |
상세 구조 비교
Opal: JSON/YAML 기반 선언적 파이프라인 (Declarative Workflow)
- 구조: LangChain Expression Language(LCEL)나 n8n과 유사합니다. 프롬프트 템플릿, 모델 호출, 파서(Parser), 포맷터를 하나의 JSON 스키마(DAG)로 기술합니다.
- 런타임 특성: 구글의 백엔드 오케스트레이터가 JSON을 읽고 단순히
LLM API 호출 -> 결과 파싱 -> 다음 노드 API 호출순서로 직렬/병렬 요청을 쏘는 I/O Bound 파이프라인입니다. - 한계: 외부 셸(Bash) 환경이나 지속적인 파일시스템이 없기 때문에, 임의의 파이썬 코드를 컴파일하거나 장기 실행되는 프로세스를 감시할 수 없습니다.
Spark: 노코드 인터페이스를 얹은 격리형 컴퓨팅 런타임 (Stateful Agent Runtime)
- 구조: 사용자마다 Google Cloud(Borg) 상에 경량 마이크로 VM / gVisor 기반 격리 샌드박스가 할당됩니다.
- 런타임 특성:
- Persistent Workspace: 로컬 가상 파일시스템(
/workspace), 백그라운드 프로세스, 패키지 환경이 세션이 종료되어도 일정 기간 유지됩니다. - Tool Execution Engine: 에이전트가 코드를 생성하면, 이를 무상태 API로 처리하는 것이 아니라 샌드박스 내부의 파이썬 인터프리터나 헤드리스 브라우저(Puppeteer/Playwright)에 던져 실제 실행(Execution)하고 표준 출력(stdout/stderr)을 피드백받습니다.
- 자율 이벤트 루프: 사용자의 웹 브라우저 연결이 끊겨도 원격 런타임 내에서 크론(Cron) 스케줄러나 웹훅 트리거에 의해 에이전트 루프가 독자적으로 가동됩니다.