ํด๋กœ๋“œ ์ฝ”๋“œ์˜ Schedule ์—…๋ฐ์ดํŠธ ํ•ต์‹ฌ์€ โ€œํ•œ ๋ฒˆ ์‹œ์ผœ๋†“๊ณ  ์žŠ์–ด๋„ ๋˜๋Š” ์ž๋™ ๋ฐ˜๋ณตโ€์ž…๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ํฌ์ธํŠธ๋Š” ๊ธฐ๋Šฅ ์ž์ฒด๋ณด๋‹ค, ํŒ€ ๋ฃจํ‹ด์„ ์–ผ๋งˆ๋‚˜ ์•ˆ์ •์ ์œผ๋กœ ๊ตด๋ฆด ์ˆ˜ ์žˆ๋А๋ƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ •๋ฆฌ๋Š” ์˜์ƒ ๋‚ด์šฉ์— ๋”ํ•ด ๊ณต์‹ Scheduled Tasks ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์šด์˜ ์ˆœ์„œ๋งŒ ๋‚จ๊ฒจ์„œ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

flowchart LR
A[๋ฐ˜๋ณต ์—…๋ฌด ๋ฐœ๊ฒฌ] --> B[/loop ๋˜๋Š” ์ž์—ฐ์–ด ์˜ˆ์•ฝ]
B --> C[์ž๋™ ์‹คํ–‰ + ๊ฒฐ๊ณผ ํ™•์ธ]
C --> D[์ง€ํ‘œ ์ ๊ฒ€ ํ›„ ์œ ์ง€/์ค‘๋‹จ]

๐Ÿง  ์น ํŒ ์น˜ํŠธ์‹œํŠธ

  • /loop๋กœ ๋ฐ˜๋ณต ์ ๊ฒ€์„ ์ž๋™ํ™”ํ•œ๋‹ค.
  • ์ผ์ •์€ ๋กœ์ปฌ ์‹œ๊ฐ„๋Œ€๋กœ ํ•ด์„๋œ๋‹ค.
  • ์„ธ์…˜ ์ข…๋ฃŒ ์‹œ ์˜ˆ์•ฝ๋„ ์‚ฌ๋ผ์ง„๋‹ค.
  • ์žฅ๊ธฐ ์ž๋™ํ™”๋Š” Desktop/GitHub Actions๋กœ ๋„˜๊ธด๋‹ค.

์ด๋ฒˆ ์—…๋ฐ์ดํŠธ์—์„œ ์‹ค์ œ๋กœ ๋‹ฌ๋ผ์ง„ ์ 

๊ฐ€์žฅ ์ฒด๊ฐ๋˜๋Š” ๋ณ€ํ™”๋Š” ๋ฐ˜๋ณต ํ”„๋กฌํ”„ํŠธ ์‹คํ–‰์˜ ์ง„์ž…์žฅ๋ฒฝ์ด ๋‚ฎ์•„์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. /loop๋กœ ๊ฐ„๋‹จํžˆ ์ฃผ๊ธฐ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ๊ณ , ์ž์—ฐ์–ด๋กœ๋„ 1ํšŒ ์•Œ๋ฆผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

  • /loop 30m ๋ฐฐํฌ ์™„๋ฃŒ ์—ฌ๋ถ€ ํ™•์ธํ•˜๊ณ  ์š”์•ฝํ•ด์ค˜
  • 45๋ถ„ ๋’ค์— ํ…Œ์ŠคํŠธ ํ†ต๊ณผํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์ค˜

๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€ ํ•ต์‹ฌ ์‚ฌ์‹ค:

  • ๊ฐ„๊ฒฉ์„ ์•ˆ ์“ฐ๋ฉด /loop ๊ธฐ๋ณธ๊ฐ’์€ 10๋ถ„์ž…๋‹ˆ๋‹ค. (๋ฌธ์„œ)
  • ์˜ˆ์•ฝ์€ ํ˜„์žฌ ์„ธ์…˜ ๋ฒ”์œ„์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ์ข…๋ฃŒ ์‹œ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. (๋ฌธ์„œ)
  • ๊ฐ™์€ ์„ธ์…˜์—์„œ ์ตœ๋Œ€ 50๊ฐœ ์ž‘์—…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฌธ์„œ)

