Dataflow ์ž๋™ ํ™•์žฅ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Dataflow ์ž๋™ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ณ  ์ž๋™ ํ™•์žฅ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์ด ํ™•์žฅ ๋˜๋Š” ์ถ•์†Œ๋˜์ง€ ์•Š์Œ

์ด ์„น์…˜์—์„œ๋Š” ์ž‘์—…์ž๊ฐ€ ํ™•์žฅ ๋˜๋Š” ์ถ•์†Œ๋˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์ด ํ™•์žฅ๋˜์ง€ ์•Š์Œ

์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฐฑ๋กœ๊ทธ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ž‘์—…์ž๊ฐ€ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ฐฑ๋กœ๊ทธ๊ฐ€ ๋ช‡ ๋ถ„ ์ด์ƒ ์ง€์†๋˜๊ฑฐ๋‚˜ ์ž‘์—…์ž๊ฐ€ CPU๋ฅผ 20% ๋ฏธ๋งŒ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ฒฝ์šฐ์—๋Š” ๋ฐฑ๋กœ๊ทธ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ CPU ์‚ฌ์šฉ๋ฅ ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํƒœ์Šคํฌ์—๋Š” ๋†’์€ CPU ์‚ฌ์šฉ๋ฅ ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ž‘์—…์ž๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ Dataflow๊ฐ€ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ ์ด์œ ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒŒ์ดํ”„๋ผ์ธ์ด I/O ์ง‘์•ฝ์ ์ž…๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ธ์ด ์™ธ๋ถ€ RPC ํ˜ธ์ถœ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.
  • ํ•ซํ‚ค๋กœ ์ธํ•ด ์ž‘์—…์ž CPU ์‚ฌ์šฉ๋ฅ ์ด ๊ณ ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ดํ”„๋ผ์ธ์— ํ‚ค๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๊ด„ ๋ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์ด ํ™•์žฅ๋˜์ง€ ์•Š์Œ

์ผ๊ด„ ๋˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์ด ์˜ˆ์ƒ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€๋งŒ ์ž‘์—…์ž๊ฐ€ ๋” ํ•„์š”ํ•  ๋•Œ ์ž‘์—…์ด ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šคํ…Œ์ด์ง• ๋˜๋Š” ์ž„์‹œ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—…์— Cloud Storage ๋ฒ„ํ‚ท์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ตฌ์„ฑ์ด ๋ฒ„ํ‚ท์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ๋œ ๊ฐ์ฒด์—๋Š” ์Šคํ…Œ์ด์ง• ๋ฐ ์ž„์‹œ ํด๋”์™€ ํŒŒ์ผ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฒ„ํ‚ท์— ๋Œ€ํ•ด ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ตฌ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์‹œ์ž‘ ํ›„ ์Šคํ…Œ์ด์ง• ๋˜๋Š” ์ž„์‹œ ํด๋” ๋˜๋Š” ํŒŒ์ผ์ด ์‚ญ์ œ๋œ ๊ฒฝ์šฐ ์ƒˆ ์ž‘์—…์ž๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ฒ„ํ‚ท์—์„œ ํด๋” ๋ฐ ํŒŒ์ผ์„ ๋‹ค์‹œ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ ์ž‘์—…์ž๊ฐ€ ํ•„์š”ํ•œ TCP ํฌํŠธ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†ก ๋ฐ ์ˆ˜์‹ ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์œผ๋กœ ์ธํ•ด ์ž‘์—…์ž๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Dataflow ์ž‘์—…์ž๊ฐ€ TCP ํฌํŠธ 12345 ๋ฐ 12346์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์†ก์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•˜์—ฌ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Dataflow ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ์ปค์Šคํ…€ ์†Œ์Šค์— NULL ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” getProgress() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐฑ๋กœ๊ทธ ์ธก์ •ํ•ญ๋ชฉ์€ ์ปค์Šคํ…€ ์†Œ์Šค์˜ getProgress() ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. getProgress()์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์€ NULL ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด NULL ์ด์™ธ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ปค์Šคํ…€ ์†Œ์Šค๊ฐ€ ๊ธฐ๋ณธ getProgress() ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜์ง ์ž๋™ ํ™•์žฅ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋œ ์—…๋ฐ์ดํŠธ๋Š” ์ˆ˜ํ‰ ์ž๋™ ํ™•์žฅ์„ ์ผ์‹œ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ˆ˜ํ‰ ์ž๋™ ํ™•์žฅ์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • Python ํŒŒ์ดํ”„๋ผ์ธ์—์„œ map ์ž‘์—…์„ ์‚ฌ์šฉ ์ค‘์ด๊ณ  ์ž‘์—…์ด ํ™•์žฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํŒŒ์ดํ”„๋ผ์ธ ์ฝ”๋“œ์— Reshuffle ๋ณ€ํ™˜์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Apache Beam ๋ฌธ์„œ์—์„œ ๋‹ค์‹œ ์…”ํ”Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์ด ์ถ•์†Œ๋˜์ง€ ์•Š์Œ

