๋Œ€๊ทœ๋ชจ ์ผ๊ด„ ํŒŒ์ดํ”„๋ผ์ธ ๊ถŒ์žฅ์‚ฌํ•ญ

์ด ๋ฌธ์„œ์—์„œ๋Š” ๋Œ€๊ทœ๋ชจ ์ผ๊ด„ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ž‘์—… ์‹คํŒจ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์›Œํฌ๋กœ๋“œ ์‹คํŒจ๋Š” ๋ณต๊ตฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์œผ๋กœ ์ธํ•ด ํŠนํžˆ ์˜ํ–ฅ๋ ฅ์ด ํฝ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‹œ๋„ํ•˜๋ฉด ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ๋งŽ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ผ๊ด„ ํŒŒ์ดํ”„๋ผ์ธ ์‹คํŒจ๋ฅผ ์ค„์ด๋ ค๋ฉด ์ด ํŽ˜์ด์ง€์˜ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋”ฐ๋ฅด์„ธ์š”. ์‹คํŒจํ•œ ์š”์†Œ์™€ ํŒŒ์ดํ”„๋ผ์ธ ์‹คํŒจ๋ฅผ ํ•ญ์ƒ ์™„๋ฒฝํ•˜๊ฒŒ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ œ๊ณต๋œ ๊ธฐ๋ฒ•์€ ๋ณต์›๋ ฅ ํ–ฅ์ƒ, ์‹คํŒจ ๋น„์šฉ ๊ฐ์†Œ, ์‹คํŒจ ๋ฐœ์ƒ ์‹œ ์‹คํŒจ๋ฅผ ๋”์šฑ ์‰ฝ๊ฒŒ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ๊ถŒ์žฅ์‚ฌํ•ญ์€ Dataflow ํŒŒ์ดํ”„๋ผ์ธ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Œ€๊ทœ๋ชจ ์ž‘์—…์„ ์œ„ํ•ด ์†Œ๊ทœ๋ชจ ์‹คํ—˜ ์‹คํ–‰

๋Œ€๊ทœ๋ชจ ์ผ๊ด„ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ ์„ธํŠธ ํ•˜์œ„ ์ง‘ํ•ฉ์—์„œ ์†Œ๊ทœ๋ชจ ์ž‘์—…์„ ํ•˜๋‚˜ ์ด์ƒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ ์˜ˆ์ƒ ๋น„์šฉ์„ ํŒŒ์•…ํ•˜๊ณ  ์ž ์žฌ์ ์ธ ์žฅ์• ์ ์„ ์ฐพ๋Š” ๋ฐ ๋ชจ๋‘ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ ๋น„์šฉ