์‹ค๋ฌด ์ ์šฉ ์ˆœ์„œ (๋ˆ„๊ฐ€/๋ฌด์—‡์„/์–ด๋–ค ์ˆœ์„œ๋กœ)

1) ํŒ€ ๋ฆฌ๋“œ: ๋ฐ˜๋ณต ์ ๊ฒ€ 1๊ฐœ๋งŒ ๋จผ์ € ๊ณ ์ •

์ฒ˜์Œ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๊ฑธ๋ฉด ๊ด€๋ฆฌ๊ฐ€ ๊ผฌ์ž…๋‹ˆ๋‹ค. ํŒ€ ๋ฆฌ๋“œ๋Š” โ€œ๊ฐ€์žฅ ์ž์ฃผ ๋†“์น˜๋Š” 1๊ฐœโ€๋ถ€ํ„ฐ ์ž๋™ํ™”ํ•ด์•ผ ํšจ๊ณผ๊ฐ€ ํฝ๋‹ˆ๋‹ค.

์‹คํ–‰:

  1. ๋งค์ผ ๋†“์น˜๊ธฐ ์‰ฌ์šด ์ ๊ฒ€ 1๊ฐœ๋ฅผ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. (์˜ˆ: ๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ)
  2. /loop๋กœ 30~60๋ถ„ ์ฃผ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ•˜๋ฃจ ์šด์˜ ํ›„ ์žก์Œ(๋ถˆํ•„์š” ์•Œ๋ฆผ) ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด ์ฃผ๊ธฐ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋‹ˆ ์‚ฌ๋ก€(์„ฑ๊ณต):

  • Before: ๋ฐฐํฌ ์™„๋ฃŒ ํ™•์ธ์„ ์‚ฌ๋žŒ์ด ์ˆ˜๋™์œผ๋กœ ํ™•์ธ โ†’ ์•ผ๊ฐ„ ๋ˆ„๋ฝ ๋ฐœ์ƒ
  • After: /loop 30m ๋ฐฐํฌ ์™„๋ฃŒ ํ™•์ธ ์ ์šฉ โ†’ ์•„์นจ ์ฒซ ๋ณด๊ณ  ์‹œ๊ฐ„ ๋‹จ์ถ•, ๋ˆ„๋ฝ ๊ฐ์†Œ

2) ๊ฐœ๋ฐœ์ž: 1ํšŒ์„ฑ ๋ฆฌ๋งˆ์ธ๋”๋กœ ๋Š๊ธฐ๋Š” ํ๋ฆ„ ๋ฐฉ์ง€

๊ฐœ๋ฐœ์ž๋Š” ๋ฐ˜๋ณต ์ž‘์—…๋ณด๋‹ค โ€œ์ž ๊น ๋’ค ํ™•์ธโ€์ด ๋” ์ž์ฃผ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์—ฐ์–ด 1ํšŒ ์˜ˆ์•ฝ์ด ์ƒ๊ฐ๋ณด๋‹ค ์ƒ์‚ฐ์„ฑ์„ ๋งŽ์ด ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

์‹คํ–‰:

  1. ์žฅ์‹œ๊ฐ„ ์ž‘์—… ์‹œ์ž‘ ์งํ›„ ํ™•์ธ ์‹œ์ ์„ ๊ฐ™์ด ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.
  2. ์˜ˆ: in 45 minutes, check whether integration tests passed
  3. ์•Œ๋ฆผ์ด ์˜ค๋ฉด ์ฆ‰์‹œ ๊ฒฐ๊ณผ ๋ฐ˜์˜(์žฌ์‹œ๋„/๋กค๋ฐฑ/๋‹ค์Œ ๋‹จ๊ณ„)์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋‹ˆ ์‚ฌ๋ก€(์‹คํŒจโ†’๋ณต๊ตฌ):

  • Before: ํ…Œ์ŠคํŠธ ๋Œ๋ ค๋†“๊ณ  ๋‹ค๋ฅธ ์ผ ํ•˜๋‹ค ํ™•์ธ ํƒ€์ด๋ฐ์„ ๋†“์นจ
  • After: 45๋ถ„ ์˜ˆ์•ฝ ๊ณ ์ • โ†’ ์‹คํŒจ ๊ฐ์ง€ ์‹œ์ ์ด ์•ž๋‹น๊ฒจ์ ธ ์žฌ์ž‘์—… ์‹œ๊ฐ„ ์ ˆ๊ฐ