์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์—์„œ ๋ฐฑ๋กœ๊ทธ ๋ฐ CPU ์‚ฌ์šฉ๋ฅ ์ด ๋‚ฎ์œผ๋ฉด ์ž‘์—…์ž๊ฐ€ ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ž‘์—…์— Streaming Engine์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด Dataflow๊ฐ€ ์ž‘์—…์ž ๊ฐ„์˜ ์˜๊ตฌ ๋””์Šคํฌ ์ˆ˜๋ฅผ ๊ท ํ˜•์ ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ž‘์—…์ž์˜ ์˜๊ตฌ ๋””์Šคํฌ๊ฐ€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 100๊ฐœ ๋””์Šคํฌ์™€ 100๊ฐœ ์ž‘์—…์ž๊ฐ€ ์žˆ์œผ๋ฉด ๊ฐ ์ž‘์—…์ž์— ํ•˜๋‚˜์˜ ๋””์Šคํฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ž๊ฐ€ ์ถ•์†Œ๋˜๋ฉด ์ž‘์—…์— 50๊ฐœ ์ž‘์—…์ž๊ฐ€ ํฌํ•จ๋˜๊ณ  ์ž‘์—…์ž๋ณ„๋กœ 2๊ฐœ์˜ ์˜๊ตฌ ๋””์Šคํฌ๊ฐ€ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 25๊ฐœ ์ž‘์—…์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์ž‘์—…์ž๋‹น 4๊ฐœ์˜ ์˜๊ตฌ ๋””์Šคํฌ๊ฐ€ ์‚ฌ์šฉ๋  ๋•Œ๊นŒ์ง€ ์ž‘์—…์ด ๋‹ค์‹œ ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž‘์—…์ž์˜ ์ตœ์†Œ ์ˆซ์ž๋Š” maxNumWorkers์— ํ• ๋‹น๋œ ๊ฐ’์„ 15๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ™•์žฅ ๋ฒ”์œ„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ์ž‘์—…์— ์ŠคํŠธ๋ฆฌ๋ฐ ์—”์ง„์ด ์‚ฌ์šฉ๋  ๋•Œ ์ถ•์†Œ ๋Œ€์ƒ์€ ๋Œ€์ƒ CPU ์‚ฌ์šฉ๋ฅ  75%๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด CPU ์‚ฌ์šฉ๋ฅ ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉด ์ถ•์†Œ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

  • ์ž‘์—…์ž ์ถ•์†Œ ์ „ ๋ฐฑ๋กœ๊ทธ ์‹œ๊ฐ„ ์ถ”์ •๊ฐ’์€ ์ตœ์†Œ 2๋ถ„ ๋™์•ˆ 10์ดˆ ๋ฏธ๋งŒ์œผ๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ๋กœ๊ทธ ์‹œ๊ฐ„์ด ๋ณ€๋™๋˜๋ฉด ์ถ•์†Œ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋‚ฎ์œผ๋ฉด ์‹œ๊ฐ„ ์ถ”์ •๊ฐ’์ด ์™œ๊ณก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • PeriodicImpulse๋Š” Apache Beam SDK ๋ฒ„์ „ 2.60.0 ์ด์ƒ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์ด Apache Beam SDK ๋ฒ„์ „ 2.59.0 ์ดํ•˜์—์„œ PeriodicImpulse๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Dataflow ์ž‘์—…์ž๊ฐ€ ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ ์ค‘์ง€

