๐Ÿฆ€ Rust๋กœ ์‹ค์ „ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๊ฒฝํ—˜ํ•˜๋‹ค

sangjinsuยท2025๋…„ 6์›” 30์ผ
post-thumbnail

ใ€ŽLUVIT ์‹ค์ „ ๋ฐฑ์—”๋“œ ๋Ÿฌ์ŠคํŠธ Axum ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€ ์„œํ‰

๐Ÿ“˜ ์ฑ…์„ ์ฝ๊ฒŒ ๋œ ๊ณ„๊ธฐ

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

๊ทธ๋ž˜์„œ ๋” ์ด์ƒ ๋‹จํŽธ์ ์ธ ์˜ˆ์ œ๋‚˜ ํ•ด์™ธ ํŠœํ† ๋ฆฌ์–ผ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , Rust๋กœ ์‹ค์ œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์ œ๋Œ€๋กœ ๋œ ํ•™์Šต์„œ๋ฅผ ์ฐพ๊ณ  ์žˆ๋˜ ์ค‘ ์ด ์ฑ… ใ€ŽLUVIT ์‹ค์ „ ๋ฐฑ์—”๋“œ ๋Ÿฌ์ŠคํŠธ Axum ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€์„ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Rust๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๋Š” ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ, ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ ์ œ๊ฒฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ฌ ๊ฐ์ƒ ๋ฐ ๋ถ„์„

  • Rust๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋…์ž์—๊ฒŒ๋Š” ์ง„์ž…์žฅ๋ฒฝ์ด ๋‹ค์†Œ ๋†’๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์†Œํ•œ ๋ฌธ๋ฒ•๊ณผ ๊ฐœ๋…(Rust์˜ ์†Œ์œ ๊ถŒ, ํŠธ๋ ˆ์ดํŠธ ๋“ฑ)์ด ๋ฐฑ์—”๋“œ ๋กœ์ง๊ณผ ํ•จ๊ป˜ ๋‚˜์™€ ์ฒ˜์Œ์—๋Š” ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.
    โ†’ ๊ฐ™์€ ์ €์ž์˜ ์ž…๋ฌธ์„œ์ธ ใ€ŽํŒŒ์ด์ฌ๊ณผ ๋น„๊ตํ•˜๋ฉฐ ๋ฐฐ์šฐ๋Š” ๋Ÿฌ์ŠคํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€์„ ๋จผ์ € ์ฝ๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
  • ์ฑ…์—์„œ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  ๋ฒ”์œ„๋Š” ๋งค์šฐ ํ˜„๋Œ€์ ์ธ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ํ๋ฆ„๊ณผ ์ž˜ ๋งž๋‹ฟ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.
    REST API, ํ”„๋ก์‹œ ์„œ๋ฒ„ ๊ตฌ์„ฑ, ์›น์†Œ์ผ“ ํ†ต์‹ , ์ธ์ฆ ์ฒ˜๋ฆฌ, SeaORM์„ ํ†ตํ•œ DB ์—ฐ๋™ ๋“ฑ ์‹ค๋ฌด์—์„œ ์ ‘ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ Rust๋กœ ๊ตฌํ˜„ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
  • ๊นƒํ—ˆ๋ธŒ ์˜ˆ์ œ ์ฝ”๋“œ์˜ ์™„์„ฑ๋„์™€ ์นœ์ ˆํ•จ๋„ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค. Rust ๋ฌธ๋ฒ•์ด ์ต์ˆ™ํ•˜์ง€ ์•Š๋”๋ผ๋„, ์‹ค์Šต์„ ๋”ฐ๋ผ๊ฐ€๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฌธ๋ฒ•๊ณผ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ฑ—์•ฑ ๊ตฌํ˜„์ด๋‚˜ ORM ๊ด€๋ จ ๋ถ€๋ถ„์€ ์ค‘๊ฐ„์ค‘๊ฐ„ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ–ˆ์ง€๋งŒ, Rust๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋Ÿฌ์ŠคํŠธ ์ƒํƒœ๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โš–๏ธ ์žฅ์ ๊ณผ ๋‹จ์ 

โœ… ์žฅ์ 

  • ์‹ค์ „ ํ”„๋กœ์ ํŠธ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์‹ค๋ฌด ๊ฐ๊ฐ์„ ์ตํžˆ๊ธฐ์— ์ข‹์Œ
  • ๋‹ค์–‘ํ•œ ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ (Router, WebSocket, ORM ๋“ฑ)์„ Rust๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
  • ๊นƒํ—ˆ๋ธŒ ์˜ˆ์ œ๊ฐ€ ์‹ค์Šต์— ํฐ ๋„์›€์ด ๋จ

โš ๏ธ ๋‹จ์ 

  • Rust๋ฅผ ์ฒ˜์Œ ์ ‘ํ•œ๋‹ค๋ฉด ๋‹ค์†Œ ๋‚œ์ด๋„๊ฐ€ ์žˆ์Œ
  • ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์—†๋Š” ์ดˆ์‹ฌ์ž์—๊ฒŒ๋Š” ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ

๐ŸŽฏ ์ถ”์ฒœ ๋Œ€์ƒ

  • Rust๋ฅผ ๊ณต๋ถ€ ์ค‘์ด๋ฉฐ, ์ด๋ก ์ด ์•„๋‹Œ ์‹ค์ œ ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„
  • Node.js, Python ๋“ฑ์—์„œ Rust๋กœ ๋„˜์–ด์˜ค๊ณ  ์‹ถ์€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž
  • ๋‹จ์ˆœ ์˜ˆ์ œ ์ˆ˜์ค€์ด ์•„๋‹Œ, ํ•˜๋‚˜์˜ ์™„์„ฑ๋œ ์„œ๋น„์Šค๋ฅผ Rust๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์€ ํ•™์Šต์ž

โœ… ๋งˆ๋ฌด๋ฆฌ

Rust์˜ ๋งค๋ ฅ์„ ์‹ค์ „์—์„œ ์ฒด๊ฐํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด, ์ด ์ฑ…์€ ์ข‹์€ ์„ ํƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ์„ ๋„˜์–ด ์‹ค๋ฌด์ ์ธ ๊ฐ๊ฐ๊ณผ ๊ตฌ์กฐ์ ์ธ ๋ฐฑ์—”๋“œ ์„ค๊ณ„๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ ํŠนํžˆ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

โœ๏ธ ์ด ๋ฆฌ๋ทฐ๋Š” ์ œ์ดํŽ ์„œํ‰๋‹จ์— ์ฐธ์—ฌํ•˜์—ฌ ๋„์„œ๋ฅผ ์ฆ์ •๋ฐ›๊ณ , ์ง์ ‘ ์ฝ์€ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ์„œํ‰์ž…๋‹ˆ๋‹ค.

profile
๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š”, ์ด์Šˆ๋ฅผ ์ค„์ด๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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