์ƒˆ์†Œ์‹

Back-End/Java

[Java] ์Šค์ผ€์ค„๋Ÿฌ ๋ฐฐ์น˜

  • -

 

 

[Java] ์Šค์ผ€์ค„๋Ÿฌ ๋ฐฐ์น˜

 

 

ํฌ๋ก  / ์Šค์ผ€์ค„๋Ÿฌ (๋ฐฐ์น˜) ์‹œ๋ฆฌ์ฆˆ

 


#1. ์žก ์Šค์ผ€์ค„๋Ÿฌ? ํฌ๋ก  ํ‘œํ˜„์‹?

์‹ค๋ฌด์—์„œ๋Š” ๋ฐฐ์น˜, ํฌ๋ก , ์Šค์ผ€์ค„๋Ÿฌ, ์˜ˆ์•ฝ์ž‘์—…, ์žก ๋“ฑ์œผ๋กœ ๋ถ€๋ฅด๋Š”๋ฐ ์ผ๋‹จ ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์Šค์ผ€์ค„๋Ÿฌ (Scheduler), ์žก ์Šค์ผ€์ค„๋Ÿฌ, ์˜ˆ์•ฝ์ž‘์—… :

  • ์ƒˆ๋ฒฝ 3์‹œ์— ์—…๋ฐ์ดํŠธ ๋“ฑ๊ณผ ๊ฐ™์€ ํŠน์ • ์‹œ๊ฐ„/์ฃผ๊ธฐ์— ์–ด๋–ค ์ผ์„ ํ•˜๋Š” ํ”ํžˆ ์˜ˆ์•ฝ(๋ฐ˜๋ณต/๋น„๋ฐ˜๋ณต) ํ•˜๋Š” ์ž‘์—…(Job)๋“ค์„ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์ฃผ์ฒด์ž…๋‹ˆ๋‹ค.

 

ํฌ๋ก  (Cron) :

  • https://en.wikipedia.org/wiki/Cron
  • ๋ณธ๋ž˜๋Š” ์˜๋ฏธ๋กœ๋Š” ์œ ๋‹‰์Šค๊ณ„์—ด์˜ ์žก์Šค์ผ€์ค„๋Ÿฌ ์‹œ์Šคํ…œ์ด์ง€๋งŒ, ํ˜„์žฌ๋Š” ๊ทธ๋ƒฅ ์žก ์Šค์ผ€์ค„๋Ÿฌ์™€ ๋™์ผํ•œ ์˜๋ฏธ์ฒ˜๋Ÿผ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

 

๋ฐฐ์น˜ (Batch) :

  • ์ผ๊ด„์ฒ˜๋ฆฌ๋กœ ๋Œ€๋Ÿ‰์˜ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐ์น˜๊ฐ€ ์Šค์ผ€์ค„๋ง ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—…์ข…์ด๋‚˜ ํšŒ์‚ฌ์— ๋”ฐ๋ผ์„  ๊ทธ๋ƒฅ ๋ฐฐ์น˜๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋•Œ๋ฌธ์— ๋ฐฐ์น˜๋Š” ๋ฐ˜๋“œ์‹œ ์Šค์ผ€์ค„๋ง ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ผ๊ด„์ฒ˜๋ฆฌ ์ฆ‰, ์˜ˆ์•ฝ์ž‘์—…์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ์‰˜์Šคํฌ๋ฆฝํŠธ๋‚˜ SQLํ”„๋กœ์‹œ์ €๋„ ๋ฐฐ์น˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฆ‰, ์—ฌ๊ธฐ์„œ๋Š” ๋ฐฐ์น˜๋ผ๋Š” ํ‘œํ˜„๋ณด๋‹จ ์žก์ด๋ผ๋Š” ํ‘œํ˜„์„ ์“ฐ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์žก (Job) :

  • ํ”ํžˆ ์Šค์ผ€์ค„๋ง์—์„œ ๋ฐฐ์น˜๋ผ๊ณ  ๋ถ€๋ฅด๋ฉด ์žก์ž…๋‹ˆ๋‹ค.
  • ์ข€ ๋” ์ •ํ™•ํ•œ ์˜๋ฏธ๋กœ ์Šค์ผ€์ค„๋ง์ด ๋  ๋ฐฐ์น˜๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ํ•ด์•ผํ• ์ผ๋กœ ๋‹จ๊ณ„๋ณ„ ์žก์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํฌ๋ก  ํ‘œํ˜„์‹ (Cron expression) :

  • ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์Šค์ผ€์ค„๋Ÿฌ๊ณ„์—ด์˜ ํ‘œํ˜„์‹(expression) ์ž…๋‹ˆ๋‹ค.
  • ์ •๊ทœํ‘œํ˜„์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ตฌํ˜„์ฒด์— ๋”ฐ๋ผ์„œ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๊ธฐ์„œ๋Š” ์Šคํ”„๋ง ์Šค์ผ€์ค„๋Ÿฌ / ์ฟผ์ธ  ๊ธฐ๋ฐ˜์˜ ํฌ๋ก  ํ‘œํ˜„์‹ ์ฃผ๋กœ ๋‹ค๋ฃจ๋„๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 