์‹คํ—˜์„ ์‹คํ–‰ํ•˜๋ฉด ์ด ์ž‘์—… ์‹คํ–‰ ๋น„์šฉ์— ๋Œ€ํ•œ ์˜ˆ์ƒ ํ•˜ํ•œ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘์—… ๋น„์šฉ ๊ณ„์‚ฐ์‹์€ cost of test job*size(full dataset)/size(test dataset)์ž…๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์— ๋”ฐ๋ผ ๋น„์šฉ์ด ์ดˆ์„ ํ˜•์œผ๋กœ ํ™•์žฅ๋˜๊ฑฐ๋‚˜ ๋“œ๋ฌผ๊ฒŒ ์„ ํ˜•์œผ๋กœ ํ™•์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ์ž‘์—… ๋น„์šฉ์„ ๋Œ€๋žต์ ์œผ๋กœ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ž…๋ ฅ ํฌ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜์—ฌ ๋น„์šฉ์ด ํ™•์žฅ๋˜๋Š” ๋ฐฉ์‹์„ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ณ„์† ์ง„ํ–‰ํ• ์ง€ ์•„๋‹ˆ๋ฉด ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ดํ”„๋ผ์ธ์„ ์žฌ๊ตฌ์„ฑํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์žฅ์• ์  ์ฐพ๊ธฐ

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

  • ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์˜ ๋‹ค ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋ถ€ํ•˜๊ฐ€ ๋†’๊ฑฐ๋‚˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ํฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ(OOM) ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ OOM ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ตœ์ข… ์ž‘์—…์— ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ธ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๊ฐ์†Œํ•˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ ๋กœ๊ทธ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์›์ธ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋‹จ๋œ ์š”์†Œ๋‚˜ ํŠนํžˆ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋ถ€๋ถ„์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ œํ•œ ์‹œ๊ฐ„์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ์˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ ˆ์ฝ”๋“œ์— ์ œํ•œ ์‹œ๊ฐ„ ์ ์šฉ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • Dataflow ํƒœ์Šคํฌ์—์„œ์˜ ํŒŒ์ดํ”„๋ผ์ธ ์„ฑ๋Šฅ์ด ๋กœ์ปฌ์—์„œ ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ ๋กœ์ง์„ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ์›์ธ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Dataflow์—์„œ ์ฝ”์–ด 8๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋กœ์ปฌ์—์„œ ์ฝ”์–ด 1๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๊ฐ™์œผ๋ฉด ๋ฆฌ์†Œ์Šค ๊ฒฝํ•ฉ์œผ๋กœ ์ธํ•ด ์ž‘์—…์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ด ์˜ˆ์ƒ๋ณด๋‹ค ์ข‹์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    • ๋‹ค์–‘ํ•œ ๋จธ์‹  ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ์œผ๋กœ ์‹คํ—˜์„ ๋” ๋งŽ์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ์ปฌ์—์„œ ์ฝ”์–ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ๋กœ ๋ฐฐํฌํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ดํ”„๋ผ์ธ์— Dataflow ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ์ด๋ฅผ ๋”ฐ๋ผ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

