Skip to content

Conversation

@jihukimme
Copy link
Member

📝 작업 내용

워크플로우 실행 시 Task 간 데이터를 전달하던 기존의 인메모리(In-Memory) 컨텍스트 방식을 데이터베이스 기반의 영속적(Persistent) 컨텍스트 방식으로 변경합니다.

기존 방식은 애플리케이션 메모리에만 데이터가 존재하여, 서버 다운 시 실행 상태가 유실되고 분산 환경으로의 확장이 불가능한 문제가 있었습니다.

  1. task_io_data 테이블 활용:

    • 모든 Task의 입력(Input)과 출력(Output) 데이터를 task_io_data 테이블에 영속적으로 저장하도록 WorkflowExecutionService를 수정했습니다.
  2. WorkflowContextService 도입:

    • DB(task_run, task_io_data 테이블)에서 이전 Task의 실행 결과를 조회하는 복잡한 로직을 캡슐화한 WorkflowContextService를 추가했습니다.
  3. TaskBodyBuilder 리팩토링:

    • 모든 TaskBodyBuilder 구현체가 인메모리 Map 대신, WorkflowContextService를 주입받아 이전 Task의 결과를 DB에서 조회하도록 수정했습니다.
    • build 메소드의 시그니처를 (Task task, JobRun jobRun)으로 변경하여, 현재 실행중인 JobRun을 기준으로 컨텍스트를 조회하도록 명확히 했습니다.

✔️ 기대 효과

  • 안정성 및 복구성: 워크플로우 실행 중 서버에 장애가 발생해도, 모든 입출력 데이터가 DB에 남아있어 재실행 및 디버깅이 용이해집니다.
  • 확장성: 여러 서버 인스턴스가 DB를 통해 실행 상태를 공유할 수 있게 되어, 향후 분산 환경으로의 확장이 가능한 구조를 확보했습니다.
  • 코드 품질 향상: 데이터 조회 로직을 WorkflowContextService로 중앙화하여 코드 중복을 제거하고, 각 BodyBuilder의 책임을 명확히 했습니다.

🔗 관련 이슈

  • Closes #이슈번호
  • Related to #이슈번호

💬 추가 요청사항


✅ 체크리스트

코드 품질

  • 커밋 컨벤션 준수 (feat/fix/docs/refactor 등)
  • 불필요한 코드/주석 제거

테스트

  • 로컬 환경에서 동작 확인 완료
  • 기존 기능에 영향 없음 확인

배포 준비

  • 환경변수 추가/변경사항 문서화
  • DB 마이그레이션 필요 여부 확인
  • 배포 시 주의사항 없음

@jihukimme jihukimme self-assigned this Sep 29, 2025
@jihukimme jihukimme marked this pull request as ready for review September 29, 2025 07:45
@jihukimme jihukimme added the enhancement New feature or request label Sep 29, 2025
@jihukimme jihukimme merged commit 5c210db into develop Sep 29, 2025
13 checks passed
@jihukimme jihukimme deleted the feature/use-task-io-data-context branch September 29, 2025 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants