1. Spring Batch??
μ€νλ§ λ°°μΉλ νλ§λλ‘ μ΄μΌκΈ° νμλ©΄ κ°λ°μκ° μ μν μμ μ μΌκ΄μ²λ¦¬λ₯Ό μ§μνλ λͺ¨λμ μλ―Ένλ€. μΌμ μ£ΌκΈ°λ‘ μ€ννλ λ‘μ§μ λ³λμ μ΄ν리μΌμ΄μ μ μ μ©ν¨μΌλ‘μ¨ νλμ μ΄ν리μΌμ΄μ μ λΆνλ₯Ό λΆμ°μν€κ³ λΉμ¦λμ€ λ‘μ§μ μ§μ€ν μ μλ μ₯μ μ΄ μλ€. κ·Έλ¦¬κ³ μ€νλ§μμ μ 곡νλ Spring-Batch-Docs μμλ μλμ κ°μ΄ λ°°μΉκ° νμν κ²½μ°μ λν μμλ₯Ό μ μνκ³ μλ€.

- νΉμ μ μ μμ μνΈμμ©μ΄ μλ λμ©λ μλν νλ‘μΈμ€, μ£Όλ‘ μκ° κΈ°λ° μ΄λ²€νΈ(μλ§ μ μ° μ²λ¦¬)κ° νμν κ²½μ°
- λμ©λ λ°μ΄ν° μ μ λ°λ³΅, μ£ΌκΈ°μ μΌλ‘ νλ‘μΈμ±νλ μ΄ν리μΌμ΄μ μ κ²½μ° (보ν ννμ μ νκ±°λ 보νλ£λ₯Ό μ‘°μ νλ μΌ)
- λ΄ / μΈλΆ μμ€ν μΌλ‘ λΆν° λ°μ μ 보λ₯Ό ν΅ν©νλ μΌ. μ΄ λ΄μ©μλ ν¬λ§·ν , μ ν¨μ± κ²μ¬, νΈλμμ λ°©μμ μ²λ¦¬λ₯Ό νμλ‘ νλ κ²½μ°λ ν¬ν¨νλ€
2. Batch? Schedular?

λ°°μΉμ μ€μΌμ€λ¬λ μνΈλ³΄μμ μΈ μν μ νλ€. λ°°μΉλ λμ©λ λ°μ΄ν°λ₯Ό μΌκ΄μ²λ¦¬νλ λΉμ¦λμ€ μν λͺ©μ μΌλ‘ μ¬μ©νλ λͺ¨λμ΄κ³ , μ€μΌμ€λ¬λ μΌμ μκ°μ μ§μ ν λμμ νλ κ²μ λ§νλ€. μ€μΌμ€λ¬ Quartzλ μΌμ μκ°μ νΉμ λμμ μννλλ‘ νμ§λ§ λμ©λ λ°°μΉ μ²λ¦¬μ κ΄ν κΈ°λ₯μ μλ€.
3. Spring Batch Architecture
μ€νλ§ λ°°μΉ μν€ν μ²λ Application, Batch Core, Batch Infrastructure λ‘ κ΅¬μ±λμ΄ μλ€.
- Application : κ°λ°μκ° Spring Batchλ₯Ό μ¬μ©νμ¬ μμ±ν λͺ¨λ λ°°μΉ μμ κ³Ό μ¬μ©μ μ μ μ½λκ° ν¬ν¨λμ΄ μλ€.
- Batch Core : λ°°μΉ μμ μ μμνκ³ μ μ΄νλ λ° νμν JobLauncher, Job λ° Step μ κ°μ λ°νμ ν΄λμ€κ° ν¬ν¨νκ³ μλ€.
- Batch Infrastructure : κ°λ°μκ° λͺ¨λ μ¬μ©νλ κ³΅ν΅ μ½κΈ° λ° μ°κΈ° λ° μλΉμ€(e.g. RetryTemplate)λ₯Ό ν¬ν¨λμ΄ μλ€.