ํŒŒ์ดํ”„๋ผ์ธ์€ ๋Œ€๋ถ€๋ถ„์˜ ์ž…๋ ฅ ์š”์†Œ์—์„œ ์„ฑ๊ณตํ•˜์ง€๋งŒ ์ž…๋ ฅ ํ•˜์œ„ ์ง‘ํ•ฉ ์ผ๋ถ€์—์„œ๋Š” ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์†Œ๊ทœ๋ชจ ์‹คํ—˜์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์ž…๋ ฅ ํ•˜์œ„ ์ง‘ํ•ฉ๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Dataflow๋Š” ์ด๋Ÿฌํ•œ ์‹คํŒจํ•œ ํƒœ์Šคํฌ๋ฅผ ์ผ๊ด„ ๋ชจ๋“œ์—์„œ๋Š” 4๋ฒˆ, ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋“œ์—์„œ๋Š” ๋ฌด์ œํ•œ์œผ๋กœ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด„ ๋ชจ๋“œ์—์„œ๋Š” ์žฌ์‹œ๋„ ํ•œ๋„์— ๋„๋‹ฌํ•˜๋ฉด ์ „์ฒด ์ž‘์—…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ชจ๋“œ์—์„œ๋Š” ๋ฌด๊ธฐํ•œ์œผ๋กœ ์ •์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์ž‘์—…์—์„œ ์ด๋Ÿฌํ•œ ์‹คํŒจ ์š”์†Œ๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ œ์™ธํ•˜๊ณ  ๋ฐ๋“œ ๋ ˆํ„ฐ ํ(์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€ ํ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜๋จธ์ง€ ์ž‘์—…์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋Š” ์‹คํŒจํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ์ถœ๋ ฅ PCollection์— ์ „๋‹ฌํ•˜๋ฉฐ ์ด ์ถœ๋ ฅ์€ ๊ธฐ๋ณธ ์ถœ๋ ฅ๊ณผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •์ฑ…์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ ˆ์ฝ”๋“œ๋ฅผ Pub/Sub์— ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๊ฒ€์‚ฌ ๋ฐ ์ •๋ฆฌํ•œ ํ›„์— ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ Apache Beam ๋ณ€ํ™˜์—์„œ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Java์—์„œ๋Š” ErrorHandler ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Python์—์„œ๋Š” with_exception_handling ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ณ€ํ™˜์—๋Š” ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋ฅผ ์ •์˜ํ•˜๋Š” ์ปค์Šคํ…€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ ๋ณ€ํ™˜ ๋ฌธ์„œ์—์„œ ์ด ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์— ๋ฐ๋“œ ๋ ˆํ„ฐ ํ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž‘์—…์ด ๋ฐ๋“œ ๋ ˆํ„ฐ ํ์˜ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ด ๋ฌธ์„œ์˜ ์ œํ•œ์‚ฌํ•ญ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐ๋“œ ๋ ˆํ„ฐ ํ ์ œํ•œ์‚ฌํ•ญ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๊ฐ€ ๋„์›€์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ „์ฒด ์ž‘์—…์ž ๋˜๋Š” DoFn ์ˆ˜๋ช…์ฃผ๊ธฐ ์‹คํŒจ. ์ „์ฒด ์ž‘์—…์ž๋‚˜ ๋ฒˆ๋“ค์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋ฐ๋“œ ๋ ˆํ„ฐ ํ์—์„œ ์‹คํŒจ๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ(OOM) ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด VM์˜ ๋ชจ๋“  ํ™œ์„ฑ ํƒœ์Šคํฌ๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์žฌ์‹œ๋„๋˜๋ฉฐ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐํ•ฉ ๋˜๋Š” ๊ธฐํƒ€ ์ง‘๊ณ„. ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋ชจ๋“  ์ž…๋ ฅ ์š”์†Œ๊ฐ€ ๊ฒฐ๊ณผ์˜ ์ผ๋ถ€๋กœ ์กด์žฌํ•˜๊ณ  ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๊ณ„์‚ฐ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๋‹จ๊ณ„ ์ „์— ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ผ๋ถ€๊ฐ€ ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์–ป๋Š” ๋Œ€์‹  ์ •ํ™•์„ฑ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ๋“œ ๋ ˆํ„ฐ ํ ๊ฒฝ๋กœ์—์„œ ์‹คํŒจ. ์š”์†Œ๊ฐ€ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ ์‹ฑํฌ๋กœ ์ „์†ก๋˜๋Š” ๋™์•ˆ์— ์‹คํŒจํ•˜๋ฉด ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹คํŒจ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ฐ๋“œ ๋ ˆํ„ฐ ํ ๋กœ์ง์„ ์ตœ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ธฐ ๋‹จ๊ณ„(wait class ์ฐธ์กฐ)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ ์š”์†Œ๋ฅผ ์“ฐ๊ธฐ ์ „์— ๊ธฐ๋ณธ ์ž…๋ ฅ์ด ์™„๋ฃŒ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๊ณ  ํŒŒ์ดํ”„๋ผ์ธ์˜ ์˜ค๋ฅ˜ ์‹ ํ˜ธ๋ฅผ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„์ ์œผ๋กœ ๋ณ€ํ™˜๋œ ์š”์†Œ. ํŒŒ์ดํ”„๋ผ์ธ ์ค‘๊ฐ„์— ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๊ฐ€ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ณ€ํ™˜๋œ ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์›๋ž˜ ์š”์†Œ์— ์•ก์„ธ์Šคํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์š”์†Œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์š”์†Œ์— ๋Œ€ํ•ด ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ฐ๋“œ ๋ ˆํ„ฐ ํ์˜ ์ถœ๋ ฅ์„ ์›๋ž˜ ์š”์†Œ์™€ ์ƒํ˜ธ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹ค๋ฅธ ๋กœ์ง์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ณ€ํ™˜๋œ ์š”์†Œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๊ด€๋˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์š”์†Œ๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๊ณ  ๊ฐ ๋ธŒ๋žœ์น˜์—์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์š”์†Œ๋ฅผ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ๋‹จ์ผ ์ž…๋ ฅ ์š”์†Œ๊ฐ€ ํ•œ ๋ธŒ๋žœ์น˜, ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜, ๋‘ ๋ธŒ๋žœ์น˜ ๋ชจ๋‘๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๊ฑฐ๋‚˜ ์–ด๋А ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด์„œ๋„ ์ „์†ก๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ ˆ์ฝ”๋“œ์— ์ œํ•œ ์‹œ๊ฐ„ ์ ์šฉ

๋น„์šฉ์ด ๋” ๋งŽ์ด ๋“ค๊ฑฐ๋‚˜ ๊ต์ฐฉ ์ƒํƒœ์™€ ๊ฐ™์ด ๋ฌด์‘๋‹ต์˜ ์›์ธ์ด ๋˜๋Š” ์ œํ•œ์— ๋„๋‹ฌํ•œ ์†Œ์ˆ˜์˜ ์š”์†Œ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‘๋‹ต์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๋ณ€ํ™˜์—์„œ๋Š” ์ œํ•œ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๊ณ  ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์‚ฌ์šฉ์ž ์ฝ”๋“œ DoFn์—์„œ ํƒ€์ž„์•„์›ƒ๋œ ์š”์†Œ๋ฅผ ์‹คํŒจํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Python์˜ with_exception_handling ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋“œ ๋ ˆํ„ฐ ํ์™€ ์ œํ•œ ์‹œ๊ฐ„์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ •์ƒ ์š”์†Œ๋ฅผ ๊ณ„์† ์ฒ˜๋ฆฌํ•˜๊ณ  ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์š”์†Œ๋ฅผ ๋ณ„๋„๋กœ ๋‹ค์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ•œ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ DoFn ์ž‘์—…์„ ํ™•์ธํ•˜๋ ค๋ฉด ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์†Œ๊ทœ๋ชจ ์‹คํ—˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ง ์ž๋™ ํ™•์žฅ ์‚ฌ์šฉ ์„ค์ •

์ž‘์—…์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ์ž˜ ๋ชจ๋ฅด๊ฑฐ๋‚˜ ์ž‘์—…์ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์œ„ํ—˜์— ๋…ธ์ถœ๋๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ˆ˜์ง ์ž๋™ ํ™•์žฅ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํŒŒ์ดํ”„๋ผ์ธ์ด ๋Œ€๊ทœ๋ชจ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ๋งค์šฐ ํฐ ์š”์†Œ๊ฐ€ ์žˆ์„ ๋•Œ OOM ์‹คํŒจ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

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

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด ํŒŒ์ดํ”„๋ผ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์ผ๋ถ€ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ํŠนํžˆ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜์˜ ๊ทผ๋ณธ ์›์ธ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์ง€๋งŒ ์‹คํŒจ๋กœ ์ธํ•œ ๋น„์šฉ์„ ์ค„์ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ค‘๊ฐ„ ๊ฒฐ๊ณผ ๊ตฌ์ฒดํ™”

ํŒŒ์ดํ”„๋ผ์ธ์—๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ขŒ์šฐํ•˜๋Š” ํŠนํžˆ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ณ€ํ™˜์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™˜ ํ›„์— ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจํ•˜๋ฉด ์ด๋ฏธ ์™„๋ฃŒ๋œ ๋ชจ๋“  ์ž‘์—…์ด ์†์‹ค๋˜๋ฏ€๋กœ ํŠนํžˆ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ๋œ ์ค‘๊ฐ„ PCollections๋ฅผ Cloud Storage์™€ ๊ฐ™์€ ์‹ฑํฌ์— ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ ์‹คํŒจ ๋น„์šฉ์„ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์ ๊ณผ ์ถ”๊ฐ€ ์“ฐ๊ธฐ ์ˆ˜ํ–‰ ๋น„์šฉ์„ ๋น„๊ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์ด ๊ตฌ์ฒดํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์›๋ž˜ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ๋Š” ํŒŒ์ดํ”„๋ผ์ธ ํ•˜๋‚˜์™€ ์ฝ๋Š” ํŒŒ์ดํ”„๋ผ์ธ ํ•˜๋‚˜ ๋“ฑ ์ด 2๊ฐœ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ์—๋งŒ ์›๋ž˜ ์†Œ์Šค์™€ ๊ตฌ์ฒดํ™”๋œ ์ค‘๊ฐ„ ๋ชจ์Œ ๋ชจ๋‘์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ณ  ํ‰๋ฉดํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ตฌ์ฒดํ™”๊ฐ€ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ ์ „์— ์ž‘์„ฑ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด ํ›„์† ์ฒ˜๋ฆฌ ๋‹จ๊ณ„ ์ „์— ๋Œ€๊ธฐ ๋‹จ๊ณ„(wait class ์ฐธ์กฐ)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.