μƒˆμ†Œμ‹

πŸ“ŒDevelop/πŸƒSpring

Spring Batch

  • -

 

 

Spring Batch

μΌκ΄„μ²˜λ¦¬λ₯Ό 톡해 μ—¬λŸ¬ 개의 μž‘μ—…μ„ 미리 정해진 μˆœμ„œμ— 따라 쀑단 없이 μ²˜λ¦¬ν•˜λŠ” 것

 

γ€€Spring Batch 의 5가지 νŠΉμ§•

1. λŒ€μš©λŸ‰ 처리: λŒ€λŸ‰μ˜ 데이터λ₯Ό κ°€μ Έμ˜€κ±°λ‚˜, μ „λ‹¬ν•˜κ±°λ‚˜, κ³„μ‚°ν•˜λŠ” λ“±μ˜ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

2. 견고성: 잘λͺ»λœ 데이터λ₯Ό 좩돌/쀑단 없이 μ²˜λ¦¬ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

3. μžλ™ν™”: μ‚¬μš©μž κ°œμž…μ—†μ΄ μ‹€ν–‰λ˜μ–΄μ•Ό ν•œλ‹€.

4. μ‹ λ’°μ„±: 무엇이 잘λͺ»λ˜μ—ˆλŠ”지λ₯Ό 좔적할 수 μžˆμ–΄μ•Ό ν•œλ‹€. (λ‘œκΉ…, μ•Œλ¦Ό)

5. μ„±λŠ₯: μ§€μ •ν•œ μ‹œκ°„ μ•ˆμ— 처리λ₯Ό μ™„λ£Œν•˜κ±°λ‚˜, λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ„ λ°©ν•΄ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

Spring Scheduler

νŠΉμ •ν•œ μ‹œκ°„μ— λ“±λ‘ν•œ μž‘μ—…μ„ μžλ™μœΌλ‘œ μ‹€ν–‰μ‹œν‚€λŠ” 것

γ€€Spring Scheduler의 3가지 νŠΉμ§•

1. Spring Framework의 κΈ°λ³Έ κΈ°λŠ₯으둜 μ˜μ‘΄μ„±μ΄ λΆˆν•„μš” ν•˜λ‹€.

2. μ ‘κ·Όμ„±: κ°„λ‹¨ν•œ μ–΄λ…Έν…Œμ΄μ…˜ μ„ μ–Έλ§ŒμœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. (@Component, @Scheduled)

3. μ‹±κΈ€ μ“°λ ˆλ“œ: μŠ€μΌ€μ€„λŸ¬λŠ” ν•œ 개의 μ“°λ ˆλ“œλ‘œ λ™μž‘ν•œλ‹€.

μ–Έμ œ μ“ΈκΉŒ?

μ •μ‚°μ΄λ‚˜ 데이터 λ°±μ—… λ“± 같이 λŒ€λŸ‰μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

개인적으둜 Spring Scheduler λ₯Ό μ΄μš©ν•΄ 이미 정해진 λ°°μΉ˜λ“€μ— λŒ€ν•œ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜λŠ” λ°°μΉ˜λ‘œλ„ μ‚¬μš©ν•˜κ³  μžˆλŠ”λ°,

Single Thread 둜 λ™μ‹œμ„±μ΄λ‚˜ 뢄산에 λŒ€ν•œ 걱정없이 κ°€λ³κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” 이점이 μžˆλ‹€.

 

μ‚¬μš©μžμ™€μ˜ μΈν„°λž™μ…˜μ΄ μ—†κΈ° λ•Œλ¬Έμ— μ‚¬μš©μž μ€‘μ‹¬μ˜ μ—λŸ¬ 처리λ₯Ό κ³ λ €ν•˜μ§€ μ•Šμ•„λ„ λ˜μ§€λ§Œ λ‘œκ·Έμ™€ λ³„λ„μ˜ μ•Œλ¦Όμ„ μ„€μ •ν•΄μ„œ λͺ¨λ‹ˆν„°λ§μ„ 진행해야 ν•œλ‹€.

μ „λž΅