4. μ€νλ§ λ°°μΉ λ©ν λ°μ΄ν°
μ€νλ§ λ°°μΉμ μ€ν, κ΄λ¦¬λ₯Ό μν λͺ©μ μ μ¬λ¬ λλ©μΈ μ 보λ€μ μ μ₯, μ λ°μ΄νΈ, μ‘°νν μ μλ μ€ν€λ§ μ 곡νλ€. λ³λμ μ€νλ§ λ°°μΉ λ©ν λ°μ΄ν°λ₯Ό DB μ νλ³λ‘ μ 곡νλ©°, νλ‘νΌν°λ₯Ό ν΅ν΄ μ€ν€λ§ μμ±μ μ€μ ν μ μλ€.
- μ€νλ§ λ°°μΉ λ©ν λ°μ΄ν° μμΉ
- /org/springframework/batch/core/schema-*.sql
- μ€ν€λ§ μμ± μ€μ (spring.batch.jdbc.initialize-schema)
- ALWAYS : μ€ν¬λ¦½νΈ νμ μ€ν
- EMBEDDED : λ΄μ₯ DB μΌ κ²½μ°μλ§ μ€ν (default)
- NEVER : μ€ν¬λ¦½νΈ νμ μ€ν μν¨ (μ΄μ νκ²½μμ κΆμ₯)

Job κ΄λ ¨ ν μ΄λΈ
- BATCH_JOB_INSTANCE
- Job μ΄ μ€νλ λ JobInstance μ 보λ₯Ό μ μ₯νλ€.
- job_nameκ³Ό job_keyλ₯Ό ν€λ‘ νμ¬ νλμ λ°μ΄ν°κ° μ μ₯νλ―λ‘ λμΌν job_name κ³Ό job_key λ‘ μ€λ³΅ μ μ₯λ μ μλ€.
- BATCH_JOB_EXECUTION_PARAMS
- Jobκ³Ό ν¨κ» μ€νλλ JobParameter μ 보λ₯Ό μ μ₯νλ€.
- BATCH_JOB_EXECUTION
- JobExecution κ΄λ ¨ λ°μ΄ν°κ° μ μ₯λλ©° Job μμ±, μμ, μ’ λ£ μκ°, μ€νμν, λ©μμ§ λ±μ κ΄λ¦¬νλ€.
- BATCH_JOB_EXECUTION_CONTEXT
- Job μ μ€νλμ μ¬λ¬κ°μ§ μνμ 보, 곡μ λ°μ΄ν°λ₯Ό μ§λ ¬ν (Json νμ) ν΄μ μ μ₯νλ€.
- Step κ° μλ‘ κ³΅μ ν μ μλ€.
Step κ΄λ ¨ ν μ΄λΈ
- BATCH_STEP_EXECUTION
- Step μ μ€νμ λ³΄κ° μ μ₯λλ©° μμ±, μμ, μ’ λ£ μκ°, μ€νμν, λ©μμ§ λ±μ κ΄λ¦¬νλ€.
- BATCH_STEP_EXECUTION_CONTEXT
- Step μ μ€νλμ μ¬λ¬κ°μ§ μνμ 보, 곡μ λ°μ΄ν°λ₯Ό μ§λ ¬ν (Json νμ) ν΄μ μ μ₯νλ€.
- Step λ³λ‘ μ μ₯λλ©° Step κ° μλ‘ κ³΅μ ν μ μλ€.
Reference
- https://docs.spring.io/spring-batch/docs/current/reference/html/spring-batch-intro.html#spring-batch-intro
- https://docs.spring.io/spring-batch/reference/schema-appendix.html#metaDataSchema
- https://docs.spring.io/spring-batch/reference/spring-batch-architecture.html
- https://docs.spring.io/spring-batch/reference/spring-batch-architecture.html
- https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/dashboard
'π backend > spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| Spring Batch κΈ°λ° νμ μμ λ°°μΉ μ½μ§ κΈ°λ‘ (0) | 2024.09.03 |
|---|---|
| [Spring Batch] Job μ€ν νλ‘νΌν°, JobParameter, Scope (0) | 2024.08.26 |
| hibernate.query.in_clause_parameter_padding = true ? (1) | 2024.03.06 |
| JPA μ UUID version 7 μ μ©νκΈ° (0) | 2024.03.04 |
| [Spring] Spring AOP λμ μμ보기 (0) | 2024.03.04 |
