Spring Batch

YeJi Kimยท2023๋…„ 4์›” 16์ผ
0

SPRING

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

๐Ÿ“ 10๋ถ„ ํ…Œ์ฝ”ํ†ก - ๋ผ๋นˆ์˜ Spring Batch๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค.


batch์˜ ๊ธฐ๋ณธ ์ •์˜๋Š” (์ผ๊ด„์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด) ํ•จ๊ป˜ ๋ฌถ๋‹ค์ด๋‹ค.
โ‡’ ๊ฐœ๋ฐœ์— ์ ์šฉํ•ด๋ณด๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •์˜ํ•œ ์ž‘์—…์„ ํ•œ๋ฒˆ์— ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.

๋ฐฐ์น˜๋ฅผ ์ ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€

  • ๋งค์ถœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•œ ์ผ๋งค์ถœ ์ง‘๊ณ„
  • ๋งค์šฐ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ๋ณดํ—˜๊ธ‰์—ฌ ๊ฒฐ์ •
  • ํŠธ๋žœ์žญ์…˜ ๋ฐฉ์‹์œผ๋กœ ํฌ๋งท, ์œ ํšจ์„ฑ ํ™•์ธ ๋ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋‚ด๋ถ€ ๋ฐ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์—์„œ ์ˆ˜์‹ ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋ก ์‹œ์Šคํ…œ์œผ๋กœ ํ†ตํ•ฉ ๋“ฑ๋“ฑ

์ด ์žˆ๋‹ค.


๋ผ๋นˆ ๋‹˜์€ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ–ˆ์„๊นŒ?

  • ๋Œ€์šฉ๋Ÿ‰์˜ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ํฌ๋กค๋งํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
    • ์‚ฌ์šฉ์ž์˜ ์ ‘์†์ด ๊ฑฐ์˜ ์—†๋Š” ์‹œ๊ฐ„๋Œ€์— ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์น˜๋ฅผ ์ ์šฉ
  • ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ๊ตฌ๋…์„ ์‹ ์ฒญํ•œ ํšŒ์›์—๊ฒŒ ์ผ๊ด„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
    • ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์—ด๋žŒํ•˜๋Š” ๋“ฑ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์€?

  • ์ผ์ • ์ฃผ๊ธฐ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ
  • ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์šด ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ

โ‡’ ์ด๋Ÿฐ ์ž‘์—…์„ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ˆ˜ํ–‰ํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•œ๋‹ค.


๋ฐฐ์น˜์™€ ์Šค์ผ€์ฅด๋Ÿฌ์˜ ์ฐจ์ด

  • ๋ฐฐ์น˜์˜ ๋Œ€ํ‘œ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ: Spring Batch
  • ์Šค์ผ€์ฅด๋Ÿฌ์ด ๋Œ€ํ‘œ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ: Quartz

์Šค์ผ€์ฅด๋ง์ด๋ž€?

  • ๋งค ์‹œ๊ฐ„/์ง€์ •ํ•œ ์‹œ๊ฐ„์— ์ง€์ •ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์Šคํ”„๋ง ๋ฐฐ์น˜๋Š” ์Šค์ผ€์ค„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋‹ค๋ผ๋Š” ๋ง์ด ์žˆ๋‹ค.
  • ๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ ˆ๋Œ€์  ๋ชฉ์ ์€ ๋Œ€์˜๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์ด๋‹ค.
  • ๋ฐฐ์น˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์Šค์ผ€์ค„๋ง ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์Šค์ผ€์ค„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฐฐ์น˜๋ฅผ ๋„์™€์ฃผ๋Š” ๋ณด์™„์ œ ์—ญํ• ์ด๋‹ค.

