← Blog데이터 계약 (Spec & Schema)· 3/4

RuntimeConfig — 런 하나를 통째로 기술하는 단일 계약

환경·로봇·시나리오·센서·옵션을 하나의 선언적 객체로 묶어 런을 기술하는 RuntimeConfig. '무엇을 돌릴지'와 '어떻게 돌릴지'를 분리하는 계약.

약 2분
RuntimeConfigschemaAPIdata-contractorchestration

RuntimeConfig — 런 하나를 통째로 기술하는 단일 계약

시뮬레이션 한 번(run)을 실행하려면 정해야 할 게 많습니다 — 어떤 환경에서, 어떤 로봇 몇 대를, 어떤 시나리오로, 어떤 센서를 켜고, 어떤 옵션으로. 이 모든 걸 하나의 선언적 객체로 묶은 게 RuntimeConfig입니다. 런의 "주문서"인 셈입니다.

무엇을 vs 어떻게

RuntimeConfig의 핵심 설계는 "무엇을 돌릴지(선언)"와 "어떻게 돌릴지(엔진)"를 분리하는 것입니다.

도식 렌더링 중…

사용자/API는 "무엇을"만 적습니다. "어떻게"(어느 GPU 노드, 어떤 프로세스, 물리 스텝)는 오케스트레이터·워커·러너가 알아서 합니다. 이 분리 덕분에 같은 주문서가 어느 노드에서든 동일하게 실행됩니다.

RuntimeConfig가 담는 주요 항목:

항목내용
환경어떤 USD 환경/맵
로봇어떤 매니페스트의 로봇 몇 대, 초기 위치
시나리오어떤 OSC 시나리오
센서LiDAR/카메라/IMU 구성
옵션스트리밍·녹화·오버레이 on/off

옵션은 기본 OFF — 시간 낭비 방지

옵션 설계엔 원칙이 하나 있습니다.

💡 무거운 옵션은 기본 OFF — 미션 오버레이, 영상 export 같은 무거운 부가 기능은 명시적으로 켤 때만 켜야 합니다. 모든 런에서 기본으로 켜두면, 정작 필요 없는 검증 런에서 GPU·시간을 낭비합니다. "기본은 가볍게, 필요하면 명시적으로"가 계약의 기본값 철학입니다.

⚠️ 테스트는 이 계약을 통해서만 — 런을 ssh로 러너를 직접 띄워 테스트하면, RuntimeConfig 경로를 우회해 실제 프로덕션 경로와 다른 동작을 검증하게 됩니다. 검증은 반드시 이 계약(POST /runs)을 통해, 프로덕션과 같은 경로로 해야 의미가 있습니다.

왜 단일 계약인가

런을 기술하는 방법이 여러 갈래로 흩어지면(절반은 API, 절반은 환경변수, 절반은 코드 기본값) 재현이 안 됩니다. RuntimeConfig라는 단일 진입점이 있으면, "이 주문서"만 있으면 누구든 같은 런을 똑같이 재현할 수 있습니다 — 이것이 self-containment 철학이 런 실행에 적용된 모습입니다.

한 줄 정리

📌 RuntimeConfig는 환경·로봇·시나리오·센서·옵션을 하나로 묶어 런을 기술하는 단일 계약이다. "무엇을 돌릴지(선언)"와 "어떻게 돌릴지(엔진)"를 분리하고, 무거운 옵션은 기본 OFF이며, 검증은 반드시 이 계약(프로덕션 경로)을 통해 한다.