#2. ํฌ๋ก  ํ‘œํ˜„์‹

 

๋ฆฌ๋ˆ…์Šค / ์œ ๋‹‰์Šค ํฌ๋ก  ํ‘œํ˜„์‹

๋ถ„์‹œ์ผ์›”์š”์ผ

0-59 0-23 1-31 / ? 1-12 0-6 / ?

 

 

์Šคํ”„๋ง ์Šค์ผ€์ค„๋Ÿฌ / ์ฟผ์ธ  ํฌ๋ก  ํ‘œํ˜„์‹

์ดˆ๋ถ„์‹œ์ผ์›”์š”์ผ์—ฐ๋„

0-59 0-59 0-23 1-31 / ? 1-12 0-6 / ? ์ƒ๋žต๊ฐ€๋Šฅ

 

 

์ฃผ์˜์ 

  • ์›”์€ 0-11์ด ์•„๋‹Œ 1-12 ์ž…๋‹ˆ๋‹ค.
  • ์š”์ผ์€ 0:์ผ์š”์ผ ~ 6:ํ† ์š”์ผ ์ด์ง€๋งŒ 7๋„ ์ผ์š”์ผ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ผ์š”์ผ์„ ํ•œ์ชฝ์œผ๋กœ ์“ฐ๋Š”๊ฑธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

 

 


#3. ํฌ๋ก  ํ‘œํ˜„์‹ ์˜ˆ์ œ

 

๊ธฐ๋ณธ์ ์ธ ํ‘œํ˜„์‹์€ ๊ฐ™์œผ๋‚˜ ์•„๋ž˜๋ถ€ํ„ฐ๋Š” ์Šคํ”„๋ง ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๋ช…ํ•˜๋„๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด 2016๋…„ 11์›” 20์ผ ์˜คํ›„ 2์‹œ(14์‹œ) 10๋ถ„ 36์ดˆ์— ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”๊ธฐ๋ฐ˜ yyyy-MM-dd HH:mm:ss ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 2016-11-20 14:10:36 ์ž…๋‹ˆ๋‹ค. ํฌ๋ก  ํ‘œํ˜„์‹์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

36 10 14 20 11 ? 2016

์—ฌ๊ธฐ์„œ ๋ณด์ด๋Š” ? ๋Š” ์„ค์ •๊ฐ’ ์—†์Œ์œผ๋กœ ์˜ค์ง ์ผ[day-of-month:1-31], ์š”์ผ[day-of-week:0-6]์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ์‘์šฉํ•ด์„œ ๋งค๋…„ 11์›” 20์ผ ์˜คํ›„ 2์‹œ(14์‹œ) 10๋ถ„ 36์ดˆ ์— ์‹คํ–‰ํ•˜๋ ค๊ณ ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

36 10 14 20 11 ? *

ํ˜น์€

36 10 14 20 11 ?

์Šคํ”„๋ง ์Šค์ผ€์ค„๋Ÿฌ์™€ ์ฟผ์ธ ์—์„œ๋Š” ์—ฐ๋„๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ *๋Š” ๋ชจ๋“ ์กฐ๊ฑด ์ฆ‰, ์™€์ผ๋“œ์นด๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋งค์ผ ์˜คํ›„ 2์‹œ(14์‹œ) 10๋ถ„ 36์ดˆ ์— ์‹คํ–‰์‹œํ‚ค๋Š” ์‹์„ ์จ๋ณด๋„๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

36 10 14 * * ?

๊ทธ๋Ÿผ ๋‹ค์‹œ ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ ์ •๊ฐ์— ์‹คํ–‰์‹œํ‚ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผํ• ๊นŒ์š”?

* * 3 * * ?

์œ„์ฒ˜๋Ÿผ ์„ค์ •ํ•˜๋ฉด ์ƒˆ๋ฒฝ 3์‹œ๋ถ€ํ„ฐ ์ƒˆ๋ฒฝ 4์‹œ ์ „๊นŒ์ง€ 1์ดˆ๋งˆ๋‹ค ์‹คํ–‰๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒ๋ฉด ๋ชจ๋“ ์ดˆ ๋ชจ๋“ ๋ถ„ 3์‹œ ๋ชจ๋“ ์ผ... ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

0 0 3 * * ?

