Skip to content

Latest commit

Β 

History

History
51 lines (38 loc) Β· 3.46 KB

File metadata and controls

51 lines (38 loc) Β· 3.46 KB

✏️ Spring Batch

Spring Batch와 Spring Scheduler의 μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”? λ°°μΉ˜λŠ” λŒ€μš©λŸ‰μ˜ 데이터λ₯Ό μΌκ΄„μ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” μž‘μ—…μœΌλ‘œ, μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš© 없이 μ—¬λŸ¬ 개의 μž‘μ—…μ„ 미리 μ •ν•΄μ§„ μˆœμ„œμ— 따라 쀑단 없이 μ²˜λ¦¬ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

λ°˜λ©΄μ— μŠ€μΌ€μ€„λŸ¬λŠ” μΌμ •ν•œ μ‹œκ°„μ— νŠΉμ • λ‘œμ§μ„ 돌리기 μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

즉 μŠ€ν”„λ§ λ°°μΉ˜λŠ” 데이터 μ²˜λ¦¬μ— 쀑점을 두고 μŠ€μΌ€μ€„λŸ¬λŠ” μ‹œκ°„ 기반 μž‘μ—…μ— 쀑점을 두고 μžˆλ‹€λŠ” λͺ©μ μ— 차이가 μžˆμŠ΅λ‹ˆλ‹€.

Tasklet 방식과 Chunk 방식에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”. Tasklet 방식은 기본적으둜 ν•˜λ‚˜μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ λŒ€μ²΄λ‘œ λ‹¨μˆœν•˜κ±°λ‚˜ λ³΅μž‘ν•˜μ§€ μ•Šμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”λ° μ ν•©ν•˜κ³  전체 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 μ•„λ‹Œ 일뢀 λ°μ΄ν„°λ‚˜ 단일 μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ”λ° 주둜 μ‚¬μš©λ©λ‹ˆλ‹€.

Chunk 방식은 λŒ€μš©λŸ‰ 데이터λ₯Ό 효과적으둜 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λ©° 큰 데이터λ₯Ό 일련의 μž‘μ€ 데이터 묢음으둜 λ‚˜λˆ„κ³  각 Chunkλ₯Ό κ°œλ³„μ μΈ νŠΈλžœμž­μ…˜ λ²”μœ„ λ‚΄μ—μ„œ μ²˜λ¦¬ν•˜λŠ” 방식을 μ·¨ν•©λ‹ˆλ‹€.

λ§Œμ•½ 배치 작이 지연될 경우 λͺ¨λ‹ˆν„°λ§ ν•˜λŠ” 방법은 무엇이 μžˆμ„κΉŒμš”? λ¨Όμ € 배치 작의 둜그λ₯Ό μƒμ„Ένžˆ λΆ„μ„ν•˜μ—¬ μ–΄λ–€ λΆ€λΆ„μ—μ„œ μ‹œκ°„μ΄ μ†Œμš”λ˜λŠ”μ§€ ν™•μΈν•˜λŠ” 둜그 뢄석 방법이 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” 작이 μ‹€ν–‰λ˜λŠ” μŠ€μΌ€μ€„λŸ¬μ˜ 섀정을 ν™•μΈν•˜μ—¬ μ˜ˆμƒ μ‹œκ°„κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜κ±°λ‚˜ ν˜„μž¬ μ‹€ν–‰ 쀑인 작이 λ‹€λ₯Έ μž‘μ— μ˜μ‘΄ν•˜λŠ” 경우 의쑴 작이 λλ‚˜κΈΈ κΈ°λ‹€λ¦¬λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.
μŠ€ν”„λ§ λ°°μΉ˜λŠ” 무엇이며 μ–΄λ–€ κ²½μš°μ— ν™œμš©ν•˜λ©΄ μ’‹μ„κΉŒμš”? μŠ€ν”„λ§ λ°°μΉ˜λŠ” λŒ€μš©λŸ‰ 데이터λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ 기반 ν”„λ ˆμž„μ›Œν¬λ‘œ λ‹€λŸ‰μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•˜κ±°λ‚˜ 주기적이고 반볡적인 μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ꡬ독 μ„œλΉ„μŠ€λ‘œ 일정 μ‹œκ°„μ— κ΅¬λ…μžλ“€μ—κ²Œ 메일을 일괄 μ „μ†‘ν•˜λŠ” λ“±μ˜ μž‘μ—…μ— ν™―μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
배치 μž‘μ—…μ΄ 쀑간에 μ‹€νŒ¨ν•  경우 μ–΄λ–»κ²Œ μ²˜λ¦¬ν•˜λ‚˜μš”? μŠ€ν”„λ§ λ°°μΉ˜λŠ” 기본적으둜 chunk λ‹¨μœ„λ‘œ νŠΈλžœμž­μ…˜μ„ κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•  경우 이λ₯Ό μŠ€ν‚΅ν•˜κ³  λ‹€μŒ μž‘μ—…μœΌλ‘œ λ„˜μ–΄κ°€κ±°λ‚˜ μž¬μ‹œλ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μŠ€ν”„λ§ λ°°μΉ˜μ— μ–΄λ–»κ²Œ μŠ€μΌ€μ₯΄λ§μ„ μ μš©ν•  수 μžˆμ„κΉŒμš”? @Scheduled 을 μ‚¬μš©ν•˜λŠ” Spring Schedulerλ‚˜ Quartz Scheduler, λ˜λŠ” Crontab, Jenkins λ“±μ˜ μ™ΈλΆ€ μŠ€μΌ€μ€„λŸ¬μ™€ ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. @Scheduled μ–΄λ…Έν…Œμ΄μ…˜μ„ ν™œμš©ν•΄ μž‘μ„ 주기적으둜 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³