이메일 초안을 쓰다가 브라우저가 꺼지면 그 내용은 사라져요. 서버가 저장한 게 아니었거든요. 그 초안은 브라우저의 상태(state)에만 존재했고, 충돌과 함께 지워진 거예요.
상태란 시스템이 지금 이 순간 기억하고 있는 것이에요. 디스크에 저장된 내용이 아니에요. 데이터베이스에 들어간 데이터도 아니고요. 지금, 이 세션에서, 이 실행 중인 프로세스에서 시스템이 현재 알고 있는 것이에요.
가장 명확한 비유는 회의 중 화이트보드예요. 화이트보드에는 지금 논의 중인 그림이 있어요. 5분 전에 누군가 그린 다이어그램, 지금까지 내린 결정 목록, 다 같이 가리키고 있는 것. 그게 상태예요. 영구 기록이 아니에요. 회의가 끝나고 누군가 지우면 사라지죠. 회의 후 정리해서 이메일로 보내는 회의록은 다른 거예요. 그건 데이터베이스에 저장하는 거니까요. 화이트보드 자체가 상태예요.
AI에서 이 개념이 헷갈리는 이유.
'Stateless(상태 없음)'는 기술적 비난처럼 들리지만 그냥 이런 뜻이에요. 이 프로세스가 끝나면 아무것도 기억하지 않아요. 모든 새 요청은 빈 화이트보드에서 시작해요. 단순한 작업에는 이게 오히려 좋아요. 프로세스가 깔끔하고 예측 가능하며 오염될 일이 없거든요.
그런데 여러 단계에 걸친 작업을 수행하는 에이전트는 상태가 필요해요. "1단계 완료, 결과는 이것, 지금 2단계 진행 중"을 어딘가에 저장해 두어야 하거든요. 작업 중간에 프로세스가 종료되고 상태를 어딘가에 저장해 두지 않았다면, 에이전트는 빈 화이트보드 앞에서 깨어나요. 자신이 무엇을 하고 있었는지 모르고, 처음부터 다시 시작해야 해요.
상태가 만들어내는 질문들:
- 이 시스템은 현재 작업 내용을 어디에 저장하나요? 메모리, 데이터베이스, 외부 파일?
- 작업이 끝나기 전에 프로세스가 충돌하면 어떻게 되나요?
- "이어서 계속"이라고 할 때, '이어서'의 위치는 정확히 어디에 기록되어 있나요?
단계적으로 시간을 두고 실행되는 AI 워크플로우라면, "상태를 어떻게 관리할 것인가?"는 만들기 전에 반드시 짚어야 할 질문이에요. 작업 도중 무엇을 하고 있었는지 잊어버리는 에이전트는 거의 항상 모델 문제가 아니라 상태 문제예요.
상태는 화이트보드예요. 스토리지는 서류 캐비닛이고요. 둘 다 필요하고, 이 둘을 혼동하는 데서 대부분의 골칫거리가 생겨요.