[Spring Batch] 0. ์„œ๋ก 

 

1. ๋ชฉ์ฐจ

1) ์Šคํ”„๋ง ๋ฐฐ์น˜ ์†Œ๊ฐœ

2) ์Šคํ”„๋ง ๋ฐฐ์น˜ ์‹œ์ž‘

3) ์Šคํ”„๋ง ๋ฐฐ์น˜ ๋„๋ฉ”์ธ ์ดํ•ด 

4) ์Šคํ”„๋ง ๋ฐฐ์น˜ ์‹คํ–‰

5) ์ฒญํฌ ํ”„๋กœ์„ธ์Šค (1)

6) ์ฒญํฌ ํ”„๋กœ์„ธ์Šค (2)

7) ์Šคํ”„๋ง ๋ฐฐ์น˜ ๋ฐ˜๋ณต ๋ฐ ์˜ค๋ฅ˜ ์ œ์–ด

8) ์Šคํ”„๋ง ๋ฐฐ์น˜ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์‹ฑ

9) ์Šคํ”„๋ง ๋ฐฐ์น˜ ๋ฆฌ์Šค๋„ˆ

10) ์Šคํ”„๋ง ๋ฐฐ์น˜ ํ…Œ์ŠคํŠธ ๋ฐ ์šด์˜

11) ๋ฒˆ์™ธํŽธ (์Šค์ผ€์ค„๋Ÿฌ - ์Šคํ”„๋ง๋ฐฐ์น˜ ์—ฐ๋™)

 

2. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๋ฐ ์„ ์ˆ˜์ง€์‹

1) ๊ฐœ๋ฐœํ™˜๊ฒฝ

- JDK 1.8

- Spring Boot 2.5.1

- DB - H2, Mysql

- IDE - Intellij

- Maven

 

2) ์„ ์ˆ˜์ง€์‹

- Spring Boot

- Spring Data JPA

- Spring JDBC
- Mysql

- Lombok

 


[Spring Batch] 1. ์Šคํ”„๋ง ๋ฐฐ์น˜ ์†Œ๊ฐœ

1. ๊ฐœ์š” ๋ฐ ์•„ํ‚คํ…์ฒ˜

1) ์Šคํ”„๋ง ๋ฐฐ์น˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ

- ์ž๋ฐ” ๊ธฐ๋ฐ˜ ํ‘œ์ค€ ๋ฐฐ์น˜ ๊ธฐ์ˆ  ๋ถ€์žฌ

- ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์—์„œ ์š”๊ตฌํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ๋ฐฐ์น˜ ์•„ํ‚คํ…์ฒ˜ ํ‘œ์ค€์˜ ํ•„์š”์„ฑ ๋Œ€๋‘

 

2) ๋ฐฐ์น˜ ํ•ต์‹ฌ ํŒจํ„ด

- Read - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ, ํ์—์„œ ๋‹ค๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ

- Process - ํŠน์ • ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต

- Write - ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •๋œ ์–‘์‹์œผ๋กœ ๋‹ค์‹œ ์ €์žฅ

 

= E T L (extract / transform / load)

 

3) ๋ฐฐ์น˜ ์‹œ๋‚˜๋ฆฌ์˜ค

- ๋ฐฐ์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ปค๋ฐ‹

- ๋™์‹œ ๋‹ค๋ฐœ์ ์ธ Job์˜ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ, ๋Œ€์šฉ๋Ÿ‰ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

- ์‹คํŒจ ํ›„ ์ˆ˜๋™ ๋˜๋Š” ์Šค์ผ€์ค„๋ง์— ์˜ํ•œ ์žฌ์‹œ์ž‘

- ์˜์กด๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” step ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ

- ์กฐ๊ฑด์  Flow ๊ตฌ์„ฑ์„ ํ†ตํ•œ ์ฒด๊ณ„์ ์ด๊ณ  ์œ ์—ฐํ•œ ๋ฐฐ์น˜ ๋ชจ๋ธ ๊ตฌ์„ฑ

- ๋ฐ˜๋ณต, ์žฌ์‹œ๋„, skip ์ฒ˜๋ฆฌ 

   * ๋ฐ˜๋ณต : ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰

      ์žฌ์‹œ๋„ : ์ž ๊น๋™์•ˆ์˜ ๋„คํŠธ์›Œํฌ ์žฅ์•  ๋•Œ๋ฌธ์— ์ „์ฒด ์žก์ด ์‹คํŒจํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ช‡๋ถ„ ํ›„ ๋ณต๊ตฌ๋˜๋ฉด ์žก์ด ์žฌ์‹œ๋„ ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

      skip : ์˜ˆ์™ธ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋Š” ์Šคํ‚ตํ•จ์œผ๋กœ ํ•ด์„œ ์žก์ด ๊ณ„์† ์‹คํ–‰๋ ์ˆ˜์žˆ๋„๋ก

 

 

4) ์•„ํ‚คํ…์ฒ˜ (3 Layers)

a) Application

- ์Šคํ”„๋ง ๋ฐฐ์น˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ๋ชจ๋“  ๋ฐฐ์น˜ Job๊ณผ ์ปค์Šคํ…€ ์ฝ”๋“œ ํฌํ•จ

- ๊ฐœ๋ฐœ์ž๋Š” ์—…๋ฌด๋กœ์ง์˜ ๊ตฌํ˜„์—๋งŒ ์ง‘์ค‘ํ•˜๊ณ  ๊ณตํ†ต์ ์ธ ๊ธฐ๋ฐ˜๊ธฐ์ˆ ์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‹ด๋‹น

 

b) Batch Core

- Job์„ ์‹คํ–‰ / ๋ชจ๋‹ˆํ„ฐ๋ง / ๊ด€๋ฆฌํ•˜๋Š” API๋กœ ๊ตฌ์„ฑ

- JobLauncher, Job, Step, Flow 

- Job์˜ ๋ช…์„ธ์„œ (๊ตฌ์„ฑ๊ณผ ์„ค์ •์„ ์œ„ํ•œ ํด๋ž˜์Šค๊ฐ€ ์†ํ•จ)

 

c) Batch Infrastructure

- Application, Core ๋ชจ๋‘ ๊ณตํ†ต Infrastructure ์œ„์—์„œ ๋นŒ๋“œ

- Job ์‹คํ–‰์˜ ํ๋ฆ„๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ‹€์„ ์ œ๊ณต

- Reader, Processor, Writer, Skip, Retry

  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