Skip to main content
Workflow๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ ๋ฐœ์†ก, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์Šค์ผ€์ค„ ์ž‘์—… ๋“ฑ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Tasks ์„ค์ •

์˜ต์…˜:
  • enableWorker: Worker ํ™œ์„ฑํ™” ์—ฌ๋ถ€ (๊ธฐ๋ณธ: daemon ๋ชจ๋“œ์—์„œ๋งŒ true)
  • workerOptions.concurrency: ๋™์‹œ ์‹คํ–‰ ์ž‘์—… ์ˆ˜ (๊ธฐ๋ณธ: 1)
  • workerOptions.usePubSub: PostgreSQL LISTEN/NOTIFY ์‚ฌ์šฉ (๊ธฐ๋ณธ: true)
  • workerOptions.listenDelay: Pub/Sub ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ํ›„ ๋Œ€๊ธฐ ์‹œ๊ฐ„ (๊ธฐ๋ณธ: 500ms)
  • contextProvider: Workflow ๋‚ด์—์„œ ์‚ฌ์šฉํ•  Context ์ƒ์„ฑ ํ•จ์ˆ˜

WorkflowManager

Sonamu๋Š” WorkflowManager๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Sonamu.workflows๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Worker ๋ชจ๋“œ

1. Daemon ๋ชจ๋“œ (์ž๋™ ํ™œ์„ฑํ™”)

Daemon ๋ชจ๋“œ์—์„œ๋Š” enableWorker: true๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.

2. ๋ณ„๋„ Worker ํ”„๋กœ์„ธ์Šค

3. API ์„œ๋ฒ„ + Worker

๋ถ„์‚ฐ Worker

์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ Worker๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
PostgreSQL์ด ์ž‘์—… ํ ์—ญํ• ์„ ํ•˜๋ฉฐ, Pub/Sub์œผ๋กœ Worker ๊ฐ„ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

Context Provider

Workflow์—์„œ ์‚ฌ์šฉํ•  Context๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•ฉ๋‹ˆ๋‹ค.
Workflow ํ•จ์ˆ˜ ๋‚ด์—์„œ Sonamu.getContext()๋กœ ์ ‘๊ทผ:

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ

Sonamu๋Š” ๋‹ค์Œ ํ…Œ์ด๋ธ”์„ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

๋ชจ๋‹ˆํ„ฐ๋ง

์‹คํ–‰ ์ค‘์ธ Workflow ํ™•์ธ

๋กœ๊ทธ

๋‹ค์Œ ๋‹จ๊ณ„

@workflow ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ

Workflow ์ •์˜ํ•˜๊ธฐ

Step

Step์œผ๋กœ ์ž‘์—… ๋‚˜๋ˆ„๊ธฐ