νμ¬μμ Spring Batch νλ‘μ νΈλ₯Ό μ¬μ©νκ³ μμ΅λλ€. λ€λ§, λμ©λμ λ°μ΄ν° μ²λ¦¬κ° μλ, λ¨μ 1νμ± μλΉμ€λ₯Ό μ€ννκΈ° μν΄ λ κ±°μ νλ‘μ νΈλ₯Ό Spring Batch νλ‘μ νΈλ‘ μ‘°κΈμ© μ΄κ΄νκ³ μλλ°μ, κΈ°μ‘΄μ μμ±λ μ½λλ₯Ό μ°Έκ³ νμ¬ νμν λΆλΆλ§ νμ ν ν μ½λλ₯Ό μμ±νλ€λ³΄λ Spring Batchμ μ¬μμ΄λ κ°λ , μ μ©ν κΈ°λ₯(skip, retry, chunk, listener λ±λ±)λ€μ λν΄ μμΈν μμ§ λͺ»νμ± κ°λ°νκ³ μλ κ² κ°μ΅λλ€.
λ°λΌμ Spring Batch νλ‘μ νΈμ λ°°κ²½λΆν° κ°λ , μ©μ΄, λ€μν κΈ°λ₯ λ±λ±μ λν΄ μ 리νμ¬ νμ΅νκ³ μ ν©λλ€.
ν΄λΉ ν¬μ€ν μ λͺ©ν
- Spring Batch μκ°
- Spring Batch λ°°κ²½
- Spring Batch μν€ν μ²
- Spring Batch ꡬμ±λ
Spring Batch μκ°
- Spring Batchλ μν°νλΌμ΄μ¦ μμ€ν μ μΌμμ μΈ μ΄μμ νμμ μΈ κ°λ ₯ν Batch Applicationμ κ°λ°μ κ°λ₯νκ² νλλ‘ μ€κ³λ κ²½λκΈ ν¬κ΄μ μΈ λ°°μΉ νλ μμν¬
- Spring Batchλ λ‘κΉ /μΆμ , νΈλμμ κ΄λ¦¬, Job μ²λ¦¬ μ λ΅, Job Restart, Skip, Retry, 리μμ€ κ΄λ¦¬ λ± λμ©λ λ°μ΄ν° μ²λ¦¬μ νμμ μΈ μ¬μ¬μ© κ°λ₯ν κΈ°λ₯μ μ 곡
μν°νλΌμ΄μ¦ λλ©μΈμμ λΉμ¦λμ€ μ΄μμ μννκΈ° μν λλ μ²λ¦¬λ λ€μκ³Ό κ°μ μ¬νλ€μ΄ μμ΅λλ€.
- μ¬μ©μμ μνΈ μμ© μμ΄ κ°μ₯ ν¨μ¨μ μΌλ‘ μ²λ¦¬λλ λλ μ 보μ μλνλ 볡μ‘ν μ²λ¦¬ - μκ° κΈ°λ°μ μ΄λ²€νΈ(μλ§ κ³μ°, ν΅μ§ λ±)
- λ§€μ° λ§μ λ°μ΄ν° μ μμ λ°λ³΅μ μΌλ‘ μ²λ¦¬λλ 볡μ‘ν λΉμ¦λμ€ κ·μΉμ μ£ΌκΈ°μ μΈ μ΄ν리μΌμ΄μ
- Batch μ²λ¦¬λ μν°νλΌμ΄μ¦ νκ²½μμ λ§€μΌ μμμ΅ κ±΄μ νΈλμμ μ μ²λ¦¬νλ λ° μ¬μ©
λ°°κ²½
- λ€λ₯Έ κΈ°μ μ λΉν΄ Java κΈ°λ° νμ€ λ°°μΉ κΈ°μ μ λΆμ¬
- Batch μ²λ¦¬μμ μꡬνλ μ¬μ¬μ© κ°λ₯ν μλ° κΈ°λ°μ λ°°μΉ μν€ν μ² νμ€μ΄ νμν¨
- SpringSource(νμ¬ Pivotal)μ Accenture(κ²½μ 컨μ€ν
κΈ°μ
)μ ν©μνμΌλ‘ Spring Batchκ° κ°λ°λ¨
- Accenture : λ°°μΉ μν€ν μ²λ₯Ό ꡬννλ©° μμ κΈ°μ μ μΈ κ²½νκ³Ό λ Ένμ°
- SpringSource : κΉμ΄ μλ κΈ°μ κ²½ν λ° μ€νλ§ κΈ°λ° νλ‘κ·Έλλ° λͺ¨λΈ μ 곡
- λ νμ¬λ Spring κΈ°λ° Batch μν€ν μ² μ루μ μ κ°λ°νμ¬ μ μ¬ν λ¬Έμ λ₯Ό ν΄κ²°νλ λ§μ ν΄λΌμ΄μΈνΈμ νμ ν¨
- Accentureλ μ΄μ μ μμ ν λ°°μΉ μ²λ¦¬ μν€ν μ² νλ μμν¬λ₯Ό Spring Batch νλ‘μ νΈμ κΈ°μ¬ν¨
Batch Usage Scenarios
λ°°μΉ ν΅μ¬ ν¨ν΄
- Read : λ°μ΄ν°λ² μ΄μ€, νμΌ, ν λ±μμ λ€λμ λ°μ΄ν°λ₯Ό μ‘°ν
- Process : νΉμ λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ²λ¦¬(κ°κ³΅)
- Write : λ°μ΄ν°λ₯Ό μμ λ νμμΌλ‘ μ μ₯(Write)
Spring Batchλ μμ κ°μ κΈ°λ³Έ λ°°μΉ λ°λ³΅μ μλννμ¬ μ¬μ©μμ μνΈ μμ© μμ΄ μ€νλΌμΈ νκ²½μμ μ μ¬ν νΈλμμ μ μ²λ¦¬ν μ μλ κΈ°λ₯μ μ 곡
λΉμ¦λμ€ μλ리μ€
- λ°°μΉ νλ‘μΈμ€λ₯Ό μ£ΌκΈ°μ μΌλ‘ μΌκ΄ 컀λ°
- λμ μΌκ΄ μ²λ¦¬: Jobμ λ³λ ¬ μ²λ¦¬
- λκ·λͺ¨ λ³λ ¬ λ°°μΉ μ²λ¦¬
- μ€ν¨ ν μλ λλ μ€μΌμ€λ§μ μν μ¬μμ
- μμ‘΄ κ΄κ³κ° μλ Step μ¬λ¬ κ°λ₯Ό μμ°¨μ μΌλ‘ μ²λ¦¬
- Repeat, Retry, Skip λ±μ μ²λ¦¬
Spring Batch Architecture
Application
- μ€νλ§ λ°°μΉ νλ μμν¬λ₯Ό ν΅ν΄ κ°λ°μκ° λ§λ λͺ¨λ Batch Job, 컀μ€ν μ½λλ₯Ό ν¬ν¨
- κ°λ°μλ λΉμ¦λμ€ λ‘μ§μ ꡬνμλ§ μ§μ€νκ³ , 곡ν΅μ μΈ κΈ°μ μ νλ μμν¬κ° λ΄λΉ
Batch Core
- Jobμ μ€ν, λͺ¨λν°λ§, κ΄λ¦¬ APIλ‘ κ΅¬μ±
- JobLauncher, Job, Step, Flow λ±
- Jobμ λͺ μΈμ
Batch Infrastructure
- Application, Core λͺ¨λ κ³΅ν΅ Infrastructure μμμ λΉλλ¨
- Job μ€νμ νλ¦κ³Ό μ²λ¦¬λ₯Ό μν ν μ 곡
- Reader, Processor, Writer, Skip, Retry λ±μ΄ μν¨
Spring Batch ꡬμ±λ
- JobLauncher : Jobμ μ€νμν€λ μ»΄ν¬λνΈ
- JobRepository : Jobμ μ€ν λ° Job, Step λ±μ μ μ₯
- Job : Batch Processing
- Step : Batch Jobμ μ¬λ¬ λ¨κ³ (Jobκ³Ό 1 : N)
- Item-Reader, Processor, Writer : λ°μ΄ν°λ₯Ό μ½κ³ , μ²λ¦¬νκ³ , μ°λ κ΅¬μ± (Stepκ³Ό 1:1)
Job
- Jobμ μ 체 λ°°μΉ νλ‘μΈμ€λ₯Ό μΊ‘μνν λλ©μΈ
- Stepμ μμ μ μ
- Batch μμ μ μ€νν λ νμν λ°μ΄ν°λ₯Ό νλΌλ―Έν°λ‘ λ°μ(JobParameters) μνμ΄ λ¨ (Optional)
Step
- Stepμ λ°°μΉ μμ μ λ 립μ μ΄κ³ μμ°¨μ μΈ λ¨κ³λ₯Ό μΊ‘μννκ³ , μ€μ λ°°μΉ μ²λ¦¬μ λν μ μ λ° μ μ΄νλ λ° νμν λͺ¨λ μ 보λ₯Ό ν¬ν¨νλ λλ©μΈ κ°μ²΄
- Chunk-oriented μ²λ¦¬ λ° Tasklet μ²λ¦¬ λ°©λ²μ΄ μ‘΄μ¬ν¨
Chunk Step
- Chunkλ, λ°μ΄ν°λ₯Ό λ©μ΄λ¦¬λ‘ μμ ν λ κ° μ»€λ° μ¬μ΄μ μ²λ¦¬λλ row μλ₯Ό μλ―Έν¨
- Chunk Sizeλ ν λ²μ μ²λ¦¬λ νΈλμμ μ λ¨μ
- Reader-Processor-Writer κ° νλμ Chunkμ νΈλμμ λ¨μμμ μ€νλ¨
- μΌλ°μ μΌλ‘ Spring Batchλ Chunk μ§ν₯ μ²λ¦¬λ₯Ό μ¬μ©ν¨
Tasklet Step
- νλμ νΈλμμ μμ λ°μ΄ν°λ₯Ό μ²λ¦¬
- λ¨μν μ²λ¦¬λ₯Ό ν λ μ¬μ©
μ°Έκ³ λ¬Έμ
'Spring > Spring Batch' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Spring Batch (6) ExecutionContext (0) | 2022.11.05 |
---|---|
Spring Batch (5) Step, StepExecution (0) | 2022.11.03 |
Spring Batch (4) Job, JobInstance, JobParameters, JobExecution (0) | 2022.11.01 |
Spring Batch (3) DB μ€ν€λ§ (0) | 2022.10.30 |
Spring Batch (2) νλ‘μ νΈ κ΅¬μ± λ° μμ‘΄μ± μ€μ , Hello World (0) | 2022.10.29 |
λκΈ