InfoGrab Docs

워크스페이스 조정 로직

요약

이 문서는 다양한 이벤트가 데이터베이스 레코드를 어떻게 변경하는지, 그리고 rails와 agentk 간의 통신이 이러한 이벤트를 어떻게 반영하는지 보여줍니다. 두 종류의 워크스페이스 조정 업데이트가 존재합니다: full과 partial.

이 문서는 다양한 이벤트가 데이터베이스 레코드를 어떻게 변경하는지, 그리고 railsagentk 간의 통신이 이러한 이벤트를 어떻게 반영하는지 보여줍니다.

두 종류의 워크스페이스 조정 업데이트가 존재합니다: fullpartial. 자세한 내용은 메시지 유형을 참조하십시오.

부분 동기화 시나리오 모델링#

  • request - 발생하는 이벤트. CURRENT_DB_STATE는 이벤트 발생 전 데이터베이스 상태를 설명합니다.
  • include config_to_apply in workspace_rails_info response?
    • CURRENT_DB_STATEUSER_ACTION 이벤트의 경우 해당 없음. -로 표시.
    • AGENT_ACTION 이벤트의 경우 - agentk로부터 받은 워크스페이스 정보로 데이터베이스가 업데이트되기 전 데이터베이스 상태를 기준으로, desired_state_updated_at >= responded_to_agent_at 조건에 따라 Rails가 agentkconfig_to_apply 정보를 보내야 하는가?
  • include deployment_resource_version in workspace_rails_info response? - Rails가 agentkdeployment_resource_version 정보를 보내야 하는가?
    • 이 필드는 아래 표에서 간결성을 위해 표시하지 않습니다. 아래 시나리오에서는 항상 true로 평가됩니다(agentk 또는 사용자로부터 업데이트 없음 시나리오 제외).
    • 평가 규칙:
      • agentk로부터 워크스페이스에 대한 정보를 받은 경우 - Yes
      • 워크스페이스에 적용할 설정이 agentk에 전송되는 경우 - Yes
      • 그 외 - No
  • desired_state_updated_at, responded_to_agent_at, desired_state, actual_state - 이벤트 발생 후 데이터베이스 상태
  • responded_to_agent_at는 Rails가 워크스페이스에 대한 정보를 에이전트에 응답할 때 항상 현재 타임스탬프로 업데이트됩니다. 정보에는 config_to_apply 또는 deployment_resource_version 또는 둘 다 포함될 수 있습니다.

desired: Running / actual: CreationRequested → desired: Running / actual: Running#

사용자가 새 워크스페이스를 요청하여 Running 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 빈 데이터베이스 -
USER_ACTION - 사용자가 새 워크스페이스 요청 - Running CreationRequested 05:00
AGENT_ACTION - agentk 정보 없음 보고 Y Running CreationRequested 05:00 05:01
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:00 05:02
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:00 05:03

desired: Running / actual: CreationRequested → desired: Running / actual: Failed#

사용자가 새 워크스페이스를 요청하여 Failed 실제 상태가 됩니다 (예: 컨테이너 충돌).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 빈 데이터베이스 -
USER_ACTION - 사용자가 새 워크스페이스 요청 - Running CreationRequested 05:00
AGENT_ACTION - agentk 정보 없음 보고 Y Running CreationRequested 05:00 05:01
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:00 05:02
AGENT_ACTION - agentk가 Failing으로 보고 N Running Failed 05:00 05:03

desired: Running / actual: CreationRequested → desired: Running / actual: Error#

사용자가 새 워크스페이스를 요청하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 빈 데이터베이스 -
USER_ACTION - 사용자가 새 워크스페이스 요청 - Running CreationRequested 05:00
AGENT_ACTION - agentk 정보 없음 보고 Y Running CreationRequested 05:00 05:01
AGENT_ACTION - agentk가 Error로 보고 N Running Error 05:00 05:02

desired: Running / actual: Running → desired: Stopped / actual: Stopped#

사용자가 실행 중인 워크스페이스를 중지하여 Stopped 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Running 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고 N Stopped Stopped 05:02 05:05

desired: Running / actual: Running → desired: Stopped / actual: Failed#

사용자가 실행 중인 워크스페이스를 중지하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 중지 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Running 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Failed로 보고 N Stopped Failed 05:02 05:05

desired: Running / actual: Running → desired: Stopped / actual: Error#