์ผ๊ด„ ๋˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์˜ ํ™•์žฅ์ด ์‹œ์ž‘๋˜์ง€๋งŒ ๋ฐฑ๋กœ๊ทธ๊ฐ€ ๋‚จ์•„ ์žˆ๋”๋ผ๋„ ์ž‘์—…์ž ํ™•์žฅ์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ํ• ๋‹น๋Ÿ‰ ํ•œ๋„์— ๋„๋‹ฌํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • Compute Engine ํ• ๋‹น๋Ÿ‰: Dataflow ์ž‘์—…์€ ํ”„๋กœ์ ํŠธ์˜ Compute Engine ํ• ๋‹น๋Ÿ‰์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ž‘์—…์ด ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๊ฐ€ Compute Engine ํ• ๋‹น๋Ÿ‰ ํ•œ๋„์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Dataflow๊ฐ€ ์ž‘์—…์ž ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CPU ํ• ๋‹น๋Ÿ‰: Dataflow ์ž‘์—…์€ ๋˜ํ•œ ํ”„๋กœ์ ํŠธ์˜ CPU ํ• ๋‹น๋Ÿ‰์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ž‘์—…์ž ์œ ํ˜•์— CPU๊ฐ€ 1๊ฐœ ๋„˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๊ฐ€ CPU ํ• ๋‹น๋Ÿ‰ ํ•œ๋„์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ IP ์ฃผ์†Œ ํ• ๋‹น๋Ÿ‰: ๋ฆฌ์†Œ์Šค์™€ ํ†ต์‹ ์„ ์œ„ํ•ด ์ž‘์—…์— ์™ธ๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์ž ์ˆ˜๋งŒํผ ๋งŽ์€ ์™ธ๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ž ์ˆ˜๊ฐ€ ํ™•์žฅ๋˜๋ฉด ์™ธ๋ถ€ IP ์ฃผ์†Œ ์ˆ˜๋„ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ํ•œ๋„์— ๋„๋‹ฌํ•˜๋ฉด ์ž‘์—…์ž ํ™•์žฅ์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์„ ํƒํ•œ ๋ฆฌ์ „์— ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋ฆฌ์ „ ๋˜๋Š” ํ”„๋กœ์ ํŠธ์— ๋‚จ์€ ํ• ๋‹น๋Ÿ‰์ด ์žˆ๋”๋ผ๋„ ํ•ด๋‹น ์œ ํ˜•์˜ ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด us-central1์— ์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ• ๋‹น๋Ÿ‰์ด ์•„์ง ๋‚จ์•„ ์žˆ์ง€๋งŒ ํ•ด๋‹น ๋ฆฌ์ „์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ IP ์ฃผ์†Œ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ• ๋‹น๋Ÿ‰ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ฐ€์šฉ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํ• ๋‹น๋Ÿ‰ ์ฆ๊ฐ€๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฆฌ์ „์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์ž ์‚ฌ์šฉ๋ฅ  ํžŒํŠธ์—๋Š” ํšจ๊ณผ ์—†์Œ

