Spring Batch

Batch๋ž€?

Batch Processing(์ผ๊ด„ ์ฒ˜๋ฆฌ)๋ž€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ํ๋ฆ„์— ๋”ฐ๋ผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ๋œปํ•œ๋‹ค. ๊ฐœ๋ณ„์ ์œผ๋กœ ์–ด๋–ค ์š”์ฒญ์ด ์žˆ์„๋•Œ๋งˆ๋‹ค ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ผ๊ด„์ ์œผ๋กœ ๋Œ€๋Ÿ‰ ๊ฑด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค.

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ : ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ, ๊ณ„์‚ฐ, ๊ฐ€์ ธ์˜ค๊ธฐ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

  • ์ž๋™ํ™” : ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์‚ฌ์šฉ์ž ๊ฐœ์ž…์—†์ด ์‹คํ–‰

  • ๊ฒฌ๊ณ ์„ฑ : ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถฉ๋Œ/์ค‘๋‹จ ์—†์ด ์ฒ˜๋ฆฌ

  • ์‹ ๋ขฐ์„ฑ : ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์ถ”์  ํ•„์š”(logging, ์•Œ๋ฆผ)

  • ์„ฑ๋Šฅ : ์ง€์ •๋œ ์‹œ๊ฐ„์•ˆ์— ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•˜๊ฑฐ๋‚˜ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜ํ–‰

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์‹œ๊ฐ„์— ์ผ๊ด„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

https://t1.daumcdn.net/cfile/tistory/9995544C5B606DFE0F

์˜ˆ๋ฅผ ํ•˜๋‚˜ ๋“ค์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์ง‘๊ณ„ ์ฟผ๋ฆฌ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ์—” ์กฐํšŒ ์‹œ๊ฐ„์ด๋‚˜ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ฒจ, ๋งค์ผ ์ƒˆ๋ฒฝ์— ์ „๋‚ ์˜ ๋งค์ถœ ์ง‘๊ณ„๋ฅผ ๋งŒ๋“ค์–ด ์™ธ๋ถ€ ์š”์ฒญ์ด ์˜ฌ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์ „๋‹ฌํ•ด ์„ฑ๋Šฅ๊ณผ ๋ถ€ํ•˜๋ฅผ ๋ชจ๋‘ ์žก์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Spring Boot Batch

Spring Batch๋Š” ๋ฐฑ์—”๋“œ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ฉฐ, SpringBoot Batch๋Š” Spring Batch์˜ ์„ค์ • ์š”์†Œ๋“ค์„ ๊ฐ„ํŽธํ™”์‹œ์ผœ ๋น ๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค.

์žฅ์ 

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ตœ์ ํ™”๋˜์–ด ๊ณ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•œ๋‹ค.

  • ํšจ๊ณผ์ ์ธ ๋กœ๊น…, ํ†ต๊ณ„ ์ฒ˜๋ฆฌ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋“ฑ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค.

  • ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ์ž๋™ํ™” ๋˜์–ด์žˆ๋‹ค.

  • ์˜ˆ์™ธ์‚ฌํ•ญ๊ณผ ๋น„์ •์ƒ ๋™์ž‘์— ๋Œ€ํ•œ ๋ฐฉ์–ด๋กœ์ง์ด ์žˆ๋‹ค.

  • ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐ์น˜์˜ ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

Spring Boot Batch 2.0 ์ด์ƒ์€ Spring Batch 4.0์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, Spring Batch 4.0์€ ๋‹ค์Œ ํŠน์ง•์ด ์žˆ๋‹ค.

  • Java 8์ด์ƒ์—์„œ ๋™์ž‘ํ•œ๋‹ค.

  • Spring Framework 5๋กœ ์ง„ํ™”ํ•˜๋ฉฐ ์ƒˆ๋กญ๊ฒŒ ์žฌ๋ฐฐ์—ด๋œ ์˜์กด์„ฑ ํŠธ๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

  • ItemReaders , ItemProcessors. ItemWriters์— ๋Œ€ํ•œ ๋นŒ๋”๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์ฃผ์˜์‚ฌํ•ญ

Spring Boot Batch๋Š” Spring Batch๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ž˜ํ•‘ํ•œ ํ”„๋กœ์ ํŠธ ์ด๋ฏ€๋กœ Spring Boot Batch, Spring Batch ๋ชจ๋‘ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

  1. ๊ฐ€๋Šฅํ•˜๋ฉด ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๋ณต์žกํ•œ ๊ตฌ์กฐ์™€ ๋กœ์ง ํ”ผํ•˜๊ธฐ

  2. ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ์ž‘์—…์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ์˜ ๋ฐฉ์–ด์ฑ…์ด ํ•„์š”

  3. ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์‹œ ์‹œ์Šคํ…œ I/O ์‚ฌ์šฉ ์ตœ์†Œํ™”ํ•˜๊ธฐ

    • ์žฆ์€ I/O๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜๊ณผ ๋„คํŠธ์›Œํฌ ๋น„์šฉ์ด ์ปค์ง€๋ฉด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋ฉด ํ•œ๋ฒˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋‘๊ณ  ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋‹ค์Œ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ•œ๋ฒˆ์— ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

  4. ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ(์›น, API, ๊ธฐํƒ€ ๋“ฑ) ์š”์†Œ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋Š”์ง€ ์ฃผ์˜

  5. Spring Batch๋Š” ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ , ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•œ๋‹ค.

    • ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ Crontab, Quartz, Control-M, Jenkins๋“ฑ์ด ์žˆ๋‹ค.

    • crontab์˜ ๊ฒฝ์šฐ ๊ฐ ์„œ๋ฒ„๋งˆ๋‹ค ๋”ฐ๋กœ ์Šค์ผ€์ค„๋ง์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌด์—‡๋ณด๋‹ค ํด๋Ÿฌ์Šคํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜์ง€ ์•Š์•„ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.

Spring Batch

  1. ์ฝ๊ธฐ(read) : ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๋Š”๋‹ค.

  2. ์ฒ˜๋ฆฌ(processing) : ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต/์ฒ˜๋ฆฌ ํ•œ๋‹ค.

  3. ์“ฐ๊ธฐ(write) : ์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ €์žฅ์†Œ์— ์ €์žฅํ•œ๋‹ค.

๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋Š” ์ฝ๊ธฐ -> ์ฒ˜๋ฆฌ -> ์“ฐ๊ธฐ์˜ ํ๋ฆ„์„ ๊ฐ–๋Š”๋‹ค.

https://github.com/cheese10yun/TIL/raw/master/assets/batch-obejct-relrationship.png

๊ฐ์ฒด ๊ด€๊ณ„๋„๋ฅผ ๋ณด๋ฉด ํ•˜๋‚˜์˜ ํฐ Job์— ์—ฌ๋Ÿฌ Step(1:M ๊ด€๊ณ„)์„ ๋‘๊ณ , ๊ฐ ๋‹จ๊ณ„์˜ ๋ฐฐ์น˜ ํ๋ฆ„๋Œ€๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.

์ฐธ๊ณ 

Last updated

Was this helpful?