사용자가 실행 중인 워크스페이스를 중지하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Running 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Stopped Error 05:02 05:04

desired: Running / actual: Running → desired: Terminated / actual: Terminated#

사용자가 실행 중인 워크스페이스를 종료하여 Terminated 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Running 05:02 05:03
AGENT_ACTION - agentk가 Terminated로 보고 N Terminated Terminated 05:02 05:04

desired: Running / actual: Running → desired: Terminated / actual: Failed#

사용자가 실행 중인 워크스페이스를 종료하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 종료 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Running 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Terminated Failed 05:02 05:04

desired: Running / actual: Running → desired: Terminated / actual: Error#

사용자가 실행 중인 워크스페이스를 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Running 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Stopped / actual: Stopped → desired: Running / actual: Running#

사용자가 중지된 워크스페이스를 시작하여 Running 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 시작 - Running Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Running Stopped 05:02 05:03
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:02 05:04
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:02 05:05

desired: Stopped / actual: Stopped → desired: Running / actual: Failed#

사용자가 중지된 워크스페이스를 시작하여 Failed 실제 상태가 됩니다 (예: 컨테이너 충돌).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 시작 - Running Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Running Stopped 05:02 05:03
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:02 05:04
AGENT_ACTION - agentk가 Failed로 보고 N Running Failed 05:02 05:05

desired: Stopped / actual: Stopped → desired: Running / actual: Error#

사용자가 중지된 워크스페이스를 시작하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 시작 - Running Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Running Stopped 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Running Error 05:02 05:04

desired: Stopped / actual: Stopped → desired: Terminated / actual: Terminated#

사용자가 중지된 워크스페이스를 종료하여 Terminated 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Stopped 05:02 05:03
AGENT_ACTION - agentk가 Terminated로 보고 N Terminated Terminated 05:02 05:04

desired: Stopped / actual: Stopped → desired: Terminated / actual: Failed#

사용자가 중지된 워크스페이스를 종료하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 종료 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Stopped 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Terminated Failed 05:02 05:04

desired: Stopped / actual: Stopped → desired: Terminated / actual: Error#

사용자가 중지된 워크스페이스를 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Stopped 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Running / actual: Failed → desired: Running / actual: Running#

실패한 워크스페이스가 정상화되어 Running 실제 상태가 됩니다 (예: 컨테이너 충돌 해소).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:00 05:02
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:00 05:03

desired: Running / actual: Failed → desired: Stopped / actual: Stopped#

실패한 워크스페이스를 사용자가 중지하여 Stopped 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고 N Stopped Stopped 05:02 05:05

desired: Running / actual: Failed → desired: Stopped / actual: Failed#

실패한 워크스페이스를 사용자가 중지하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 중지 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Stopped Failed 05:02 05:04

desired: Running / actual: Failed → desired: Stopped / actual: Error#

실패한 워크스페이스를 사용자가 중지하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Stopped Error 05:02 05:04

desired: Running / actual: Failed → desired: Terminated / actual: Terminated#

실패한 워크스페이스를 사용자가 종료하여 Terminated 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Terminated로 보고 N Terminated Terminated 05:02 05:04

desired: Running / actual: Failed → desired: Terminated / actual: Failed#

실패한 워크스페이스를 사용자가 종료하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 종료 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Terminated Failed 05:02 05:04

desired: Running / actual: Failed → desired: Terminated / actual: Error#

실패한 워크스페이스를 사용자가 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Running / actual: Error → desired: Stopped / actual: Error#

오류 상태의 워크스페이스를 사용자가 중지하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

Note

이 전환은 허용되지 않을 수 있습니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Running / actual: Error → desired: Terminated / actual: Error#

오류 상태의 워크스페이스를 사용자가 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

Note

이 전환은 허용되지 않을 수 있습니다. 허용되지 않을 경우 정리되지 않은 상태가 남는지 여부를 추가 평가가 필요합니다. 워크스페이스가 처음부터 생성되지 않은 경우 또는 워크스페이스가 성공적으로 생성되었지만 중지되는 중에 Error 상태로 진입한 경우를 고려하십시오.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

기타 시나리오#

agentk가 워크스페이스를 보고하고 사용자도 워크스페이스의 원하는 상태를 업데이트한 경우#

이 시나리오는 agentk가 워크스페이스를 보고하면서 사용자도 워크스페이스에 대한 작업을 수행한 경우를 보여줍니다. 이는 양쪽(에이전트와 Rails) 모두 새 정보가 있는 경우에도 이 로직이 작동함을 강조합니다.

