Spring Batch
Last updated
Last updated
Batch Processing(์ผ๊ด ์ฒ๋ฆฌ)๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ ํ๋ฆ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ์๋ฃ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ปํ๋ค. ๊ฐ๋ณ์ ์ผ๋ก ์ด๋ค ์์ฒญ์ด ์์๋๋ง๋ค ์ค์๊ฐ์ผ๋ก ํต์ ํ๋ ๊ฒ์ด ์๋ ์ผ๊ด์ ์ผ๋ก ๋๋ ๊ฑด์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
๋ฐฐ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผํ๋ค.
๋์ฉ๋ ๋ฐ์ดํฐ : ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ, ๊ณ์ฐ, ๊ฐ์ ธ์ค๊ธฐ๋ฑ์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์ด์ผํ๋ค.
์๋ํ : ์ฌ๊ฐํ ๋ฌธ์ ํด๊ฒฐ์ ์ ์ธํ๊ณ ๋ ์ฌ์ฉ์ ๊ฐ์ ์์ด ์คํ
๊ฒฌ๊ณ ์ฑ : ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ ์ถฉ๋/์ค๋จ ์์ด ์ฒ๋ฆฌ
์ ๋ขฐ์ฑ : ๋ฌด์์ด ์๋ชป๋์๋์ง ์ถ์ ํ์(logging, ์๋ฆผ)
์ฑ๋ฅ : ์ง์ ๋ ์๊ฐ์์ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๊ฑฐ๋ ๋์์ ์คํ๋๋ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฉํดํ์ง ์๋๋ก ์ํ
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํน์ ์๊ฐ์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค.
์๋ฅผ ํ๋ ๋ค์๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฐฐ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๋ค. ์ค์๊ฐ ์ง๊ณ ์ฟผ๋ฆฌ๋ก ํด๊ฒฐํ๊ธฐ์ ์กฐํ ์๊ฐ์ด๋ ์๋ฒ ๋ถํ๊ฐ ์๊ฒจ, ๋งค์ผ ์๋ฒฝ์ ์ ๋ ์ ๋งค์ถ ์ง๊ณ๋ฅผ ๋ง๋ค์ด ์ธ๋ถ ์์ฒญ์ด ์ฌ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ ๋ฌํด ์ฑ๋ฅ๊ณผ ๋ถํ๋ฅผ ๋ชจ๋ ์ก์ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
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 ๋ชจ๋ ์ฃผ์ํด์ผํ๋ค.
๊ฐ๋ฅํ๋ฉด ๋จ์ํํ์ฌ ๋ณต์กํ ๊ตฌ์กฐ์ ๋ก์ง ํผํ๊ธฐ
๋ฐ์ดํฐ๋ฅผ ์ง์ ์ฌ์ฉํ๋ ์์ ์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ฏ๋ก ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฑ์ ๋ฐฉ์ด์ฑ ์ด ํ์
๋ฐฐ์น ์ฒ๋ฆฌ ์ ์์คํ I/O ์ฌ์ฉ ์ต์ํํ๊ธฐ
์ฆ์ I/O๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ๊ณผ ๋คํธ์ํฌ ๋น์ฉ์ด ์ปค์ง๋ฉด ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ฉด ํ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋๊ณ ์ฒ๋ฆฌ๋ฅผ ํ ๋ค์, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฒ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๊ฒ์ด ์ข์
๋ฐฐ์น ์ฒ๋ฆฌ๊ฐ ์งํ๋๋ ๋์ ๋ค๋ฅธ ํ๋ก์ ํธ(์น, API, ๊ธฐํ ๋ฑ) ์์์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์๋์ง ์ฃผ์
Spring Batch๋ ์ค์ผ์ฅด๋ฌ๋ฅผ ์ ๊ณตํ์ง ์๊ณ , ๋ฐฐ์น ์ฒ๋ฆฌ ๊ธฐ๋ฅ๋ง ์ ๊ณตํ๋ค.
์ค์ผ์ฅด๋ฌ๋ ๋ํ์ ์ผ๋ก Crontab, Quartz, Control-M, Jenkins๋ฑ์ด ์๋ค.
crontab์ ๊ฒฝ์ฐ ๊ฐ ์๋ฒ๋ง๋ค ๋ฐ๋ก ์ค์ผ์ค๋ง์ ๊ด๋ฆฌํด์ผ ํ๋ฉฐ ๋ฌด์๋ณด๋ค ํด๋ฌ์คํฐ๋ง ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ง ์์ ์ถ์ฒํ์ง ์๋๋ค.
์ฝ๊ธฐ(read) : ๋ฐ์ดํฐ ์ ์ฅ์์์ ํน์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฝ๋๋ค.
์ฒ๋ฆฌ(processing) : ์ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๊ฐ๊ณต/์ฒ๋ฆฌ ํ๋ค.
์ฐ๊ธฐ(write) : ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ ์ฅ์์ ์ ์ฅํ๋ค.
๋ฐฐ์น ์ฒ๋ฆฌ๋ ์ฝ๊ธฐ -> ์ฒ๋ฆฌ -> ์ฐ๊ธฐ์ ํ๋ฆ์ ๊ฐ๋๋ค.
๊ฐ์ฒด ๊ด๊ณ๋๋ฅผ ๋ณด๋ฉด ํ๋์ ํฐ Job์ ์ฌ๋ฌ Step(1:M ๊ด๊ณ)์ ๋๊ณ , ๊ฐ ๋จ๊ณ์ ๋ฐฐ์น ํ๋ฆ๋๋ก ๊ตฌ์ฑํ๋ค.