[Rust] Tokio ์‚ดํŽด๋ณด๊ธฐ

tokio๋Š” Rust ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ ๋น„๋™๊ธฐ ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

์‰ฝ๊ฒŒ๋งํ•ด Go์˜ ๊ณ ๋ฃจํ‹ด์„ ๋Ÿฌ์ŠคํŠธ๋กœ ํฌํŒ…ํ–ˆ๋‹ค๊ณ  ๋ด๋„ ๋œ๋‹ค.
๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ๊ณผ ๋ณ‘ํ–‰์„ฑ์„ ์•„์ฃผ ํšจ์œจ์ ์ด๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

์‹œ์Šคํ…œ๊ธ‰ ์–ธ์–ด๋“ค์—๋Š” ์ด๋งŒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋”ฑํžˆ ์—†์–ด์„œ, ์—ฌ๋Ÿฌ ๊ณ ์„ฑ๋Šฅ ์‹œ์Šคํ…œ์˜ ์ฝ”์–ด์— ๋งŽ์ด ๋“ค์–ด๊ฐ€๋Š” ์ค‘์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ ์œ ๋ช…ํ•œ AWS์˜ ๋‚ด๋ถ€์‹œ์Šคํ…œ์—๋„ tokio์™€ ๋Ÿฌ์ŠคํŠธ๊ฐ€ ์•Œ์ฐจ๊ฒŒ ๋ฐ•ํ˜€์žˆ๊ณ , ์ง€๊ธˆ๋„ ๋“ค์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.

async-std๋ผ๋Š” ๋Œ€์ฒด์žฌ๋„ ์žˆ๋Š”๋ฐ, ์ด๊ฑด ์„ฑ๋Šฅ์—์„œ ์ด์ ์ด ์žˆ๋Š”๊ฑด ์•„๋‹ˆ๊ณ  ์„ฑ๋Šฅ์ฐพ์œผ๋ ค๋ฉด ๊ทธ๋ƒฅ tokio ์“ฐ๋ฉด ๋œ๋‹ค.

์ผ๋‹จ ์ข…์†์„ฑ์— ๋จผ์ € tokio๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์ž.
์ด๊ฑด feature ์ˆ˜์ค€์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ํ•„์š”๊ฐ€ ์žˆ์–ด์„œ, cargo add๋ณด๋‹จ ์†์œผ๋กœ ์ณ์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Hello World ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.
tokio::main๊ณผ async๋ฅผ ๋‹ฌ์•„์„œ ๋ฃจํŠธ ์˜์—ญ์—์„œ๋„ ๋น„๋™๊ธฐ ํ•ธ๋“ค๋ง์„ ํ•ด์ค„์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ํŽธํ•˜๋„๋ก Result๋ฅผ ๋ฐ˜ํ™˜ํƒ€์ž…์œผ๋กœ ํ–ˆ๋‹ค.

๊ทธ๋Ÿผ ์ž˜ ์‹คํ–‰์ด ๋  ๊ฒƒ์ด๋‹ค.




์Šค๋ ˆ๋“œ ์˜ฌ๋ฆฌ๊ธฐ

tokio๋Š” ๋น„๋™๊ธฐ ๋Ÿฐํƒ€์ž„์ด๋ผ๊ณ  ํ–ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋น„๋™๊ธฐ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๋„ค์ดํ‹ฐ๋ธŒ ์Šค๋ ˆ๋“œ๋ณด๋‹ค๋Š” ๋Ÿฐํƒ€์ž„ ๋‹จ์œ„์˜ ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฒฝ๋Ÿ‰์Šค๋ ˆ๋“œ ํ˜ธ์ถœ์€ task ๋ชจ๋“ˆ์˜ spawn ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  async ๋ธ”๋Ÿญ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ๋กœ์ง์„ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  async/await ๋ฌธ๋ฒ•์œผ๋กœ ์ž˜ ํ•ธ๋“ค๋งํ•˜๋ฉด ๋œ๋‹ค.

์™ธํ˜•์€ ์ผ๋ฐ˜ ์Šค๋ ˆ๋“œ์™€ ๋‹ค๋ฅผ๊ฒƒ์ด ๋ณ„๋กœ ์—†๋‹ค.




await ํ†ตํ•ฉ: join

์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ํ•œ๋ฒˆ์— awaitํ•˜๊ณ ์‹ถ๋‹ค๋ฉด join ๋งคํฌ๋กœ ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.




๋™๊ธฐํ™” ๋„๊ตฌ: ์ฑ„๋„

tokio๋Š” ๊ทธ๋ƒฅ ์Šค๋ ˆ๋“œ ์˜๋Š”๊ฒƒ๋งŒ ์ฃผ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋™๊ธฐํ™” ๋„๊ตฌ๋“ค๋„ ์ œ๊ณตํ•œ๋‹ค.

๊ทธ ๊ฐ„ํŽธํ•œ ๋„๊ตฌ๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์ฑ„๋„์ด๋‹ค.

๋‹ค๋Œ€๋‹ค์ฑ„๋„์ธ broadcast,
๋‹ค์ค‘์ƒ์‚ฐ์ž์— ๋‹จ์ผ์†Œ๋น„์ž์ธ mpsc,
๋‹จ์ผ์ฑ„๋„์ธ oneshot,
๋‹จ์ผ์ƒ์‚ฐ์ž์— ๋‹ค์ค‘์†Œ๋น„์ž์ธ watch๊ฐ€ ์ œ๊ณต๋œ๋‹ค.

์ด๋Ÿฐ๊ฑฐ๋Š” ๋ณ„๋„ ํฌ์ŠคํŠธ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ , oneshot์˜ ์˜ˆ์‹œ๋งŒ ๋Œ€๊ฐ• ๋ณด๊ฒ ๋‹ค.

์ด๊ฑด ๋ง๊ทธ๋Œ€๋กœ ์Šค๋ ˆ๋“œ๊ฐ„์— ํ•œ๋ฒˆ ๋˜์ง€๊ณ  ํ•œ๋ฒˆ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋‹จ์ˆœํ•œ ์ฑ„๋„์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ ์“ฐ๊ธฐ, ๋„คํŠธ์›Œํ‚น ๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ์ž…์ถœ๋ ฅ๊ธฐ๋Šฅ๋„ ๊ทธ๋ƒฅ ์ œ๊ณตํ•œ๋‹ค.
io๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ์—๋Š” ์ด๋Ÿฐ๊ฒƒ๋“ค๋กœ๋งŒ ์จ์„œ ํ•ธ๋“ค๋งํ•˜๋Š”๊ฒŒ ํšจ์œจ์ ์ด๊ฒ ๋‹ค.

๊ทธ๋ ‡๋‹ค.


์ฐธ์กฐ
https://tokio.rs/tokio/tutorial