← BlogIsaac Sim 작동 원리· 9/10

Fresh 모드 vs Daemon 모드 — 빠른 재사용의 유혹과 상태 오염

런마다 시뮬레이터를 새로 띄우는 Fresh 모드와, 켜둔 채 재사용하는 Daemon 모드. 후자가 빨라 보이지만, 런 사이 상태 오염이 검증의 신뢰를 무너뜨린다.

약 2분
Isaac-Simprocess-isolationstatevalidationarchitecture

Fresh 모드 vs Daemon 모드

시뮬레이터(Isaac Sim)는 부팅에 시간이 걸립니다. 그래서 자연스러운 유혹이 생깁니다 — "한 번 띄워두고 여러 런에 재사용하면 빠르지 않을까?" 이 유혹의 이름이 Daemon 모드이고, 왜 우리가 그 대신 Fresh 모드를 고수하는지가 이 글의 주제입니다.

두 모드

도식 렌더링 중…
  • Fresh 모드 — 런마다 시뮬을 새로 부팅하고, 끝나면 종료. 매번 깨끗한 백지에서 시작.
  • Daemon 모드 — 시뮬을 한 번 켜두고 여러 런이 같은 프로세스를 재사용. 부팅 시간을 아낌.

Daemon의 함정 — 상태 오염

Daemon이 빨라 보이는 건 사실입니다. 하지만 치명적 약점이 있습니다 — 런 사이에 상태가 남습니다.

⚠️ 이전 런의 잔재가 다음 런을 오염시킨다 — 같은 프로세스를 재사용하면, 앞 런이 만든 prim·물리 상태·캐시·메모리가 완전히 청소되지 않을 수 있습니다. 그러면 런2의 결과가 런2만의 결과가 아니라 런1의 잔재가 섞인 결과가 됩니다. 검증에서 이건 재앙입니다 — "이 런의 KPI가 진짜 이 설정 때문인가, 아니면 앞 런 잔재 때문인가?"를 알 수 없게 됩니다.

검증 플랫폼의 생명은 재현성입니다. 같은 입력은 항상 같은 출력을 내야(멱등성) 합니다. Daemon의 상태 오염은 이 재현성을 깨뜨립니다.

왜 Fresh를 고수하나

💡 격리 > 속도 (검증에서는) — 부팅 몇 초를 아끼려고 런 간 격리를 포기하면, 그 대가로 모든 런의 신뢰성을 잃습니다. 각 런이 완전히 독립된 깨끗한 프로세스에서 돌아야, 그 KPI가 그 설정만의 결과라고 말할 수 있습니다. 그래서 검증 경로는 Fresh 모드만 씁니다 — Daemon은 그 유혹이 코드에 남아 있더라도 쓰지 않습니다.

이건 일반 소프트웨어의 "stateless가 낫다"는 원칙과 같습니다. 상태를 공유하는 최적화는 빠르지만 디버깅 지옥을 부릅니다. 검증처럼 정확성이 전부인 영역에선, 느리더라도 깨끗한 격리가 옳습니다.

한 줄 정리

📌 Fresh 모드(런마다 새 부팅·완전 격리)와 Daemon 모드(켜둔 채 재사용·빠름)가 있다. Daemon은 빠르지만 런 사이 상태 오염으로 재현성을 깨므로, 검증에선 부팅 시간을 감수하고 Fresh 모드만 쓴다 — 격리가 속도보다 중요하다.