๊ทธ๋ž˜์„œ ์œ„์ฒ˜๋Ÿผ ์„ค์ •ํ•ด์•ผ ์ƒˆ๋ฒฝ 3์‹œ 0๋ถ„ 0์ดˆ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ƒˆ๋ฒฝ 3์‹œ๋ถ€ํ„ฐ 4์‹œ์ „๊นŒ์ง€ 10๋ถ„ ๋ถ€ํ„ฐ 5๋ถ„๋งˆ๋‹ค ๋„๋Š” ํฌ๋ก ์„ ์„ค์ •ํ•ด๋ณด๋„๋กํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

0 10/5 3 * * ? [์‹œ์ž‘์‹œ๊ฐ„]/[๋‹จ์œ„]

์ด๋ ‡๊ฒŒ 3์‹œ 10๋ถ„ 15๋ถ„ 20๋ถ„ 25๋ถ„ 30๋ถ„ 45๋ถ„ 50๋ถ„ 55๋ถ„ ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฐ๋‹จ์œ„ ๋ฐฐ์น˜๋Š” ์ •๊ฐ๋ถ€ํ„ฐ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณดํ†ต์€ 0/๋‹จ์œ„๋ฅผ ์”๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ 10๋ถ„๋งˆ๋‹ค ๋„๋Š” ํฌ๋ก ์„ ์„ค์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

0 0/10 * * * ?

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด [0๋ถ„ 0์ดˆ], [10๋ถ„ 0์ดˆ], [20๋ถ„ 0์ดˆ], [30๋ถ„ 0์ดˆ], [40๋ถ„ 0์ดˆ], [50๋ถ„ 0์ดˆ] ์ด๋ ‡๊ฒŒ ๋Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฐ–์—๋„ ์•„๋ž˜์™€ ๊ฐ™์€ ํ‘œํ˜„์‹๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


#4. ํฌ๋ก  ํ‘œํ˜„์‹ ์˜ต์…˜

 

? : ์กฐ๊ฑด์—†์Œ [์ผ, ์š”์ผ ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ]
* : ๋ชจ๋“  ์กฐ๊ฑด์—์„œ ์ฐธ
์‹œ์ž‘์‹œ๊ฐ„/๋‹จ์œ„ (์˜ˆ 0/5) : ํ•ด๋‹น ์‹œ์ž‘์‹œ๊ฐ„๋ถ€ํ„ฐ ํ•ด๋‹น ๋‹จ์œ„๋•Œ ์ฐธ
์‹œ์ž‘๋ฒ”์œ„-๋๋ฒ”์œ„ (์˜ˆ 3-5) : ์˜ˆ์ œ(3-5)๋Š” 3์—์„œ 5๊นŒ์ง€ (3, 4, 5) ์กฐ๊ฑด์ผ๋•Œ ์ฐธ.
x,y,z... (์˜ˆ 1,3,5) : ์˜ˆ์ œ(1,3,5) 1,3,5 ์ผ๋•Œ๋งŒ ์ฐธ.
L : [์ผ, ์š”์ผ ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ]
- ์ผ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด : ์˜ˆ(L) ๋งˆ์ง€๋ง‰ ๋‚ ์งœ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 1์›”์ด๋ผ๋ฉด 31์ผ 2์›”์ด๋ผ๋ฉด ์œค๋…„์— ๋”ฐ๋ผ 28ํ˜น์€ 29์ผ 4์›”์ด๋ผ๋ฉด 30์ผ์— ์ฐธ.
- ์š”์ผ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด : ์˜ˆ(6L) 6์€(ํ† ์š”์ผ) ๋งˆ์ง€๋ง‰ ํ† ์š”์ผ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์ฃผ๊ฐ€ ํ† ์š”์ผ์ด ์—†๋‹ค๋ฉด ๊ทธ์ „์ฃผ ํ† ์š”์ผ์— ์ฐธ.
W : [์ผ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ]
- ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ‰์ผ(์›”~ํ† )๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
- 15W ๋ผ๊ณ  ์„ค์ •ํ–ˆ๋‹ค๋ฉด 15์ผ์ด ์›”~๊ธˆ ๋ฒ”์œ„๋ผ๋ฉด ํ•ด๋‹น ๋‚ ์งœ์—์„œ ์ฐธ.
- 15W 15์ผ์ด ํ† ์š”์ผ์ด๋ผ๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ธˆ์š”์ผ์ธ 14์ผ์— ์ฐธ.
- 15W 15์ผ์ด ์ผ์š”์ผ์ด๋ผ๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์›”์š”์ผ์ธ 16์ผ์— ์ฐธ.
# : [์š”์ผ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ]
- ์˜ˆ๋ฅผ๋“ค์–ด 3#2 ๋ผ๊ณ  ์ป๋‹ค๋ฉด (์ˆ˜์š”์ผ#2๋ฒˆ์งธ์ฃผ)๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
- ์ฆ‰ 2๋ฒˆ์งธ์ฃผ์˜ ์ˆ˜์š”์ผ์— ์ฐธ์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ‘