์ ๋ ์คํ๋ง ๊ธฐ๋ฐ ๋ฐฑ์๋ ํ๋ก์ ํธ์์ ์ฃผ๊ธฐ์ ์ธ ์์ ์ @Scheduled ์ด๋ ธํ ์ด์ ์ผ๋ก ์ฒ๋ฆฌํด์์ต๋๋ค.
๋งค์ผ ์ฃผ์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ๊ฒฝ์ ์งํ ๋ฐํ์ผ์๋ ๋ฏผ๊ฐ๋ ๋ถ์์ ์ฌ์คํํ๋ ๋ฑ, ๋ฐฐ์น์ฑ ์์
์ด ํ๋๋ ๋์ด๋๊ฒ ๋์์ต๋๋ค.
๊ทธ ๋น์์๋ @Scheduled๋ง์ผ๋ก๋ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ์ผ๋, ์๊ฐ์ด ์ง๋๋ฉด์ ์์ ์ด ์ ์ ๋ง์์ง๊ณ , ์คํจ ๋ณต๊ตฌ๋ ์คํ ์ด๋ ฅ ๊ด๋ฆฌ๊ฐ ํ์ํด์ง๋ฉด์ ํ๊ณ์ ๋ถ๋ชํ๊ฒ ๋์์ต๋๋ค.
์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์, Spring Batch๋ฅผ ์ฐพ์๋ณด๊ณ ๋์ ์ ๊ฒฐ์ ํ๊ฒ ๋์์ต๋๋ค!
์ ๊ฐ ๋ฆฌํฉํ ๋งํ๊ณ ์๋ ๊ธฐ์กด ํ๋ก์ ํธ์ ๋ฐฐ์น ์์ ๋ค์ ์๋์ ๊ฐ์ต๋๋ค.
1. ์ด๊ธฐ ์ธํ
- ์ข ๋ชฉ๋ณ 3๋ ์น ์ฃผ์ ๋ฐ์ดํฐ ์ ์ฅ (์ฐจํธ/๋ฏผ๊ฐ๋ ๋ถ์์ฉ)
- ์ฃผ์ ๊ฒฝ์ ์งํ 3๋ ์น ์ด๋ ฅ ์ ์ฅ (์งํ ์ผ์ ์บ๋ฆฐ๋ ๋ฐ ๋ถ์์ฉ)
2. ๋งค์ผ ๋ฐ๋ณต
- ๋งค์ผ ์ฃผ์ ๋ง๊ฐ ํ ๋น์ผ ๋ฐ์ดํฐ ์์ง ๋ฐ ์ ์ฅ
3. ์ฃผ๊ธฐ์ ๋ฐ๋ณต
- ์งํ ๋ฐํ ์ด๋ฒคํธ ๋ฐ์ ์, ๋ฏผ๊ฐ๋ ๋ถ์ ์ฌ๊ณ์ฐ ๋ก์ง ์คํ
์ @Scheduled๋ก๋ ๋ถ์กฑํ์๊น์?
1. ์คํ ์ด๋ ฅ ์ถ์ ์ด ๋ถ๊ฐ๋ฅํ์ต๋๋ค
- ์ด๋ค ์์ ์ด ์ธ์ ์คํ๋์๊ณ , ์ฑ๊ณต/์คํจํ๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋งค๋ฒ ๋ก๊ทธ๋ฅผ ๋ค์ ธ์ผ ํ์ต๋๋ค.
- ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์ ํํ ์ด๋ ์ง์ ์์ ๋ฉ์ท๋์ง, ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ฌธ์ ์๋์ง ํ์
ํ๊ธฐ๊ฐ ์ฝ์ง ์์์ต๋๋ค.
๋ก๊ทธ๋ฅผ ๋ค์ง๋ฉฐ ์์ธ์ ์ผ์ผ์ด ์ถ์ ํ๊ธฐ๋ณด๋ค๋, ๋ ๋ช ํํ๊ณ ์ฒด๊ณ์ ์ธ ์ถ์ ์์คํ ์ด ํ์ํ๋ค๊ณ ๋๊ผ์ต๋๋ค.
2. ์คํจ ์ ๋ณต๊ตฌ๊ฐ ๊น๋ค๋ก์ ์ต๋๋ค
- ์ค๊ฐ์ ์คํจํ๋ฉด ์ฒ์๋ถํฐ ์ ์ฒด ๋ก์ง์ ๋ค์ ์คํํด์ผ ํ๊ณ ,
- ํน์ ์ข ๋ชฉ ํ๋๋ง ์คํจํด๋ ์ ์ฒด ๋ฐ๋ณต๋ฌธ์ ์ํฅ์ ์ฃผ๋ ๊ตฌ์กฐ์์ต๋๋ค.
3. ์์ ํ๋ฆ ๊ด๋ฆฌ๊ฐ ์ง๊ด์ ์ด์ง ์์์ต๋๋ค
- ์ด๋ค ์์ ์ด ๋จผ์ ์คํ๋์ด์ผ ํ๊ณ , ์ด๋ค ์์๋ก ์ฒ๋ฆฌ๋๋์ง ํ๋ฆ์ ๋์ผ๋ก ๋ณด๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
- ๋ชจ๋ ์ ์ด๊ฐ ๋ฉ์๋ ๋ ๋ฒจ์์ ์๋์ผ๋ก ์ด๋ค์ก์ต๋๋ค.
4. ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ด ๋ถ์กฑํ์ต๋๋ค
- ์ ์ ๋ณต์กํด์ง๋ ์์ ์กฐ๊ฑด (์: ์กฐ๊ฑด๋ถ ์คํ, ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฑ)์ @Scheduled๋ก๋ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๋ค๊ณ ๋๊ผ์ต๋๋ค.
๐ง ๊ทธ๋ ๋ค๋ฉด Spring Batch๋ ๋ญ๊ฐ ๋ค๋ฅผ๊น์?
Spring Batch๋ ๋จ์ํ ์ค์ผ์ค๋ฌ๋ฅผ ๋์ฒดํ๋ ๋๊ตฌ๊ฐ ์๋๋๋ค.
๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์์
์ํ ์ ์ฅ, ์คํจ ๋ณต๊ตฌ, ํธ๋์ญ์
๊ด๋ฆฌ, ์คํ ์ด๋ ฅ ์ถ์ ๋ฑ
๋ณต์กํ ๋ฐฐ์น ์์
์ ์ฒด๊ณ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํ๋ ์์ํฌ์
๋๋ค.
- ์คํ ์ด๋ ฅ์ ์๋์ผ๋ก DB์ ์ ์ฅ๋ฉ๋๋ค (BATCH_JOB_EXECUTION, BATCH_STEP_EXECUTION ๋ฑ)
- ์คํจํ Step๋ง ๋ฐ๋ก ์ฌ์คํํ ์ ์์ต๋๋ค
- Job → Step → Reader/Processor/Writer ๊ตฌ์กฐ๋ก ์์ ์ ๋ช ํํ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค
- ์ํ ๊ธฐ๋ฐ ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ณ๋ ฌ ์ฒ๋ฆฌ, ์ฌ์์ ์ ๋ต ๋ฑ์ ๊ธฐ๋ณธ ์ ๊ณตํฉ๋๋ค.
โ ๊ทธ๋์ Spring Batch๋ฅผ ๋์ ํ์ต๋๋ค
์ฌ์ค ์ฒ์์๋ ๋จ์ํ ์ฃผ๊ธฐ์ ์ธ ์์
์ ์คํํ๋ ๋ฐ ์ด์ ์ด ์์์ต๋๋ค.
Spring Batch์ "๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ"๋ "๋ณต์กํ ๋ค๋จ๊ณ Step ๊ตฌ์ฑ"์ด ๊ผญ ํ์ํ ์ํฉ์ ์๋์์ด์ ๊ทธ ์ํฉ์์ ์ ํฉํ ํ๋จ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ์ ์ ์์
์ด ๋์ด๋๋ฉด์, ๋จ์ํ ์ค์ผ์ค๋ง๋ง์ผ๋ก๋ ํด๊ฒฐ๋์ง ์๋ ๋ฌธ์ ๋ค์ด ์๊ธฐ๊ธฐ ์์ํ์ต๋๋ค.
- ์ธ์ ์ด๋ค ์์
์ด ์คํ๋๋์ง ํ์ธํ๊ณ ์ถ๊ณ ,
- ์ค๊ฐ์ ์คํจํ์ ๋ ์ด์ด์ ์คํํ ์ ์์ด์ผ ํ๊ณ ,
- ์์
์ ํ๋ฆ์ ๋ ๊ตฌ์กฐํํ๊ณ ์ถ๋ค๋ ํ์์ฑ์ด ์๊ฒผ์ต๋๋ค.
๊ทธ๋์ Spring Batch๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋์ฉ ๋ฆฌํฉํ ๋ง์ ์์ํ๊ฒ ๋์์ต๋๋ค.
โ๏ธ ๋ค์ ๊ธ ์๊ณ
๋ค์ ๊ธ์์๋ ์ ๊ฐ Spring Batch๋ฅผ ์ ์ฉํ๋ฉด์ ๋ง์ฃผํ ๊ตฌ์กฐ์ ๊ณ ๋ฏผ,,,
์ฆ Tasklet ๋ฐฉ์๊ณผ Chunk ๋ฐฉ์์ ์ฐจ์ด๋ฅผ ์ด๋ป๊ฒ ์ดํดํ๊ณ ์ ์ฉํ๋์ง๋ฅผ ์ค์ฌ์ผ๋ก ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค!
๊ทธ๋ผ ์๋ฝ...