๋ฐฐ์น˜์˜ ๋„๋ฉ”์ธ ์šฉ์–ด

  • ๋ฐฐ์น˜ ์ž‘์—…์„ Job์ด๋ผ๊ณ  ํ•˜๊ณ  Job์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ JobLauncher๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ Job์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Step์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๊ณ  Step์€ ItemReader, ItemProcessor, ItemWriter๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.
  • Job Launcher์™€ Job Step์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” JobRepository๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

  • ํ•˜๋‚˜์˜ Job์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ JobInstance๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์‹คํ–‰ํ•œ ๋‚ ์งœ๊ฐ€ JobParameter๊ฐ€ ๋œ๋‹ค. JobParameter๋ฅผ ๊ฐ€์ง€๊ณ  JobInstance๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • JobInstance๋“ค์€ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ JobExecution์ด๋ผ๋Š” ๊ฐ์ฒด๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • batch ์ž‘์—…์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๋Š” JobExecution์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ฉด JobExecution์€ BatchStatus์™€ ExitStatus๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค.

๋‹ค์Œ์œผ๋กœ Step์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

Job์€ ํ•˜๋‚˜ ์ด์ƒ์˜ Step์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๊ณ  ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Step์€ StepExecution์ด๋ผ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๊ณ  JobExecution์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ StepExecution์„ ๊ฐ–๋Š” ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.


Step

  • ๋ฐฐ์น˜ ์ž‘์—…์˜ ๋…๋ฆฝ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ ๋‹จ๊ณ„๋ฅผ ์บก์Šํ™”ํ•˜๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด
  • ๋ชจ๋“  Job์€ ํ•˜๋‚˜ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ Step์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • Step์˜ ๋‚ด์šฉ์€ ๊ฐœ๋ฐœ์ž์˜ ์žฌ๋Ÿ‰์ด๋ฏ€๋กœ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ StepExecution๋„ ๋‘ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • JobRepository๋Š” Job, Step ๊ตฌํ˜„์„ ์œ„ํ•œ CRUD ์ž‘์—…์„ ์ œ๊ณตํ•œ๋‹ค.
    โ‡’ JobExecution๊ณผ StepExecution์ด ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ผ์„ ํ•œ๋‹ค.

  • JobLauncher๋Š” Job์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ๊ตฌํ˜„ ์‹œ JobRepository์—์„œ ์œ ํšจํ•œ JobExecution์„ ํš๋“ํ•˜๊ณ  Job์„ ์‹คํ–‰ํ•œ๋‹ค.
    โ‡’ JobLauncher์˜ ๊ฒฝ์šฐ์—๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ์—๊ฒŒ ์ œ๊ณต๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • SpringBatch๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋“ค์„ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.


  • ๋ฐฐ์น˜์— ์ •์˜ํ•œ ์ž‘์—…์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•˜๋‚˜์˜ row๊ฐ€ ํ•˜๋‚˜์˜ ์•„์ดํ…œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • Step์€ itemReader, itemWriter, itemProcessor๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • itemReader๋Š” Step์—์„œ ์•„์ดํ…œ์„ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์˜ค๋Š” ๊ฐ์ฒด์ด๋‹ค.
  • ์ž๋ฐ”์—์„œ SpringBatch๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ null์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— Optional๋กœ ๊ฐ์ฒด๋ฅผ ํ•œ๋ฒˆ ๋” ๊ฐ์‹ธ๋Š” ๋น„์šฉ์„ ๊ฐ์ˆ˜ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • Spring Batch๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ JobLauncher์™€ JobRepository๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— Job๊ณผ Step์— ์ง‘์ค‘ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.


  • Job์€ Step์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  Step์€ Tasklet์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • Tasklet์€ โ€˜์ต๋ช… Taskletโ€™๊ณผ โ€˜Chunk Oriented Taskletโ€™ ์ด๋ ‡๊ฒŒ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.
  • SpringBatch๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด Chunk Oriented Tasklet์„ ์ข€ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

  • Chunk-oriented Processing์€ Step์—์„œ itemReader์™€ itemProcessor์— ๋Œ€ํ•œ ์ž‘์—…์„ chunk ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • chunk๋ž€ ๊ฐ ์ปค๋ฐ‹ ์‚ฌ์ด์— ์ฒ˜๋ฆฌ๋  row(item)์˜ ์ˆ˜์ด๋‹ค. ์„ฑ๊ณต ์‹œ chunk๋งŒํผ ์ปค๋ฐ‹, ์‹คํŒจ ์‹œ chunk๋งŒํผ ๋กค๋ฐฑ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.
  • itemWriter์—์„œ๋Š” itemReader์™€ itemProcessor์—์„œ ์ฒ˜๋ฆฌํ•œ item์„ chunk ๋‹จ์œ„๋งŒํผ ์Œ“์•„์„œ chunk๋ฅผ ํ•œ๋ฒˆ์— writeํ•œ๋‹ค.