3) ์šด์˜ ๋‹ด๋‹น: ์ฃผ 1ํšŒ ์˜ˆ์•ฝ ์ •๋ฆฌ ๋ฃจํ‹ด

์˜ˆ์•ฝ์ด ๋Š˜์–ด๋‚˜๋ฉด ์˜ค๋ž˜๋œ task๊ฐ€ ํŒ€ ์žก์Œ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์šด์˜ ๋‹ด๋‹น์ด ์ฃผ 1ํšŒ ์ •๋ฆฌ ๊ธฐ์ค€์„ ๊ฐ€์ ธ๊ฐ€๋ฉด ์•ˆ์ •์„ฑ์ด ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

์‹คํ–‰:

  1. what scheduled tasks do I have?๋กœ ๋ชฉ๋ก ํ™•์ธ
  2. ๋ชฉ์ ์ด ๋๋‚œ ํ•ญ๋ชฉ์€ ์ฆ‰์‹œ ์ทจ์†Œ
  3. ๋งค์ฃผ ๊ธˆ์š”์ผ ์ •๋ฆฌ ๋ฃจํ‹ด์œผ๋กœ ๊ณ ์ •

์ฐธ๊ณ : ์ž‘์—… ์ทจ์†Œ/์กฐํšŒ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ CronList, CronDelete๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (๋ฌธ์„œ)

๋†“์น˜๊ธฐ ์‰ฌ์šด ์ œํ•œ ์‚ฌํ•ญ (์ค‘์š”)

์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„๋งŒ ์ถ”๋ ธ์Šต๋‹ˆ๋‹ค.

  • ์„ธ์…˜ ์ข…์†์„ฑ: Claude Code๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์˜ˆ์•ฝ๋„ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ์‹œ๊ฐ„๋Œ€ ๊ธฐ์ค€: 0 9 * * *๋Š” UTC๊ฐ€ ์•„๋‹ˆ๋ผ ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ๋กœ์ปฌ ์˜ค์ „ 9์‹œ์ž…๋‹ˆ๋‹ค.
  • ์ง€ํ„ฐ(jitter): ์ •์‹œ ์‹คํ–‰์ด์–ด๋„ ์•ฝ๊ฐ„ ๋Šฆ๊ฑฐ๋‚˜(๋ฐ˜๋ณต), ์ผ๋ถ€ 1ํšŒ ์˜ˆ์•ฝ์€ ์†Œํญ ๋‹น๊ฒจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต ์ž‘์—… ๋งŒ๋ฃŒ: ๋ฐ˜๋ณต task๋Š” ์ƒ์„ฑ ํ›„ 3์ผ ๋’ค ์ž๋™ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์žฅ๊ธฐยท์ •์‹œ ์ž๋™ํ™”๊ฐ€ ๋ชฉํ‘œ๋ผ๋ฉด Claude Code ์„ธ์…˜ ์˜ˆ์•ฝ๋ณด๋‹ค Desktop scheduled tasks ๋˜๋Š” GitHub Actions schedule์„ ์šฐ์„  ๊ฒ€ํ† ํ•˜๋Š” ํŽธ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์จ๋จน๋Š” ์‹œ์ž‘ ํ…œํ”Œ๋ฆฟ

/loop 30m check if deployment is complete and summarize blockers
/loop check the build every 2 hours
remind me at 3pm to push the release branch

์˜ค๋Š˜ ๋ฐ”๋กœ ์‹คํ–‰ ์ฒดํฌ

  • ์šฐ๋ฆฌ ํŒ€์—์„œ ๋ฐ˜๋ณต ๋ˆ„๋ฝ์ด ์žฆ์€ ์ ๊ฒ€ 1๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค.
  • /loop๋กœ ํ•˜๋ฃจ๋งŒ ํ…Œ์ŠคํŠธ ์šด์˜ํ•œ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ โ€œ๋ˆ„๋ฝ ๊ฐ์†Œ/์‘๋‹ต ์†๋„/์žก์Œโ€ 3๊ฐ€์ง€๋กœ ํ‰๊ฐ€ํ•œ๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ

์˜์ƒ ๋ฉ”ํƒ€

AI ์ƒ์„ฑ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ์„ ๊ตฌ์„ฑํ–ˆ๊ณ , ์›์˜์ƒ ๋ฐœํ™”์™€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ต์ฐจ ํ™•์ธํ•ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.