Skip to content

Latest commit

Β 

History

History
69 lines (46 loc) Β· 2.76 KB

File metadata and controls

69 lines (46 loc) Β· 2.76 KB

Spring Batch

Batch Applicationμ΄λž€ μ»΄ν“¨ν„°μ—μ„œ μ‚¬λžŒκ³Όμ˜ μƒν˜Έ μž‘μš© 없이 μ΄μ–΄μ§€λŠ” ν”„λ‘œκ·Έλž¨(μž‘μ—…)λ“€μ˜ μ‹€ν–‰.

일반 μ–΄ν”Œλ ˆμΌ€μ΄μ…˜μ€ μ‚¬λžŒκ³Όμ˜ μƒν˜Έμž‘μš© (μΈν„°λ ‰μ…˜)을 톡해 응닡과 μš”μ²­μ΄ μžˆμ§€λ§Œ λ°°μΉ˜μ„± μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν•œλ²ˆ μš”μ²­ν•˜λ©΄ μ•Œμ•„μ„œ μ²˜λ¦¬λ˜λŠ” ꡬ쑰λ₯Ό κ°–λŠ”λ‹€.

Batch

배치 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©ν•΄μ•Ό ν• λ•Œ

  • 일정 주기둜 μ‹€ν–‰λ˜μ–΄μ•Ό ν• λ•Œ
  • μ‹€μ‹œκ°„μ΄ μ²˜λ¦¬κ°€ μ–΄λ €μš΄ λŒ€λŸ‰μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•΄μ•Ό ν• λ•Œ

λΉ„μ§€λ‹ˆμŠ€ 둜직만 μ‹ κ²½μ“°λ©΄ λ˜κ²Œλ” λŒ€μš©λŸ‰ μ²˜λ¦¬μ— λŒ€ν•œ λ‹€λ₯Έκ²ƒλ“€μ΄ λͺ¨λ‘ ν”„λ ˆμž„μ›Œν¬μ— 좔상화 λ˜μ–΄μžˆλ‹€. λͺ¨λ“  데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μŒ“μ§€μ•ŠλŠ” 쑰회 방식이 κΈ°λ³Έ.

Quartz Job Scheduler둜써 μŠ€μΌ€μ₯΄λ§ ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. ex) λ§€μ£Ό ν™”μš”μΌ 12μ‹œμ— μ‹œμž‘ λ°°μΉ˜μ™€λŠ” λ‹€λ₯΄κ²Œ κ·Έλƒ₯ 일정 주기둜 μ‹€ν–‰λ§Œ μ‹œμΌœμ€€λ‹€.,

Job & Step & Tasklet

job_step_tasklet

  • Step : Job μ•ˆμ—μ„œ ν”„λ‘œμ„Έμ„œμ²˜λŸΌ λŒμ•„κ°€λŠ” λ‹¨μœ„

JobParameter

μ™ΈλΆ€μ—μ„œ νŒŒλΌλ―Έν„°λ₯Ό μ£Όμž…λ°›μ•„ 배치 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ”κ²ƒ

@Value('#{jobParameter[νŒŒλΌλ©”ν„°λͺ…]}') νƒ€μž… 이름

Job -> Step μ‹€ν–‰μ‹œ Step에 @JobScopeκ°€ μžˆμ–΄μ•Ό ν•˜κ³  Step -> Tasklet μ‹€ν–‰μ‹œμ— Tasklet에 @StepScope

@JobParameter, @StepParameterλŠ” μ‹€ν–‰λ˜λŠ” μ‹œμ μ— μƒμ„±μ΄λ˜μ–΄ @Bean이 Lazy ν•˜κ²Œ μƒμ„±λœλ‹€. 이 μ„±μ§ˆμ„ μ΄μš©ν•΄μ„œ reader processor writerλ₯Ό λ™μ μœΌλ‘œ 생성 κ°€λŠ₯ν•˜λ‹€.

Quartz

quarts

Quartz λŠ” Database 기반으둜 Scheduler Key 와 Trigger Key λ₯Ό 톡해 Schedule 을 Clustering ν•œλ‹€ 즉, Database λ₯Ό 기반으둜 λͺ¨λ“  Schedule에 λŒ€ν•œ μ œμ–΄κ°€ κ°€λŠ₯

  • Scheduler : μŠ€μΌ€μ€„λŸ¬μ™€ μƒν˜Έ μž‘μš©ν•˜κΈ°μœ„ν•œ μ£Όμš” API.
  • Trigger : μ£Όμ–΄μ§„ μž‘μ—…μ΄ 싀행될 일정을 μ •μ˜ν•˜λŠ” ꡬ성 μš”μ†Œ
  • JobDetail : μž‘μ—…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μ •μ˜ν•˜λŠ” 데 μ‚¬μš©

Quartz + Spring Batch

quarts2 Job -> Step -> Reader -> Process -> Writer

μŠ€μΌ€μ₯΄λ§μ— μ΅œμ ν™” λ˜μ–΄μžˆλŠ” Quartz와 λŒ€μš©λŸ‰ λ°°μΉ˜μ„± μž‘μ—…μ— μ΅œμ ν™” λ˜μ–΄μžˆλŠ” Spring Batch μ„œλ‘œμ˜ μž₯점을 잘 μ„žμ–΄μ„œ μ‚¬μš©ν•˜λ©΄ 쒋은 ꡬ쑰가 될 수 있음

quarts-batch

Quartz vs Jenkins

quarts_vs_jenkins

Quartz μž₯점

Database λ₯Ό 기반으둜 Schedule μΈμŠ€ν„΄μŠ€λ“€ κ°„μ˜ Clustering 이 κ°€λŠ₯ Application 이 κ΅¬λ™λœ μƒνƒœλ₯Ό μœ μ§€ν•˜κΈ° λ•Œλ¬Έμ—, 비ꡐ적 μ •ν™•ν•œ μ‹œκ°„μ— Job μˆ˜ν–‰μ΄ κ°€λŠ₯

Quartz 단점

UI Admin μ œκ³΅λ˜μ§€ μ•ŠμŒ μ•ŒλžŒ κΈ°λŠ₯, Schedule Control κΈ°λŠ₯ 등을 직접 κ΅¬ν˜„ν•˜κ±°λ‚˜, μ•ˆμ¨μ•Ό 함