시나리오 세부 사항:

  • 워크스페이스가 이전에 실행 중이었음
  • 워크스페이스가 현재 충돌하기 시작함 (Failed 상태)
  • 사용자가 워크스페이스가 충돌하기 시작한 것을 인식하지 못한 채 더 이상 필요하지 않아 중지함
request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk가 Failed로 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고 N Stopped Stopped 05:02 05:05

워크스페이스 재시작#

사용자가 실행 중인 워크스페이스를 재시작하여 Running 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
사용자가 워크스페이스 재시작 - RestartRequested Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y RestartRequested Running 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N RestartRequested Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고, desired_state가 자동으로 Running으로 변경 Y Running Stopped 05:05 05:05
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:05 05:07
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:05 05:08

agentk 또는 사용자로부터 워크스페이스 업데이트 없음 {#no-update-for-workspace-from-agentk-or-from-user}#

Rails가 이 워크스페이스에 대한 정보를 agentk 응답에 포함하지 않으므로:

  • include deployment_resource_version in workspace_rails_info response?N으로 설정
  • responded_to_agent_at가 업데이트되지 않음
request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
AGENT_ACTION - agentk 정보 없음 보고 N Running Running 05:00 05:01
Note

Unknown 실제 상태는 언제 발생하고 어떻게 처리해야 하는지 알 수 없어 아직 모델링되지 않았습니다. Unknown은 이상적으로는 절대 발생하지 않아야 하는 안전 장치 상태입니다.

워크스페이스 조정 로직

원문 보기
요약

이 문서는 다양한 이벤트가 데이터베이스 레코드를 어떻게 변경하는지, 그리고 rails와 agentk 간의 통신이 이러한 이벤트를 어떻게 반영하는지 보여줍니다. 두 종류의 워크스페이스 조정 업데이트가 존재합니다: full과 partial.

이 문서는 다양한 이벤트가 데이터베이스 레코드를 어떻게 변경하는지, 그리고 railsagentk 간의 통신이 이러한 이벤트를 어떻게 반영하는지 보여줍니다.

두 종류의 워크스페이스 조정 업데이트가 존재합니다: fullpartial. 자세한 내용은 메시지 유형을 참조하십시오.

부분 동기화 시나리오 모델링#

  • request - 발생하는 이벤트. CURRENT_DB_STATE는 이벤트 발생 전 데이터베이스 상태를 설명합니다.
  • include config_to_apply in workspace_rails_info response?
    • CURRENT_DB_STATEUSER_ACTION 이벤트의 경우 해당 없음. -로 표시.
    • AGENT_ACTION 이벤트의 경우 - agentk로부터 받은 워크스페이스 정보로 데이터베이스가 업데이트되기 전 데이터베이스 상태를 기준으로, desired_state_updated_at >= responded_to_agent_at 조건에 따라 Rails가 agentkconfig_to_apply 정보를 보내야 하는가?
  • include deployment_resource_version in workspace_rails_info response? - Rails가 agentkdeployment_resource_version 정보를 보내야 하는가?
    • 이 필드는 아래 표에서 간결성을 위해 표시하지 않습니다. 아래 시나리오에서는 항상 true로 평가됩니다(agentk 또는 사용자로부터 업데이트 없음 시나리오 제외).
    • 평가 규칙:
      • agentk로부터 워크스페이스에 대한 정보를 받은 경우 - Yes
      • 워크스페이스에 적용할 설정이 agentk에 전송되는 경우 - Yes
      • 그 외 - No
  • desired_state_updated_at, responded_to_agent_at, desired_state, actual_state - 이벤트 발생 후 데이터베이스 상태
  • responded_to_agent_at는 Rails가 워크스페이스에 대한 정보를 에이전트에 응답할 때 항상 현재 타임스탬프로 업데이트됩니다. 정보에는 config_to_apply 또는 deployment_resource_version 또는 둘 다 포함될 수 있습니다.

desired: Running / actual: CreationRequested → desired: Running / actual: Running#

사용자가 새 워크스페이스를 요청하여 Running 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 빈 데이터베이스 -
USER_ACTION - 사용자가 새 워크스페이스 요청 - Running CreationRequested 05:00
AGENT_ACTION - agentk 정보 없음 보고 Y Running CreationRequested 05:00 05:01
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:00 05:02
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:00 05:03

desired: Running / actual: CreationRequested → desired: Running / actual: Failed#

사용자가 새 워크스페이스를 요청하여 Failed 실제 상태가 됩니다 (예: 컨테이너 충돌).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 빈 데이터베이스 -
USER_ACTION - 사용자가 새 워크스페이스 요청 - Running CreationRequested 05:00
AGENT_ACTION - agentk 정보 없음 보고 Y Running CreationRequested 05:00 05:01
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:00 05:02
AGENT_ACTION - agentk가 Failing으로 보고 N Running Failed 05:00 05:03

desired: Running / actual: CreationRequested → desired: Running / actual: Error#

사용자가 새 워크스페이스를 요청하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 빈 데이터베이스 -
USER_ACTION - 사용자가 새 워크스페이스 요청 - Running CreationRequested 05:00
AGENT_ACTION - agentk 정보 없음 보고 Y Running CreationRequested 05:00 05:01
AGENT_ACTION - agentk가 Error로 보고 N Running Error 05:00 05:02

desired: Running / actual: Running → desired: Stopped / actual: Stopped#

사용자가 실행 중인 워크스페이스를 중지하여 Stopped 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Running 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고 N Stopped Stopped 05:02 05:05

desired: Running / actual: Running → desired: Stopped / actual: Failed#

사용자가 실행 중인 워크스페이스를 중지하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 중지 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Running 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Failed로 보고 N Stopped Failed 05:02 05:05

desired: Running / actual: Running → desired: Stopped / actual: Error#

사용자가 실행 중인 워크스페이스를 중지하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Running 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Stopped Error 05:02 05:04

desired: Running / actual: Running → desired: Terminated / actual: Terminated#

사용자가 실행 중인 워크스페이스를 종료하여 Terminated 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Running 05:02 05:03
AGENT_ACTION - agentk가 Terminated로 보고 N Terminated Terminated 05:02 05:04

desired: Running / actual: Running → desired: Terminated / actual: Failed#

사용자가 실행 중인 워크스페이스를 종료하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 종료 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Running 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Terminated Failed 05:02 05:04

desired: Running / actual: Running → desired: Terminated / actual: Error#

사용자가 실행 중인 워크스페이스를 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Running 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Stopped / actual: Stopped → desired: Running / actual: Running#

사용자가 중지된 워크스페이스를 시작하여 Running 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 시작 - Running Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Running Stopped 05:02 05:03
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:02 05:04
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:02 05:05

desired: Stopped / actual: Stopped → desired: Running / actual: Failed#

사용자가 중지된 워크스페이스를 시작하여 Failed 실제 상태가 됩니다 (예: 컨테이너 충돌).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 시작 - Running Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Running Stopped 05:02 05:03
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:02 05:04
AGENT_ACTION - agentk가 Failed로 보고 N Running Failed 05:02 05:05

desired: Stopped / actual: Stopped → desired: Running / actual: Error#

사용자가 중지된 워크스페이스를 시작하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 시작 - Running Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Running Stopped 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Running Error 05:02 05:04

desired: Stopped / actual: Stopped → desired: Terminated / actual: Terminated#

사용자가 중지된 워크스페이스를 종료하여 Terminated 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Stopped 05:02 05:03
AGENT_ACTION - agentk가 Terminated로 보고 N Terminated Terminated 05:02 05:04

desired: Stopped / actual: Stopped → desired: Terminated / actual: Failed#

사용자가 중지된 워크스페이스를 종료하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 종료 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Stopped 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Terminated Failed 05:02 05:04

desired: Stopped / actual: Stopped → desired: Terminated / actual: Error#

사용자가 중지된 워크스페이스를 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Stopped 상태 - Stopped Stopped 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Stopped 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Stopped 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Running / actual: Failed → desired: Running / actual: Running#

실패한 워크스페이스가 정상화되어 Running 실제 상태가 됩니다 (예: 컨테이너 충돌 해소).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:00 05:02
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:00 05:03

desired: Running / actual: Failed → desired: Stopped / actual: Stopped#

실패한 워크스페이스를 사용자가 중지하여 Stopped 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고 N Stopped Stopped 05:02 05:05

desired: Running / actual: Failed → desired: Stopped / actual: Failed#

실패한 워크스페이스를 사용자가 중지하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 중지 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Stopped Failed 05:02 05:04

desired: Running / actual: Failed → desired: Stopped / actual: Error#

실패한 워크스페이스를 사용자가 중지하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Stopped Error 05:02 05:04

desired: Running / actual: Failed → desired: Terminated / actual: Terminated#

실패한 워크스페이스를 사용자가 종료하여 Terminated 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Terminated로 보고 N Terminated Terminated 05:02 05:04

desired: Running / actual: Failed → desired: Terminated / actual: Failed#

실패한 워크스페이스를 사용자가 종료하여 Failed 실제 상태가 됩니다 (예: 볼륨 마운트 해제 실패로 워크스페이스 종료 불가).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Failed로 보고 N Terminated Failed 05:02 05:04

desired: Running / actual: Failed → desired: Terminated / actual: Error#

실패한 워크스페이스를 사용자가 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Running / actual: Error → desired: Stopped / actual: Error#

오류 상태의 워크스페이스를 사용자가 중지하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

Note

이 전환은 허용되지 않을 수 있습니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

desired: Running / actual: Error → desired: Terminated / actual: Error#

오류 상태의 워크스페이스를 사용자가 종료하여 Error 실제 상태가 됩니다 (예: Kubernetes 리소스 적용 실패).

Note

이 전환은 허용되지 않을 수 있습니다. 허용되지 않을 경우 정리되지 않은 상태가 남는지 여부를 추가 평가가 필요합니다. 워크스페이스가 처음부터 생성되지 않은 경우 또는 워크스페이스가 성공적으로 생성되었지만 중지되는 중에 Error 상태로 진입한 경우를 고려하십시오.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Failed 상태 - Running Failed 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 종료 - Terminated Failed 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y Terminated Failed 05:02 05:03
AGENT_ACTION - agentk가 Error로 보고 N Terminated Error 05:02 05:04

기타 시나리오#

agentk가 워크스페이스를 보고하고 사용자도 워크스페이스의 원하는 상태를 업데이트한 경우#

이 시나리오는 agentk가 워크스페이스를 보고하면서 사용자도 워크스페이스에 대한 작업을 수행한 경우를 보여줍니다. 이는 양쪽(에이전트와 Rails) 모두 새 정보가 있는 경우에도 이 로직이 작동함을 강조합니다.

시나리오 세부 사항:

  • 워크스페이스가 이전에 실행 중이었음
  • 워크스페이스가 현재 충돌하기 시작함 (Failed 상태)
  • 사용자가 워크스페이스가 충돌하기 시작한 것을 인식하지 못한 채 더 이상 필요하지 않아 중지함
request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
USER_ACTION - 사용자가 워크스페이스 중지 - Stopped Running 05:02 05:01
AGENT_ACTION - agentk가 Failed로 보고 Y Stopped Failed 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N Stopped Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고 N Stopped Stopped 05:02 05:05

워크스페이스 재시작#

사용자가 실행 중인 워크스페이스를 재시작하여 Running 실제 상태가 됩니다.

request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
사용자가 워크스페이스 재시작 - RestartRequested Running 05:02 05:01
AGENT_ACTION - agentk 정보 없음 보고 Y RestartRequested Running 05:02 05:03
AGENT_ACTION - agentk가 Stopping으로 보고 N RestartRequested Stopping 05:02 05:04
AGENT_ACTION - agentk가 Stopped로 보고, desired_state가 자동으로 Running으로 변경 Y Running Stopped 05:05 05:05
AGENT_ACTION - agentk가 Starting으로 보고 N Running Starting 05:05 05:07
AGENT_ACTION - agentk가 Running으로 보고 N Running Running 05:05 05:08

agentk 또는 사용자로부터 워크스페이스 업데이트 없음 {#no-update-for-workspace-from-agentk-or-from-user}#

Rails가 이 워크스페이스에 대한 정보를 agentk 응답에 포함하지 않으므로:

  • include deployment_resource_version in workspace_rails_info response?N으로 설정
  • responded_to_agent_at가 업데이트되지 않음
request include config_to_apply in workspace_rails_info response? desired_state actual_state desired_state_updated_at responded_to_agent_at
CURRENT_DB_STATE - 워크스페이스가 Running 상태 - Running Running 05:00 05:01
AGENT_ACTION - agentk 정보 없음 보고 N Running Running 05:00 05:01
Note

Unknown 실제 상태는 언제 발생하고 어떻게 처리해야 하는지 알 수 없어 아직 모델링되지 않았습니다. Unknown은 이상적으로는 절대 발생하지 않아야 하는 안전 장치 상태입니다.