์ž‘์—…์ž ์‚ฌ์šฉ๋ฅ  ํžŒํŠธ๋ฅผ ์„ค์ •ํ•˜์ง€๋งŒ ์ž๋™ ํ™•์žฅ ๋™์ž‘์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์ž‘์—…์ž CPU ์‚ฌ์šฉ๋ฅ  ์ฐจํŠธ๋กœ ์ด๋™ํ•˜์—ฌ ์ž‘์—…์ž ์‚ฌ์šฉ๋ฅ  ํžŒํŠธ๊ฐ€ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํžŒํŠธ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด๋ฉด ์ฐจํŠธ์— CPU utilization hint (actively used by autoscaler)๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด CPU utilization hint (not actively used by autoscaler)๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฅ  ํžŒํŠธ๋Š” ์ž๋™ ํ™•์žฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ํ•œ ๊ฐ€์ง€ ์š”์†Œ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ์—๋Š” ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ๊ฐ€ ํžŒํŠธ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€์ฐฐ๋œ ํ™•์žฅ ๋™์ž‘ ์›์ธ ํ™•์ธํ•  ์ธก์ •ํ•ญ๋ชฉ
๋ณ€๊ฒฝ์‚ฌํ•ญ ์—†์Œ
  • ์ตœ์†Œ ๋˜๋Š” ์ตœ๋Œ€ ์ž‘์—…์ž ์ˆ˜์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž‘์—…์ž ์ˆ˜๋Š” ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜๋Š” ํ‚ค ์ˆ˜๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—…์€ ์™ธ๋ถ€ RPC์— ์˜ํ•ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • ์ถ•์†Œ ์กฐ์ •์ด ๋„ˆ๋ฌด ์ž‘๊ฑฐ๋‚˜ Dataflow์—์„œ ์ถ•์†Œ๋ฅผ ๊ฐ์†Œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํœด๋ฆฌ์Šคํ‹ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์ˆ˜์ง ํ™•์žฅ
  • ๋†’์€ ๋ฐฑ๋กœ๊ทธ ๋˜๋Š” ์ง€์—ฐ ์‹œ๊ฐ„ ๋ชฉํ‘œ๊ฐ€ ํžŒํŠธ๋ณด๋‹ค ์šฐ์„ ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ž‘์—…์ž ์ˆ˜๋ณด๋‹ค ๋†’์€ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ถ•์†Œ
  • ์ตœ๋Œ€ ์ž‘์—…์ž ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ž‘์—…์ž ์ˆ˜๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํœด๋ฆฌ์Šคํ‹ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž๋™ ํ™•์žฅ ์ธก์ •ํ•ญ๋ชฉ์˜ ๊ฒฉ์ฐจ

์ž๋™ ํ™•์žฅ ์ธก์ •ํ•ญ๋ชฉ์—๋Š” ์งง๊ณ  ์ผ์‹œ์ ์ธ ๊ฒฉ์ฐจ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ฐฑ์—”๋“œ ํƒœ์Šคํฌ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ์—์„œ ์ด๋Ÿฌํ•œ ๊ฒฉ์ฐจ๋Š” ์ž๋™ ํ™•์žฅ ๋ฌธ์ œ๋‚˜ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—… ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CPU๊ฐ€ ๊ท ์ผํ•˜์ง€ ์•Š๊ฒŒ ๋ถ„์‚ฐ๋จ

์ž‘์—…์ด ์ž๋™ ํ™•์žฅ๋  ๋•Œ CPU ์‚ฌ์šฉ๋ฅ ์ด ์ž‘์—…์ž ๊ฐ„์— ๊ท ์ผํ•˜์ง€ ์•Š๊ฒŒ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž‘์—…์ž์˜ CPU ์‚ฌ์šฉ๋ฅ , ์‹œ์Šคํ…œ ์ง€์—ฐ ์‹œ๊ฐ„ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ๊ณ ์นจ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์ž๋ณด๋‹ค ๋†’์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ์— ๋‹จ์ถ•ํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ถ•ํ‚ค๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š” ํ‚ค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ‚ค๋ฅผ ๋‹จ์ผ ์ž‘์—…์ž๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž‘์—…์„ ์ž‘์—…์ž ๊ฐ„์— ๋ถ„ํ• ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•ซํ‚ค ์˜ค๋ฅ˜ ์•ˆ๋‚ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒํƒœ ์ฝ๊ธฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ์ž‘์—… ํ•ญ๋ชฉ์ด ๋” ์ด์ƒ ๋ฐฑ์—”๋“œ์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์Œ

์ž‘์—…์ž VM ์ธ์Šคํ„ด์Šค์™€ ์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์˜ Streaming Engine ํƒœ์Šคํฌ ๊ฐ„ ํ†ต์‹  ์ค‘์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

The work item requesting state read is no longer valid on the backend.
The work has already completed or will be retried.
This is expected during autoscaling events.

