워크플로우가 내부적으로 상태를 추적하는 방식을 변경합니다. 기존에 레코드를就地 (in place) 로 업데이트하던 방식 대신, 모든 상태 변경은 이제 이벤트로 저장되며, 현재 상태는 해당 로그를 재생 (replaying) 하여 재구성됩니다.
이 릴리스는 또한 제공자 실행 도구 (provider-executed tools) 와 더 높은 처리량 (higher throughput) 을 지원합니다.
워크플로우 4.1 베타는 상태를 레코드를就地 로 업데이트하는 대신 이벤트 시퀀스로서 저장하는 지속성 패턴 (persistence pattern) 입니다. "이 실행이 완료됨"을 저장하는 대신, 시스템은 "run_created, 그 다음 run_started, 그 다음 run_completed"를 저장하며, 해당 이벤트를 재생하여 현재 상태를 재구성합니다.
이벤트 소싱 (Event Sourcing)
워크플로우 4.1 에서 실행 (runs), 단계 (steps), 후크 (hooks) 는 더 이상 변경 가능한 데이터베이스 레코드가 아닙니다. 이들은 오직 추가만 허용되는 이벤트 로그의 구현체 (materializations) 입니다. 각 이벤트는 타임스탬프와 컨텍스트를 포착하며, 런타임은 이벤트를 순서대로 처리하여 현재 상태를 유도합니다.
이 아키텍처는 워크플로우를 세 가지 방식으로 더 신뢰할 수 있게 만듭니다:
- 자가 치유 (Self-healing): 이벤트 로그를 통해 어떤 상태에 도달했는지 이끈 정확한 시퀀스를 재생할 수 있어, 분산 워크플로우의 디버깅이 훨씬 쉬워집니다.
- 완전한 감사 추적 (Complete audit trail): 이벤트는 오직 추가만 허용되므로, 쓰기 중 부분적 실패로 인해 엔티티가 일관성 없는 상태에 남을 수 없습니다. 이벤트 로그가 단일 진실 공급원 (single source of truth) 입니다.
- 일관성 (Consistency): 워크플로우 큐 시스템은 이제 초당 수천 개의 단계를 처리합니다. 의존성이 허용되는 경우 여러 단계가 병렬로 실행됩니다.
처리량 개선 (Improved throughput): 이제 Google Search 와 WebSearch 같은 제공자 실행 도구를 지원합니다. 이 도구들은 워크플로우 내부가 아닌 모델 제공자의 인프라에서 실행됩니다.
@workflow/ai: 새로운 패키지는 NestJS 애플리케이션에 대한 빌드 지원을 추가하며, 의존성 주입 패턴을 처리하여 워크플로우가 기존 NestJS 서비스와 통합되도록 합니다.
NestJS 지원: SWC 플러그인은 이제 단계 (step) 와 워크플로우 함수 내부에서 TC39 명시적 리소스 관리 (Explicit Resource Management) 제안안을 지원합니다. 이를 통해 자동 리소스 정리가 가능해집니다.
최상위 using 선언문: 클라이언트 모드이제 커스텀 클래스 직렬화를 지원하며, 직렬화 가능한 타입을 선언하는 object 를 포함합니다.
custom class serialization classes manifest.json: @workflow/ai 에서 도구 출력의 이중 직렬화 (double-serialization) 문제를 수정했습니다.
워크플로우에 대한 이벤트 소싱의 의미에 대해 더 알아보기: 이벤트 소싱 문서
워크플로우를 처음 시작하는 경우 더 알아보기: 워크플로우 시작하기