SHORTCUT
๋ฐ์ํ
์คํ๋ง ๋ฐฐ์น
- ๋ฐฐ์น๋? ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ๋๋ก ๊ฐ๊ณตํด์ ์ฒ๋ฆฌํ๋ ์๋ํ๋ ํ๋ก์ธ์ค
- ๋ฐฐ์น๋ ์ผ๋ฐ์ ์ผ๋ก
์ฝ๊ธฐ->์ฒ๋ฆฌ->์ฐ๊ธฐ
์ 3๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ๋ฐฐ์น(batch) = ์ผ๊ด ์ฒ๋ฆฌ = ํฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
- ๋ฐฐ์น ์๋น์ค๋ ๋ค์์ ํน์ง์ด ์กด์ฌํจ
- ๋์ฉ๋ ๋ฐ์ดํฐ : ๋ฐฐ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ ๋ฌํ๊ฑฐ๋, ๊ณ์ฐ ๋ฑ์ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํจ
- ์๋ํ : ์ฌ์ฉ์์ ๊ฐ์ ์์ด ์คํ๋์ด์ผ ํจ
- ๊ฒฌ๊ณ ์ฑ, ์ ๋ขฐ์ฑ, ์ฑ๋ฅ ... ๋งํฌ
JOB
- job์ ๋ฐฐ์น ์ฒ๋ฆฌ ๊ณผ์ ์ ํ๋์ ๋จ์๋ก ๋ง๋ค์ด ํํํ ๊ฒ
- ์ต์๋จ ๊ณ์ธต์ ์กด์ฌํจ
- ํ๋์ Job์์๋ ์ฌ๋ฌ Step(๋จ๊ณ)๊ฐ ์์
- ์ฆ, ์ฌ๋ฌ Step์ ํฌํจํ๋ ์ปจํ ์ด๋
- Job ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋น๋๋ ์ฌ๋ฌ๊ฐ๊ฐ ์์ผ๋, ์ฌ๊ธฐ์ JobBuilderFactory๋ฅผ ์ฌ์ฉํจ
@Bean(name = JOB_ID)
public Job nameJob(
@Qualifier(JOB_ID + ".step1") Step step1
){
ย ย return jobBuilderFactory.get(JOB_ID)
ย ย ย .start(step1)
ย ย ย .build();
}
JobBuilderFactory๋ฅผ ํตํด Job ์์ฑ์ ํ ๋ค, Step์ ์ฃผ์ ๋ฐ๋๋ค.
Step
@Bean(name = JOB_ID)
public Step nameStep1(){
ย ย return stepBuilderFactory.get(JOB_ID + ".step1")
ย ย ย .allowStartIfComplete(true)
ย ย ย .tasklet(์คํํ๋ ค๋SQL๋ฉ์๋)
ย ย ย .build();
}
- stepBuilderFactory๋ฅผ ํตํด ์คํ ์ ์์ฑํจ
- ๋ฐฐ์น์์ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋จ์๋ก, ์คํ ์ ์ก์ ๊ตฌ์ฑํ๋ ๋ ๋ฆฝ๋ ์์ ๋จ์์
- ์คํ ์๋ Tasklet, Chunk ๊ธฐ๋ฐ์ผ๋ก ๋๊ฐ์ง๊ฐ ์กด์ฌํจ
Tasklet
- ์คํ ์ด ์ค์ง๋ ๋๊น์ง execute๋ฅผ ๊ณ์ ๋ฐ๋ณตํด์ ์ํํจ
- ์ด๊ธฐํ, ์ ์ฅ ํ๋ก์์ ์คํ, ์๋ฆผ ์ ์ก๊ณผ ๊ฐ์ ์ก์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋จ
- Job์ ์ฌ๋ฌ๊ฐ์ Step์ผ๋ก ๊ตฌ์ฑ๋๊ณ , Step์ Tasklet(๊ธฐ๋ฅ)์ผ๋ก ๊ตฌ์ฑ๋จ
- ๋ฐฐ์น ์์ ํ๋ = Job
@Bean(name = JOB_ID + ".NaverTotalEpEqlInfTasklet")
public Tasklet naverTotalEpEqlInfTasklet(){
ย ย return new NaverTotalEpEqlInfTasklet();
}
Chunk
- ์์ดํ ๊ธฐ๋ฐ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ค.
์ฐธ๊ณ
์๊ฐ ์ ๋ฆฌ
- ๋ฐฐ์น๋ ํ ๋ง๋๋ก,
ํน์ ์ฃผ๊ธฐ๋ก ์๋์ผ๋ก ์คํ๋๋ ํ๋ก๊ทธ๋จ
์ ๋๋ค!
- ์ธ์ ์ฌ์ฉ ๋ ๊น์?
- ํ์ ํํด ์, ํน์ ๋ฐ์ดํฐ(์ฃผ๋ฌธ ๋ด์ญ ๋ฑ)๋ฅผ ์ญ์ ํด์ผ ํ๋ค๊ณ ๊ฐ์ ํฉ์๋ค. ๋ง์ฝ A ํ์์๊ฒ 1๋ง๊ฑด์ ์ฃผ๋ฌธ์ด ์กด์ฌํ๋ค๋ฉด ์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ์ง์. ๊ทธ๋ฆฌ๊ณ ์ด์ ๊ฐ์ ํ์ 100๋ช ์ด ๋ชจ๋ ํฉ์ฌํ์ฌ, ์ ์ ๋ค์ ์ ์์ด ํ๋ฐํ ์ ๋ 7์์ ํํด๋ฅผ ํ๊ฒ ๋๋ค๋ฉด? ์๋ฒ์ ๋ถํ๊ฐ ๋ฐ์ํ์ฌ ์๋น์ค์ ์ํฅ์ ์ฃผ๊ฒ ๋๊ฒ ์ง์.
- ์ด๋ฐ ์ํฉ์์ ํํดํ ์ ์ ์๊ฒ ํํด์ ๋ํ
์ํ๊ฐ
ํน์ํํด ์ผ์
๋ง ์ง์ ์ ํด์ฃผ์ด ๋ชจ๋ ๋ก์ง์์ ์ ์ธ์ฒ๋ฆฌ๋ฅผ ์์ผ๋ฒ๋ฆฌ๊ณ . ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ๊ฒ์ ์ ์ ๋ค์ ์ ์๋์ด ์ ์ ์๋ฒฝ ์๊ฐ๋๋ฅผ ํ์ฉํ์ฌ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํด๋ฒ๋ฆฐ๋ค๋ฉด, ์๋น์ค์ ์ผ๋ก ๋์ฑ ์์ ์ ์ผ๋ก ๋ ๊ฒ ์ ๋๋ค.
- ์ฆ,
์ ์ ์ ์ ์ ์ด ์ ์ ์๋ฒฝ 2์(ํน์ ์๊ฐ)์ ํํด ์ ์ ์ ์ฃผ๋ฌธ๋ด์ญ ์ญ์ (ํน์ ํ๋)๋ฅผ ๋งค์ผ(ํน์ ์ฃผ๊ธฐ๋ณ๋ก) ์คํํด๋ผ.
์ ๊ฐ์ด ์ง์ ํ๋ ๊ฒ์ ๋ฐฐ์น๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
์ค์ ๋ก ์ ์ ํํด์ ๊ณง๋ฐ๋ก ๋ฐ์ดํฐ๋ค์ด ์ญ์ ๋ฉ๋๋ค ๐
- ์ถ๊ฐ์ ์ผ๋ก ๋ฐฐ์น๋ ์ค๋ฌด์์ ๋ง์ ๊ฒ๋ค ํธํ๊ฒ ํด์ค๋๋ค.
- ์ค์๊ฐ์ผ๋ก ํน์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ ๋, ํด๋น ์ฒ๋ฆฌ ๊ฒฐ๊ณผ์ ๋ํ ๋ณด์ฅ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์๋๋ค๋ฉด? โ ๋ฐฐ์น๋ก ์คํจํ ๊ฒฐ๊ณผ๋ค์ ๋ํด์ ์ฌ์คํ์ ์ค์ํ์ฌ ์ปค๋ฒ๋ฅผ ํ ์ ์์ต๋๋ค.
- ๋ฐฐ์น๋ ์คํจ ๋ก๊ทธ๋ฅผ ์์ ์ ์์ผ๋ฏ๋ก, ๊ฒฐ๊ณผ์ ๋ํ ํ์ธ์ด ๊ฐ๋ฅํด์ง๋๋ค.
๋ฐ์ํ