์ž๋™ ํ™•์žฅ ์ค‘์— ์ž‘์—…์ž VM ์ธ์Šคํ„ด์Šค๋Š” ์—ฌ๋Ÿฌ Streaming Engine ํƒœ์Šคํฌ์™€ ํ†ต์‹ ํ•˜๊ณ  ๊ฐ ํƒœ์Šคํฌ๋Š” ์ž‘์—…์ž VM ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ญ๋ชฉ ํ‚ค๋Š” ์ž‘์—…์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํƒœ์Šคํฌ์™€ ์ž‘์—…์ž VM ์ธ์Šคํ„ด์Šค์—๋Š” ํ‚ค ๋ฒ”์œ„ ์ปฌ๋ ‰์…˜์ด ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๋ฒ”์œ„์˜ ๋ถ„ํฌ๋Š” ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž๋™ ํ™•์žฅ ์ค‘์— ์ž‘์—… ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋ฉด ํ‚ค ๋ฒ”์œ„ ๋ถ„ํฌ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค ๋ฒ”์œ„๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๋Š” ์˜ˆ์ƒ๋œ ์˜ค๋ฅ˜์ด๋ฉฐ ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€์™€ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ„์— ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์—†์œผ๋ฉด ์ด๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Streaming Engine ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ

Streaming Engine์ด ์š”์ฒญ๋œ ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์œผ๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

Streaming Engine does not currently have enough resources available to fulfill
the request.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋ฅผ ์ค„์—ฌ๋ณด์„ธ์š”. ์ž๋™ ํ™•์žฅ ๋ฒ”์œ„ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ™•์žฅ ๋ฒ”์œ„

์ด ์„น์…˜์—์„œ๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ™•์žฅ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Java

Streaming Engine์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ์ž‘์—…์˜ ๊ฒฝ์šฐ Dataflow ์„œ๋น„์Šค๊ฐ€ ๊ฐ ์ž‘์—…์ž์—๊ฒŒ 1~15 ์‚ฌ์ด์˜ Persistent Disk๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ• ๋‹น์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํŒŒ์ดํ”„๋ผ์ธ์— ์‚ฌ์šฉ๋˜๋Š” ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋Š” N/15์ด๊ณ , ์—ฌ๊ธฐ์„œ N์€ --maxNumWorkers์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค.

Dataflow๋Š” ์ž‘์—…์ž ๊ฐ„์˜ Persistent Disk ์ˆ˜๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„๋ผ์ธ์— ์•ˆ์ •์ ์ธ ์ƒํƒœ์˜ ์ž‘์—…์ž 3๋ช… ๋˜๋Š” 4๋ช…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ --maxNumWorkers=15๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ์ง์›๋‹น 15, 8, 5, 4, 3, 2 1๊ฐœ์˜ Persistent Disk์— ๊ฐ๊ฐ 1, 2, 3, 4, 5, 8, 15๋ช…์˜ ์ž‘์—…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1๋ช…์—์„œ 15๋ช… ์‚ฌ์ด์˜ ์ž‘์—…์ž๋ฅผ ์ž๋™์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

--maxNumWorkers๋Š” 1,000๊ฐœ ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Python

Streaming Engine์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ์ž‘์—…์˜ ๊ฒฝ์šฐ Dataflow ์„œ๋น„์Šค๊ฐ€ ๊ฐ ์ž‘์—…์ž์—๊ฒŒ 1~15 ์‚ฌ์ด์˜ Persistent Disk๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ• ๋‹น์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํŒŒ์ดํ”„๋ผ์ธ์— ์‚ฌ์šฉ๋˜๋Š” ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋Š” N/15์ด๊ณ , ์—ฌ๊ธฐ์„œ N์€ --max_num_workers์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค.

Dataflow๋Š” ์ž‘์—…์ž ๊ฐ„์˜ Persistent Disk ์ˆ˜๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„๋ผ์ธ์— ์•ˆ์ •์ ์ธ ์ƒํƒœ์˜ ์ž‘์—…์ž 3๋ช… ๋˜๋Š” 4๋ช…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ --max_num_workers=15๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ์ง์›๋‹น 15, 8, 5, 4, 3, 2 1๊ฐœ์˜ Persistent Disk์— ๊ฐ๊ฐ 1, 2, 3, 4, 5, 8, 15๋ช…์˜ ์ž‘์—…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1๋ช…์—์„œ 15๋ช… ์‚ฌ์ด์˜ ์ž‘์—…์ž๋ฅผ ์ž๋™์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

