Community

๐Ÿšฐ Stream Backpressure ์˜ ์ดํ•ด

Stream ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๋“ฃ๊ฒŒ ๋˜๋Š” ๋‹จ์–ด๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ Backpressure ์ธ๋ฐ์š”, ์ด์™€ ๊ด€๋ จ๋˜์„œ ์ž˜ ์ •๋ฆฌ๋œ ๋ธ”๋กœ๊ทธ ๊ธ€์ด ์žˆ์–ด ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Backpressure ๋Š” ์‚ฌ์‹ค ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•œ ์œ ์ฒด ํ๋ฆ„์— ๋ฐ˜ํ•˜๋Š” ์ €ํ•ญ ํ˜น์€ ํž˜์„ ๋งํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ์†Œํ”„ํŠธ์›จ์–ด์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ตฌ์ถ•ํ•œ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฐฐ์•• ํ˜„์ƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด์—์„œ Backpressure ๋กœ ์ธํ•ด ๊ฒช์„ ์ˆ˜ ์žˆ๋Š” Side-Effect ๋กœ๋Š” CPU์™€ ๋ฉ”๋ชจ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ Drop ํ˜„์ƒ๊ณผ Network I/O, DISK I/O, Out of Memory ๋“ฑ์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Backpressure ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ์œผ๋กœ๋Š” ํฌ๊ฒŒ Buffer ๋ฅผ ๋‘๊ณ  ๋Œ€์‘ํ•˜๋Š” Push ๋ฐฉ์‹๊ณผ Subscriber ๊ฐ€ ์ž์‹ ์ด ํ˜„์žฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๊ฐ€๋Š” Pull ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ ๋“œ๋ฆฐ ๋ธ”๋กœ๊ทธ์— Backpressure ์˜ ๊ฐœ๋…๊ณผ Push ๋ฐฉ์‹, Pull ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์žฌ๋ฐŒ๊ณ  ์ž์„ธํžˆ ๋‚˜์—ดํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ๊ด€์‹ฌ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ํ•œ๋ฒˆ ๋ณด์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. https://doublem.org/stream-backpressure-basic/

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค