[KSUG X Devocean] Spring Batch ์คํฐ๋๊ฐ ์ด๋๋ง 8ํ์ฐจ๋ฅผ ๋ง์ดํ์ต๋๋ค!
์ง๋ ํ ์์ผ SKT ์ผํํ์์์ ๋๋์ด ์ฒซ ์คํ๋ผ์ธ ๋ง๋จ์ด ์งํ๋์๋๋ฐ์.
์ด๋ฒ ๋ชจ์์ ์คํ์ ๊ฒ์คํธ(์ด๋์ฑ ๋, ๊น๋จ์ค ๋)๊ณผ ํจ๊ปํด ๋์ฑ ํ์ฑํ ์คํฐ๋ ์๊ฐ์ด์์ต๋๋ค.
ํจ๊ป ์ดํด๋ณด๋ฌ๊ฐ์ค๊น์ ๐
8ํ์ฐจ ์คํฐ๋ ์ฃผ์ ๋ ์คํ๋ง๋ฐฐ์น์์ CompositeItemProcessor ์ฌ์ฉํด๋ณด๊ธฐ์์ต๋๋ค!
CompositeItemProcessor๋ ์ฌ๋ฌ ๊ฐ์ ItemProcessor๋ฅผ ํ๋๋ก ๊ฒฐํฉํ์ฌ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ Spring Batch์์ ์ ๊ณตํ๋ ํด๋์ค์ ๋๋ค.
์ข ๋ ์์ธํ ๋ด์ฉ์ ์๋์ ๊ธ์ ์ ๋ฆฌํ๋๋ฐ ๊ด์ฌ์๋ ๋ถ๋ค์ ์ฐธ๊ณ ํด์ฃผ์ธ์
[Spring Batch 8ํธ] CompositeItemProcessor ์ฌ์ฉํด๋ณด๊ธฐ๐ง
์ค๋๋ ์ด๋ช ์ ๋ฐํ์ ๋ฝ๊ธฐ..!
๋ฐํ์๋ก ์ ์ ๋ ํ์๋์ด CompositeItemProcessor์ ๋ํด ๊ณต๋ถํ ๋ด์ฉ์ ์๊ฐํด์ฃผ์ จ์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ๋์ต๋๋(๋งค์ฃผ ๊ณต์ ํด์ฃผ์๋๋ฐ ์ต๊ณ ๐) 8์ฃผ์ฐจ ์คํฐ๋ ๋ด์ฉ์ ๊ณต์ ํด์ฃผ์ จ๋๋ฐ ์ด๋ฒ์ ๋ค์ผ๋ฉด์ supabase์ ๋ํด ์ฒ์ ์๊ฒ๋์์ด์! firebase์ ๋ํญ๋ง๋ผ๊ณ ํ๋๋ฐ ์ ๊ธฐํ๋๋ผ๊ตฌ์?
์ด๋ฒ ์ธ์ ์์๋ ๊น๋จ์ค๋์ด Spring Batch ์ดํ๋ฆฌ์ผ์ด์ ์ฌ์ฒ๋ฆฌ์ ๋ํ ๊ฐ์ด๋๋ฅผ ๊ณต์ ํด ์ฃผ์ จ์ต๋๋ค!
์คํ๋ง ๋ฐฐ์น ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ๋ด์ฉ์์ ๊ฐ๋จํ ๊ธฐ์ต์ ๋จ๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋ฉด
1. reader ๊ฐ์ - zero offset item Reader์ ํ์ฉ
2. aggregation ๊ฐ์ - Group by ํฌ๊ธฐ, ์ฟผ๋ฆฌ๋ ๋จ์ํ๊ฒ
3. I/O ์์ ๊ฐ์ - IO์์ ์ chunck ๋จ์์ ์ผ๊ด ์ฒ๋ฆฌ, ๋ฌถ์ด์ ๊ฐ์
Spring Batch์ ์ต์ ํ์ ์ฌ์ฒ๋ฆฌ์ ๋ํด ์ค์ง์ ์ธ ์ฌ๋ก๋ฅผ ๊ณต์ ํด์ฃผ์ ์ ์ธ์์ ์ด์๋ ์ธ์ ์ด์์ต๋๋ค.
ํนํ ๋ณต์กํ ์ํฉ์์ chunk๋จ์ ์คํ ์ค ์ค๋ฅ๊ฐ ๋๋ฉด ์ ์ฒด๋ฅผ ๋กค๋ฐฑํ ๊ฒ์ธ์ง ์ค๋ฅ ๋ ๋ถ๋ถ๋ถํฐ ํ ๊ฒ์ธ์ง? ์ด๋ฐ ๋ฌธ์ ๋ค์ ๊ฐ์ด ๊ณ ๋ฏผํด๋ณผ ์ ์์ด์ ์ข์๋ ๊ฑฐ ๊ฐ์ต๋๋ค. (+ ๊ธฐ์84 ๋ฉํ๊ฐ ๊ธฐ์ต์ ๋จ๋ค์ใ ใ ใ )
๊ทธ ํ ์์ ๋ฐํํด์ฃผ์ ๊น๋จ์ค๋๊ณผ ์ด๋์ฑ๋์ด ์คํ์ ๊ฒ์คํธ๋ก ์ฐธ์ฌํ์ฌ ๊ฐ๋ฐ์๋ค์ Q&A ํ ํฌ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค!
ํนํ ์ค๋ฌด์์์ ๊ฒฝํ๊ณผ ๋ฐฐ๊ฒฝ์ง์์ ๋ฐํ์ผ๋ก ํ ๋ต๋ณ๋ค์ด ์ธ์์ ์ด์๋๋ฐ์
Q: ์ ์ฐ ๊ด๋ จ ์ ๋ฌด์์ ํน๋ณํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ ๋ถ๋ถ์ ๋ฌด์์ธ๊ฐ์?
์ค์๊ฐ ํธ๋ํฝ ์ฒ๋ฆฌํ๋ ์ํฉ์ด ๋ง์๋๋ฐ ์ ์ฐ ๊ด๋ จ ๋๋ฉ์ธ์ ์ค๋ฅ๋ ์ค์ฐจ์ ์์ด ์ผ๋ถ ์ฉ์ธ์ด ๋ถ๊ฐ.
=> ๋๋์ ๋ฐ์ดํฐ ์ค์ฐจ๊ฐ ์๋๊ฒ ์๋ํ
=> ์๋ฆผ, ๋ก๊ทธ ๋ฑ ์ผ๋ง๋ ๊ผผ๊ผผํ, ์ผ๋ง๋ ํ๋ค๊ฒ ์ฒ๋ฆฌํ๋์ง ๊ฒช์ผ๋ฉด์..
Q: ์คํ๋ง ๋ฐฐ์น๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฒช์ ์ฅ์ ์ฌ๋ก๋ ๋ฌด์์ธ๊ฐ์?
yml ํ์ผ์์ ์ต์์์ ์๋๊ฒ ๋ฎ์ด์์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด์ DB์ ํ ์คํธํ๋ค๊ฐ ์ผ๋ถ ํ ์ด๋ธ์ ๋ ๋ฆฐ.. (๋ค์ผ๋ฉด์ ์ ๋ง ํํ๋ ์ฌ๋ก์์ต๋๋ค)
+์ง๊ธ ๊ด๋ จํ ์ค์ ์ฌ๋ก
Q: ๊ฐ๋ฐ์ ๊ด์ ์์ ํด์ฃผ๊ณ ์ถ์ ์ด์ผ๊ธฐ๊ฐ ์๋ค๋ฉด?
์ค์ง ์์ง๋์ด๋ง ์คํฌ๋ง ์ถ๊ตฌํ๊ธฐ๋ณด๋ค๋ ํ์ฌ์ ํ์ด ํ์๋ก ํ๋ ๋ถ๋ถ์ ๋ง์ถ ์ ์๋, ํ์ ๋ชฉํ๋ฅผ ์ํด ๊ฐ๊ฐ์์ด ๋ฌด์ธ๊ฐ ํ ์ ์๋ ํ๋ก๋ํธ ์์ง๋์ด๊ฐ ๋๊ธฐ ์ํ ๊ณ ๋ฏผํด๋ณด๊ธฐ (like ๋ฐฐ์ญ์ ์ด์ธ๋ฆฌ๋ ์ฐ๊ธฐ๋ฅผ ํ๋ ๋ฐฐ์ฐ)
๋ง๋ฌด๋ฆฌ๋ก๋ ๋ค์ํ ๋คํธ์ํน ์ด๋ฒคํธ๋ค์ด ์ค๋น๋์ด์์์ต๋๋ค~
์ ๋ฌผ ์ฆ์ ์ ์๊ฐ์๋ ์๋๋๊ณผ ๊ธฐ๋๋ ํ์ํด์ฃผ์ ์ฑ
์ด๋ ๋จธ๊ทธ์ปต์ ๋ฐ์๋๋ฐ์! (์ด๊ฒ์ ๊ฒ ํ์ํด์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค...!)
์ ๋ ์์ ์ฝํ๋ง์ ๊ด์ฌ์์ด์ ์ฝํ๋ฆฐ ์ฑ
์ผ๋ก ์ ํํ์ต๋๋คใ
ใ
ใ
๊ฒฝ์๋๊ป์ ์ค๋นํด์ฃผ์ ์ด๋ฒคํธ "๋์ ์ฑ์ฅ์ ๋ฐฉํดํ๋ ๋ฒฝ"์ด๋ผ๋ ์ฃผ์ ๋ก ๊ฐ์ ์์ ์ ๋ฐฉํดํ๋ ์์ธ์ ์ ๊ณ ๊ทธ๊ฒ์ ๊ตฌ๊ฒจ๋ฒ๋ฆฌ๋..ใ ใ ใ ์์ํ ์ฆ๊ฑฐ์๋ ๋๋ ์ ์์์ต๋๋ค
๋ง์ง๋ง์ผ๋ก๋ ํผ์๋ฅผ ๋จน์ผ๋ฉด์ ์คํฐ๋ ๊ตฌ์ฑ์๋ค๊ณผ ์ฌ๋ฌ ์ฌ๋ฏธ์๋ ์ด์ผ๊ธฐ๋ค์ ๋๋๋ฉฐ 8ํ์ฐจ ์คํฐ๋ ๋ชจ์์ด ๋์ด ๋ฌ์ต๋๋ค!
์ด์ ๋๋ฌ๊ฐ ๋ฌ๋ ค์จ ์คํ๋ง ๋ฐฐ์น ์คํฐ๋๋ ๋์ด ๋ฉ๋๋ค! ์คํ๋ง์ ๋ํ ์์ํ ๊ด์ฌ์ผ๋ก ์์ํ๋๋ฐ ์คํฐ๋ ๊ธฐ๊ฐ๋์ ๋ฐฐ์๊ฐ๋ ๊ฒ ์ ๋ง ๋ง์ ๊ฑฐ ๊ฐ์์ใ ใ
์คํ๋ผ์ธ ํ์ฌ ์ค๋นํด์ฃผ์ ๊ฒฝ์๋๊ป ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์คํ๋ง๋ฐฐ์น ์คํฐ๋๋ ๋ง์ง๋ง๊น์ง ํ์ดํ
์
๋๋ค ๐ฑ
8์ฃผ๋์ ํ์ฐ์ฐ ๋ ์ง์ง ๊ณผ์ ๋ ์ ์์ ์ถ, ์ถ์๋ 100% ๋๋ฌด ์ด์ฌํ ํด์ฃผ์ด์ ๊ณ ๋ง์์ ใ ใ
์คํฐ๋ ์ฐธ์ฌํ์๋ ๋ถ๋ค๊ป, ์ข์ ์คํฐ๋ ๊ธฐ์ต ๋จ๊ฒจ๋๋ฆฌ๊ณ ์ถ์๊ณ ,
์๋ก์ด ๋ถ๋ค๊ณผ์ ๋ง๋จ์ผ๋ก ์ธํด, ๋์๊ฒ ๋ฌด์ธ๊ฐ ๋ฐฐ์ธ ์ ์๋ ์ ์ ์ฐพ์ ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋๋ ๊ฒ์ ์ฐพ๋ ๊ธฐํ๋ก์ ์คํ๋ผ์ธ ๋ชจ์์ ์๊ฐํ๋๊ฒ ์๋๊ฐ ์ถ์ด์..
์ง๊ธ์ฒ๋ผ ๋๋ฌด ์ด์ฌํ ๊ณต๋ถํ๊ณ ๊พธ์คํ๊ฒ ํ๋ฉด ๋ด๋ ์ ์ง์ง ๋ณธ์ธ์ด ์ํ๋๊ณณ ๊ผญ ์ด๋ฃฐ ์ ์์๊บผ๋ผ ๋ฏฟ์ด ์์ฌ์น ์์์...
ํ์ดํ ์ด๊ณ , ์ดํ์๋ ๊พธ์คํ ์ธ์ฌํด์!!