์ž๋ฐ”๋กœ ์ดํ•ดํ•ด๋ณด์ž๋ฉด commitInterval์ด chunk์˜ size๋ฅผ ์˜๋ฏธํ•œ๋‹ค. chunkInterval ๋งŒํผ ์•„์ดํ…œ์ด ์Œ“์˜€๋‹ค๋ฉด write๋ฅผ ํ•œ๋ฒˆ์— ์ง„ํ–‰ํ•œ๋‹ค.


  • itemReader๋Š” Cursor์™€ Paging ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • Cursor๋Š” ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ปค๋„ฅ์…˜์„ ๊ณ„์† ์œ ์ง€ํ•œ ์ฑ„ ์•„์ดํ…œ์„ ํ•˜๋‚˜์”ฉ ๋ฝ‘์•„์˜ค๋Š” ์ž‘์—…์ด๋‹ค.
  • Paging์€ ํ•œ๋ฒˆ ์ปค๋„ฅ์…˜์„ ํ•  ๋•Œ ์ •์˜ํ•œ ํŽ˜์ด์ง€๋งŒํผ ์•„์ดํ…œ์„ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

itemReader์˜ Paging ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


  • ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๋งŒํผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋  ๋•Œ chunk ์‚ฌ์ด์ฆˆ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด write๋ฅผ ํ•˜๊ธฐ ์ „์— ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์—ฌ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฃผ์„์„ ์ฐธ๊ณ ํ•ด๋ณด๋ฉด chunk ์‚ฌ์ด์ฆˆ์™€ page ์‚ฌ์ด์ฆˆ๋ฅผ ๋™์ผํ•˜๊ฒŒ ํ•ด์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์“ฐ์—ฌ์ ธ ์žˆ๋‹ค.

  • ItemWriter๋Š” chunk ๋‹จ์œ„๋งŒํผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค.


  • Spring Batch๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋ฉด ํ•˜๋‚˜์˜ Job์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ Step์„ ์ •์˜ํ–ˆ์„ ๋•Œ ์ˆœ์ฐจ์ ์œผ๋กœ Step์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์ˆœ์„œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋˜ํ•œ ์กฐ์„  ๋ถ„๊ธฐ๋ฌธ์„ ํ†ตํ•ด Step์˜ ํ๋ฆ„์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์˜ํ•  ๋•Œ Tip์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์…‹์—…ํ•˜๊ณ  ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— QAํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๋ฐฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ ๋„๊ตฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Quartz ์Šค์ผ€์ค„๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋”ํ•˜์—ฌ ์Šค์ผ€์ค„์„ ๊ด€๋ฆฌํ•˜๋Š” Admin ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋˜ํ•œ ๋ณดํ†ต CI ํˆด์„ ์ด์šฉํ•ด์„œ๋„ ๋งŽ์ด ์šด์˜ํ•œ๋‹ค.



  • global properties๋ฅผ ์ด์šฉํ•ด์„œ ์†์‰ฝ๊ฒŒ ๊ณตํ†ต ์„ค์ •์„ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Chunk Oriented Processing์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด Chunk ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.



์š”์•ฝ

profile
์ด์ „์˜ ๊ธฐ๋ก๋“ค ๐Ÿ‘‰ https://blog.naver.com/reviewerkyj

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 4์›” 17์ผ

์Šคํ”„๋ง ๋ฐฐ์น˜ ์ž˜ ๋ชฐ๋ž๋Š”๋ฐ ์‹ ๊ธฐํ•˜๋„ค์š” ! ๋‹ด์— ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ์–ด์š”~ ๊ธ€ ์ž˜ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2023๋…„ 4์›” 18์ผ

์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ๋ชจ๋“ ๊ฒƒ์ด ์ •๋ฆฌ๋œ ๊ธฐ๋ถ„์ด ๋“ญ๋‹ˆ๋‹ค!!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