Batch ν•˜λ‚˜ κ°œλ°œν•˜λŠ”λ° μ „λž΅κΉŒμ§€ ν•„μš”ν• κΉŒ?

닡은 "YES"

 

λ°°μΉ˜λŠ” μ½”μ–΄ 데이터λ₯Ό 많이 닀루기 λ•Œλ¬Έμ— λ°μ΄ν„°μ˜ μ•ˆμ •μ„±μ΄ 보μž₯λ˜μ–΄μ•Ό ν•˜λ©°, μ˜ˆμƒ 배치 μ‹œκ°„μ˜ 확인과 μ‹œμŠ€ν…œμ˜ λ³Όλ₯¨μ„ 확인할 수 μžˆμ–΄μ•Ό ν•œλ‹€. 또 μ‹œμŠ€ν…œκ³Όμ˜ λ™μ‹œμ„± 검토와 λͺ¨λ‹ˆν„°λ§μ΄ ν•„μˆ˜μ μœΌλ‘œ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

 

λ‹€μŒμœΌλ‘œ 운용과 섀계에 λŒ€ν•œ 기초 μ „λž΅μ„ μ„Έμ› μœΌλ‹ˆ μ„ΈλΆ€ λΆ„λ₯˜λ₯Ό μ§„ν–‰ν•œλ‹€.

μ²˜λ¦¬ν•˜κ³ μž ν•˜λŠ” 배치의 μž…λ ₯을 κ΅¬λΆ„ν•˜μ—¬μ•Ό ν•œλ‹€.

 

ν˜„μ—…μ—μ„œ μ‚¬μš©ν•œ λ‚΄μš©μ€ μ•„λž˜μ™€ 같이 크게 3κ°€μ§€μ˜ ꡬ뢄이 λ‚˜μ˜¨λ‹€.

1. λ°μ΄ν„°λ² μ΄μŠ€ //μ˜ˆμ‹œ) λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 정산을 진행할 λͺ©λ‘μ„ λ‚˜μ—΄ν•΄ 배치λ₯Ό μ§„ν–‰ν•œλ‹€.

2. 파일 //μ˜ˆμ‹œ) 외뢀연동을 톡해 전달받은 κ²°κ³Ό νŒŒμΌμ΄λ‚˜ μ§μ „μ˜ 배치λ₯Ό 톡해 μ™„λ£Œλœ 파일둜 배치λ₯Ό μ§„ν–‰ν•œλ‹€.

3. λ©”μ‹œμ§€ //μ˜ˆμ‹œ) Queue κ΅¬μ‘°μ—μ„œ λŒ€κΈ°μ—΄μ— μžˆλŠ” λ©”μ‹œμ§€μ— λŒ€ν•΄ 배치λ₯Ό μ§„ν–‰ν•œλ‹€.

 

μ£Όμ˜ν•΄μ•Ό ν•  7가지

1. ν™•μž₯μ„± - μ–Έμ œλ“  쑰건이 좔가될 수 μžˆμŒμ— λŒ€λΉ„ν•΄μ•Ό ν•œλ‹€.

2. λ‹¨μœ„ ν…ŒμŠ€νŠΈ - μ •ν™•ν•œ 디버깅을 μœ„ν•΄ λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

3. 직관성 - ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ§Œ μ„ μ–Έν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

4. μž¬μ‚¬μš©μ„± - ν•„μˆ˜μ μΈ κΈ°λŠ₯을 μž¬μ‚¬μš© κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

5. μ‹œκ°„μ œμ•½ - μ •ν™•ν•œ μΈ‘μ • μ•„λž˜ κ³„νšλœ μ‹œκ°„ λ‚΄ 진행될 수 μžˆλ„λ‘ ν•΄μ•Ό ν•œλ‹€.

6. 독립적 - λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ 관계없이 ν•˜λ‚˜μ˜ Job 으둜써 λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•œλ‹€.

7. μƒνƒœμ„± - λ°°μΉ˜κ°€ μ§„ν–‰λ˜λ©° ν˜„μž¬ μƒνƒœλ₯Ό 남겨야 ν•œλ‹€. (BatchStatus - STARTED, FAILED, COMPLETED)

 

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.