--max_num_workers๋Š” 1,000๊ฐœ ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Go

Streaming Engine์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ์ž‘์—…์˜ ๊ฒฝ์šฐ Dataflow ์„œ๋น„์Šค๊ฐ€ ๊ฐ ์ž‘์—…์ž์—๊ฒŒ 1~15 ์‚ฌ์ด์˜ Persistent Disk๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ• ๋‹น์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ํŒŒ์ดํ”„๋ผ์ธ์— ์‚ฌ์šฉ๋˜๋Š” ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋Š” N/15์ด๊ณ , ์—ฌ๊ธฐ์„œ N์€ --max_num_workers์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ตœ์†Œ ์ž‘์—…์ž ์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค.

Dataflow๋Š” ์ž‘์—…์ž ๊ฐ„์˜ Persistent Disk ์ˆ˜๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„๋ผ์ธ์— ์•ˆ์ •์ ์ธ ์ƒํƒœ์˜ ์ž‘์—…์ž 3๋ช… ๋˜๋Š” 4๋ช…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ --max_num_workers=15๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ์ง์›๋‹น 15, 8, 5, 4, 3, 2 1๊ฐœ์˜ Persistent Disk์— ๊ฐ๊ฐ 1, 2, 3, 4, 5, 8, 15๋ช…์˜ ์ž‘์—…์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1๋ช…์—์„œ 15๋ช… ์‚ฌ์ด์˜ ์ž‘์—…์ž๋ฅผ ์ž๋™์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

--max_num_workers๋Š” 1,000๊ฐœ ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์ž ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐœ์ˆ˜

Java

Dataflow๋Š” ํ”„๋กœ์ ํŠธ์˜ Compute Engine ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜ ํ• ๋‹น๋Ÿ‰ ๋˜๋Š” maxNumWorkers ์ค‘ ๋‚ฎ์€ ํ•œ๋„ ๋‚ด์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Python

Dataflow๋Š” ํ”„๋กœ์ ํŠธ์˜ Compute Engine ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜ ํ• ๋‹น๋Ÿ‰ ๋˜๋Š” max_num_workers ์ค‘ ๋‚ฎ์€ ํ•œ๋„ ๋‚ด์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Go

Dataflow๋Š” ํ”„๋กœ์ ํŠธ์˜ Compute Engine ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜ ํ• ๋‹น๋Ÿ‰ ๋˜๋Š” max_num_workers ์ค‘ ๋‚ฎ์€ ํ•œ๋„ ๋‚ด์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ ํ™•์žฅ์„ ์ œํ•œํ•˜์—ฌ ์ฒญ๊ตฌ ์˜ํ–ฅ ๊ฐ์†Œ

์ž๋™ ํ™•์žฅ์œผ๋กœ ์ธํ•ด ์ฒญ๊ตฌ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž‘์—…์ž ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Java

--maxNumWorkers๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ™•์žฅ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

Python

--max_num_workers๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ™•์žฅ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

Go

--max_num_workers๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ™•์žฅ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

ํ™•์žฅ ๋ฒ”์œ„ ๋ณ€๊ฒฝ

์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ™•์žฅ ๋ฒ”์œ„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ž๋™ ํ™•์žฅ ๋ฒ”์œ„ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ž๋™ ํ™•์žฅ ์‚ฌ์šฉ ์ค‘์ง€

์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ž๋™ ํ™•์žฅ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Java

--autoscalingAlgorithm=NONE์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ˆ˜ํ‰ ์ž๋™ ํ™•์žฅ ์ค‘์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Python

--autoscaling_algorithm=NONE์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ˆ˜ํ‰ ์ž๋™ ํ™•์žฅ ์ค‘์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Go

--autoscaling_algorithm=NONE์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ˆ˜ํ‰ ์ž๋™ ํ™•์žฅ ์ค‘์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ณ ์ •๋œ ์ž‘์—…์ž ์ˆ˜ ์‚ฌ์šฉ

Streaming Engine์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ์ž‘์—…์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋™์ž‘์€ ๊ณ ์ •๋œ ์ž‘์—…์ž ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ดํ”„๋ผ์ธ์— ์ŠคํŠธ๋ฆฌ๋ฐ ์ž๋™ ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.