Client-Side Routing & Server-Side Routing

Client-Side Routing (ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…)

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŽ˜์ด์ง€ ์ „ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์ฃผ๋กœ SPA์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

์ „ํ†ต์ ์ธ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ, ๋ธŒ๋ผ์šฐ์ €์—์„œ JS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์ „ํ™˜ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ URL์„ ๋ณ€๊ฒฝํ•˜๊ณ , ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ง• ๋ฐ ์žฅ์ 

  • URL ๋ณ€๊ฒฝ ๊ด€๋ฆฌ

    • ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ์ฐฝ์— URL์ด ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด URL ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ , ํ•ด๋‹น URL์— ๋งž๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•œ๋‹ค.

  • ๋น ๋ฅธ ํŽ˜์ด์ง€ ์ „ํ™˜

    ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™ ์‹œ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด HTML์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ฐ€์ ธ์™€ ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. โ†’ ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ๋˜์ง€ ์•Š์•„ ์ „ํ™˜์ด ๋น ๋ฅด๊ณ  ๋ถ€๋“œ๋Ÿฝ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ์œ ์ง€ ํŽ˜์ด์ง€ ์ „ํ™˜ ์‹œ์—๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ์œ ์ง€ ๊ฐ€๋Šฅ.

๋‹จ์ 

  • ๊ธด ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ๊ฐ„

    ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋ฐ›์•„์™€์•ผ ํ•˜๋ฏ€๋กœ, ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

    BUT, ์ดˆ๊ธฐ ๋กœ๋“œ๊ฐ€ ๋๋‚œ ํ›„์—๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ๋งค์šฐ ๋ถ€๋“œ๋Ÿฝ๊ณ  ๋น ๋ฅด๋‹ค.

  • SEO ๋ฌธ์ œ

    ์ดˆ๊ธฐ HTML์— ์ฝ˜ํ…์ธ ๊ฐ€ ์—†๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ๋กœ๋“œํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ฝ˜ํ…์ธ ๋ฅผ ํฌ๋กค๋งํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. โ‡’ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€

์ฃผ๋กœ SPA(Single Page Application)์—์„œ ์‚ฌ์šฉ. ์˜ˆ) React, Vue.js, Angular ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉ


Server-Side Routing (์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…)

์„œ๋ฒ„์—์„œ ๊ฐ ํŽ˜์ด์ง€ ์š”์ฒญ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

  • URL ์š”์ฒญ ์ฒ˜๋ฆฌ

    • ์‚ฌ์šฉ์ž๊ฐ€ URL์„ ํ†ตํ•ด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค, ์„œ๋ฒ„๋Š” ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋งž๋Š” HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ HTML ํŒŒ์ผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    • ํŽ˜์ด์ง€ ์ „ํ™˜ ์‹œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์—์„œ ์ „์ฒด HTML ํŽ˜์ด์ง€๋ฅผ ๋ฐ›์•„์™€ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•œ๋‹ค.

๋‹จ์ ) ์™„์ „ํžˆ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ โ†’ ํŽ˜์ด์ง€ ์ „ํ™˜์ด ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…์— ๋น„ํ•ด ๋А๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์žฅ์ 

  • ๋น ๋ฅธ ์ดˆ๊ธฐ ๋กœ๋“œ

    • ์„œ๋ฒ„์—์„œ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ HTML์„ ์ „๋‹ฌํ•˜๋ฏ€๋กœ, ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค.

    • ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ชจ๋‘ ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • SEO ์นœํ™”์ 

    • ์„œ๋ฒ„์—์„œ ์™„์„ฑ๋œ HTML์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ฝ˜ํ…์ธ ๋ฅผ ์‰ฝ๊ฒŒ ํฌ๋กค๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

    • SEO๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€

์ „ํ†ต์ ์ธ MPA(Multi-Page Application)์—์„œ ์‚ฌ์šฉ. ์˜ˆ) ์„œ๋ฒ„ ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ(Django, Ruby on Rails, ASP.NET ๋“ฑ)์™€ Next.js์—์„œ SSR(Server-Side Rendering)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ


๋น„๊ต ์š”์•ฝ

Client-Side Routing
Server-Side Routing

๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ URL ๋ณ€๊ฒฝ ๊ด€๋ฆฌ

์„œ๋ฒ„์—์„œ ๊ฐ ํŽ˜์ด์ง€ ์š”์ฒญ์— ๋Œ€ํ•ด HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณต

์ผ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธ

์™„์ „ํ•œ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ

์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Œ

์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ๊ฐ„์ด ๋น ๋ฆ„

SEO์— ๋ถˆ๋ฆฌํ•จ

SEO์— ์œ ๋ฆฌํ•จ

์ฃผ๋กœ SPA์—์„œ ์‚ฌ์šฉ

์ฃผ๋กœ MPA์—์„œ ์‚ฌ์šฉ

Last updated