(๋ฒˆ์—ญ) ๋ฆฌ์•กํŠธ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋‹ค์‹œ ์ƒ๊ฐํ•˜๊ธฐ

์›๋ฌธ: Rethinking React best practices

ํด๋ผ์ด์–ธํŠธ ์ธก ๋ทฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ฆฌ์•กํŠธ์˜ ์ง„ํ™”์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

๋„์ž…

10๋…„ ์ „, ๋ฆฌ์•กํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š” SPA์˜ ์„ธ๊ณ„์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋ฐ”๊ฟ”๋†“์•˜์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  ๋ฆฌ์•กํŠธ ๋„์ž…๋ฅ ์€ ์ตœ๊ณ ์กฐ์— ๋‹ฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋น„ํŒ๊ณผ ํšŒ์˜๋ก ๋„ ์ง€์†์ ์œผ๋กœ ์ œ๊ธฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ 18์€ ๋ฆฌ์•กํŠธ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ(RSC)์™€ ํ•จ๊ป˜ โ€œ๋ทฐโ€ ์—ญํ• ๋งŒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์—ฌ๊ฒจ์กŒ๋˜ ํด๋ผ์ด์–ธํŠธ ์ธก MVC ํŒจํ„ด์—์„œ ํฌ๊ฒŒ ๋ฒ—์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ๋ฆฌ์•กํŠธ์˜ ๋ฐœ์ „ ๊ณผ์ •์—์„œ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ๋‹จ๊ณ„๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฆฌ์•กํŠธ ์•„ํ‚คํ…์ฒ˜๋กœ ์ง„ํ™”ํ•œ ๋ฆฌ์•กํŠธ์˜ ์ง„ํ™”๋ฅผ ์ดํ•ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋‚˜ ์นด๋ ˆ๋‹ˆ๋‚˜ ๋ฒ•์น™์— ๋”ฐ๋ฅด๋ฉด, โ€œ๋ชจ๋“  ํ–‰๋ณตํ•œ ๊ฐ€์ •์€ ์„œ๋กœ ๋‹ฎ์•„ ์žˆ๊ณ , ๋ถˆํ–‰ํ•œ ๊ฐ€์ •์€ ์ €๋งˆ๋‹ค ๋‹ค๋ฅธ ์ด์œ ๋กœ ๋ถˆํ–‰ํ•˜๋‹คโ€๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋ฆฌ์•กํŠธ์˜ ํ•ต์‹ฌ ์ œ์•ฝ ์กฐ๊ฑด๊ณผ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ๊ฑฐ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณตํ†ต์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋ณธ ํŒจํ„ด๊ณผ ์›์น™์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์—๋Š” Remix์™€ Next 13 ์•ฑ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ฐ™์€ ๋ฆฌ์•กํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ฐœ๊ฒฌ๋˜๋Š” ๋ณ€ํ™”ํ•˜๋Š” ๋ฉ˜ํƒˆ ๋ชจ๋ธ์„ ์ดํ•ดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ์ˆ ์  ๋ฌธ์ œ์™€ ์ธ์  ๋ฌธ์ œ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜๋ฅผ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ ์ ˆํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ฐพ๋Š” ๊ณผ์ •์œผ๋กœ์จ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋„ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ์ œ์•ฝ ์กฐ๊ฑด์€ ๊ถ๊ทน์ ์œผ๋กœ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ธ๊ฐ„์œผ๋กœ์„œ ๊ฐ€์žฅ ํฐ ์ œ์•ฝ ์กฐ๊ฑด์ธ ์ œํ•œ๋œ ์‹œ๊ฐ„๊ณผ ์ฃผ์˜๋ ฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ์™€ ์ธ์  ๋ฌธ์ œ

์ธ์  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ๋†’์€ ์˜ํ–ฅ๋ ฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ๋œ ์‹œ๊ฐ„๊ณผ ์ฃผ์˜๋ ฅ์œผ๋กœ ๊ฐœ์ธ, ํŒ€, ์กฐ์ง์˜ ์ƒ์‚ฐ์„ฑ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์€ ๋น ๋ฅด๊ฒŒ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„๊ณผ ์ž์›์ด ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์œผ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์–‘์˜ ๋ณต์žก์„ฑ์„ ๋จธ๋ฆฟ์†์— ๋‹ด์•„๋‘๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€, ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์†Œ๋น„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋จธ๋ฆฟ์†์„ ์ „์ฒด ์‹œ์Šคํ…œ์œผ๋กœ ๊ฐ€๋“ ์ฑ„์šฐ์ง€ ์•Š๊ณ ๋„ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ๊ณผ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ์ „๋žต(escape hatch)์„ ํ†ตํ•ด ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„ ๋’ค์— ๋‚จ์•„์žˆ๋Š” ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉ์˜ ๋ณต์žก์„ฑ์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ์™€ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ์˜ ์˜ํ–ฅ ์ค‘ ํ•˜๋‚˜๋Š”, ๋‚˜๋ฌด๋งŒ ๋ณด๊ณ  ์ˆฒ์˜ ํฐ ๊ทธ๋ฆผ์„ ๋†“์น˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ ๋ฐ ๊ธฐ์ˆ ์  ๋ฌธ์ œ

๋˜ํ•œ ๋ฆฌ์•กํŠธ๋Š” ๋‹น์‹œ์˜ ๊ธฐ์กด ํ•ด๊ฒฐ์ฑ…์— ๋น„ํ•ด ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ ๊ธฐ๋Šฅ์„ ๋” ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์„ ์–ธ์  ๋ชจ๋ธ ๋•๋ถ„์— n-ary ํŠธ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” react-dom๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ๋ณ„ ๋ Œ๋”๋Ÿฌ์— ๊ณต๊ธ‰๋ฉ๋‹ˆ๋‹ค. ํŒ€์ด ํ™•์žฅ๋˜๊ณ  ์ƒ์šฉ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊นŠ์–ด์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

2016๋…„ ๋ฆฌํŒฉํ„ฐ๋ง ๋œ ์ดํ›„, ๋ฆฌ์•กํŠธ๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž ํ•˜๋“œ์›จ์–ด์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํฌ๊ณ  ๊นŠ์€ ํŠธ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ์ˆ ์  ๋ฌธ์ œ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๋Œ€์‘ํ•ด ์™”์Šต๋‹ˆ๋‹ค.

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

์•„๋ž˜์—์„œ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ, ์ฐจ์„ธ๋Œ€ ๋ฆฌ์•กํŠธ(๋ฐ ๋ฆฌ์•กํŠธ ๊ณ„์—ด) ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋งŽ์€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ์˜ค๋กœ์ง€ ํด๋ผ์ด์–ธํŠธ CPU์—์„œ๋งŒ ์ฒ˜๋ฆฌ๋˜๋Š” ๊นŠ์€ ํŠธ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ์˜ ์˜ํ–ฅ์„ ์™„ํ™”ํ•ด ์ค๋‹ˆ๋‹ค.

ํ”„๋ŸฐํŠธ์—”๋“œ์˜ ๊ฐˆ๋ผ์ง„ ํ๋ฆ„ ๋Œ์•„๋ณด๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ ๊ธฐ์ˆ  ์—…๊ณ„๋Š” ์„œ๋น„์Šค์˜ ์ค‘์•™ ์ง‘์ค‘ํ™” vs ๋ถ„์‚ฐํ™”, ๊ฐ€๋ฒผ์šด ํด๋ผ์ด์–ธํŠธ vs ๋ฌด๊ฑฐ์šด ํด๋ผ์ด์–ธํŠธ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ถ•์—์„œ ์ง„์ž์ฒ˜๋Ÿผ ์›€์ง์—ฌ ์™”์Šต๋‹ˆ๋‹ค.

๋ฌด๊ฑฐ์šด ๋ฐ์Šคํฌํ†ฑ ํด๋ผ์ด์–ธํŠธ์—์„œ ์›น์˜ ๋“ฑ์žฅ์œผ๋กœ ๊ฐ€๋ฒผ์šด ํด๋ผ์ด์–ธํŠธ๋กœ, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋ฐ”์ผ ์ปดํ“จํŒ…๊ณผ SPA์˜ ๋“ฑ์žฅ์œผ๋กœ ๋‹ค์‹œ ๋ฌด๊ฑฐ์šด ํด๋ผ์ด์–ธํŠธ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๋ฆฌ์•กํŠธ์˜ ์ง€๋ฐฐ์ ์ธ ๋ฉ˜ํƒˆ ๋ชจ๋ธ์€ ์ด ๋ฌด๊ฑฐ์šด ํด๋ผ์ด์–ธํŠธ ์ธก ์ ‘๊ทผ ๋ฐฉ์‹์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๋ถ„๋ฆฌ ๊ณผ์ •์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•˜๋ฉด์„œ CSS, ์ธํ„ฐ๋ ‰์…˜ ๋””์ž์ธ, HTML, ์ ‘๊ทผ์„ฑ ํŒจํ„ด์— ์ •ํ†ตํ•œ โ€œํ”„๋ŸฐํŠธ์—”๋“œ ์ „๋ฉดโ€ ๊ฐœ๋ฐœ์ž์™€ โ€œํ”„๋ŸฐํŠธ์—”๋“œ ํ›„๋ฉดโ€ ๊ฐœ๋ฐœ์ž ์‚ฌ์ด์— ์–‘๊ทนํ™”๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ ์ƒํƒœ๊ณ„์—์„œ๋Š” โ€œํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ์œ„ํ•œ ๋ฐฑ์—”๋“œโ€ ์Šคํƒ€์ผ ์ฝ”๋“œ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์ด ์„œ๋ฒ„๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๋ฉด์„œ ๋‘ ์„ธ๊ณ„์˜ ์žฅ์ ์„ ์กฐํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ง„์ž๊ฐ€ ๊ทธ ์ค‘๊ฐ„ ์–ด๋”˜๊ฐ€์—์„œ ํ”๋“ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ€œMVC ํŒจํ„ด์˜ ๋ทฐโ€์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๊นŒ์ง€

๋Œ€๊ทœ๋ชจ ์กฐ์ง์—์„œ๋Š” ์—”์ง€๋‹ˆ์–ด์˜ ์ผ๋ถ€๊ฐ€ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ํ”Œ๋žซํผ ํŒŒํŠธ์—์„œ ์ผํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐœ๋ฐœ์ž๋Š” ๋‚˜๋จธ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œํ•œ๋œ ์‹œ๊ฐ„๊ณผ ์ฃผ์˜๋ฅผ ์ง‘์ค‘ํ•˜์—ฌ ํฐ ์„ฑ๊ณผ๋ฅผ ๋‚ด๋Š” ์ผ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„๊ณผ ์ฃผ์˜๋ ฅ์˜ ์ œ์•ฝ์„ ๋ฐ›์œผ๋ฉด ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ๊ธธ๋กœ ์ด๋Œ์–ด์ฃผ๊ณ  ์„ฑ๊ณต์˜ ๊ตฌ๋ ํ……์ด์— ์‰ฝ๊ฒŒ ๋น ๋œจ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๊ธ์ •์ ์ธ ์ œ์•ฝ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์„ฑ๊ณต์˜ ํฐ ๋ถ€๋ถ„์€ ์ตœ์ข… ์‚ฌ์šฉ์ž ๋””๋ฐ”์ด์Šค์—์„œ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ํŒจ๋Ÿฌ๋‹ค์ž„์— ๊ฐ‡ํ˜€ ์žˆ์œผ๋ฉด ์ด ์›์น™์„ ์ง€ํ‚ค๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฒˆ๋“ค์—๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์นญ, ์ฒ˜๋ฆฌ, ํฌ๋งทํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: moment)๊ฐ€ ํฌํ•จ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ฆฌ์•กํŠธ์˜ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ์„œ๋ฒ„๊นŒ์ง€ ํ™•์žฅ๋˜์–ด MPA์˜ ๋‹จ์ˆœํ•œ ์š”์ฒญ-์‘๋‹ต ๋ฉ˜ํƒˆ ๋ชจ๋ธ๊ณผ SPA์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฒฐํ•ฉํ•œ Remix๋‚˜ Next์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋กœ ๋Œ์•„๊ฐ€๋Š” ์—ฌ์ •

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

๋‹ค์Œ์€ ํด๋ผ์ด์–ธํŠธ ๋ Œ๋”๋ง ํ”„๋ŸฐํŠธ์—”๋“œ(์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋งŽ์€ ๋นˆ HTML ํŽ˜์ด์ง€)๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ๋ Œ๋”๋ง ์ ‘๊ทผ ๋ฐฉ์‹

์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ๋น ๋ฅธ TTFB, ๊ฐ„๋‹จํ•œ ์šด์˜ ๋ชจ๋ธ, ๋ถ„๋ฆฌ๋œ ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค. ์ด ์กฐํ•ฉ์€ ๋ฆฌ์•กํŠธ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋งŽ์€ ์‚ฌ๋žŒ์˜ ๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ž‘์—…์„ ์‚ฌ์šฉ์ž ํ•˜๋“œ์›จ์–ด์— ๋งก๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ€์ ธ์™€์•ผ๋งŒ ์œ ์šฉํ•œ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ณต๊ฐ„์€ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ ์ค‘ํ•œ ์„ฑ๋Šฅ ๊ด€๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ˜„์ €ํ•˜๊ฒŒ ๋А๋ ค์ง€๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์œผ๋กœ์˜ ์ง„์ž…

์„œ๋ฒ„๋กœ ๋Œ์•„๊ฐ€๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ด๋Ÿฌํ•œ ๋А๋ฆฐ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ๋ฌธ์„œ ์š”์ฒญ์— ๋นˆ HTML ํŽ˜์ด์ง€๋กœ ์‘๋‹ตํ•˜๋Š” ๋Œ€์‹ , ์ฆ‰์‹œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ HTML๋กœ ๋ Œ๋”๋งํ•˜์—ฌ ์‘๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š” SPA์˜ ๋งฅ๋ฝ์—์„œ SSR์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋กœ๋“œ๋˜๋Š” ๋™์•ˆ ์ดˆ๊ธฐ์— ๋นˆ ํฐ์ƒ‰ ํ™”๋ฉด ๋Œ€์‹  ์ตœ์†Œํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํŠธ๋ฆญ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง ์ ‘๊ทผ ๋ฐฉ์‹

SSR์€ ํŠนํžˆ ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ์€ ํŽ˜์ด์ง€์˜ ์ฒด๊ฐ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šด์˜ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๊ณ , TTI๊ฐ€ ๋” ๋ฐ€๋ ค๋‚˜๋ฉด์„œ ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์€ ํŽ˜์ด์ง€์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์†๋„์— ๋Œ€ํ•œ ํ•„์š”์„ฑ - ๋” ๋งŽ์€ ์ตœ์ ํ™”

๊ทธ๋Ÿฌ๋ฏ€๋กœ SSR์€ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํ™•์‹คํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹™๋‹ˆ๋‹ค.

์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฆฌ์•กํŠธ๊ฐ€ ์ด๋ฅผ ์ด์–ด๋ฐ›์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‘ ๋ฒˆ ์ž‘์—…ํ•˜๋Š” ๋‚ด์žฌ์ ์ธ ๋น„ํšจ์œจ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

TTFB๊ฐ€ ๋А๋ฆฌ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ค ์• ์…‹์„ ๋‹ค์šด๋กœ๋“œํ•  ๊ฒƒ์ธ์ง€ ์•Œ๊ธฐ ์œ„ํ•ด ๋ฌธ์„œ ์š”์ฒญ ํ›„ head๋ฅผ ๋ฐ›๊ธฐ๊นŒ์ง€ ์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์ด ์ง€์ ์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ(streaming)์ด ๋“ฑ์žฅํ•˜์—ฌ ๋ณ‘๋ ฌ์„ฑ(parallelism)์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

ChatGPT๊ฐ€ ์ „์ฒด ์‘๋‹ต์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์Šคํ”ผ๋„ˆ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์‚ฌ๋žŒ์€ ๊ธฐ๋Šฅ์ด ๊ณ ์žฅ ๋‚ฌ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํƒญ์„ ๋‹ซ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ์™€ ์ฝ˜ํ…์ธ ๋ฅผ ์™„๋ฃŒ๋˜๋Š” ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋™์  ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ŠคํŠธ๋ฆฌ๋ฐ์€ ์„œ๋ฒ„์—์„œ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ํŽ˜์นญ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋™์‹œ์— ๋ธŒ๋ผ์šฐ์ €์—์„œ ์• ์…‹ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๋ชจ๋‘ ๋™์‹œ์— ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ HTML์„ ์ „์†กํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํŽ˜์นญํ•˜๊ณ  ๋ชจ๋“  ๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์œ„์˜ ์ด์ „ ๋‹ค์ด์–ด๊ทธ๋žจ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

์ด ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ์ˆ ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์Šคํƒ ๋˜๋Š” ์—์ง€ ๋Ÿฐํƒ€์ž„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

HTTP/2์—์„œ๋Š” ์—ฌ๋Ÿฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋™์‹œ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ธ HTTP ์ŠคํŠธ๋ฆผ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, HTTP/1์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ž‘์€ ๊ฐœ๋ณ„ ์ฒญํฌ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” Transfer-Encoding: chunked ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์ฝ๊ธฐ ๊ฐ€๋Šฅํ•œ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์‘๋‹ต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Fetch API๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„œ๋ฒ„์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต์„ ์ „์†กํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ๋‹ค์‹œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๊ธด๋ฐ€ํ•œ ํ˜‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

์ง€๊ธˆ๊นŒ์ง€๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ Œ๋”๋งํ•œ ํŠธ๋ฆฌ๋ฅผ ์„œ๋ฒ„์—์„œ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค๋Š” ๋™์‹œ์— HTML์„ ์ผ์ฐ ํ”Œ๋Ÿฌ์‹œ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์™€ ์• ์…‹์˜ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋™์‹œ์— ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋ฐ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ํŽ˜์นญ ์ œ์•ฝ ์กฐ๊ฑด

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

์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌด์—‡์„ ๊ฐ€์ ธ์˜ฌ์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด โ€œ๋ Œ๋”๋ง ํ›„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐโ€ ์ˆœ์„œ๋Š” ๋ ˆ์ด์•„์›ƒ ์ด๋™์— ๋”ฐ๋ผ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๋ฉด ์ˆœ์ฐจ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์›Œํ„ฐํด๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

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

Relay ์ดํ•ดํ•˜๊ธฐ

Relay์˜ ์›๋ฆฌ์™€ Facebook์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋Œ€๊ทœ๋ชจ๋กœ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์ดํ•ดํ•ด ๋ณด๋ฉด ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…์€ ์ดํ›„์— ๋ณด๊ฒŒ ๋  ํŒจํ„ด์„ ์ดํ•ดํ•˜๋Š” ๋ฐ์—๋„ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ปดํฌ๋„ŒํŠธ์—๋Š” ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ์ด ํ•จ๊ป˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Relay์—์„œ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ์„ GraphQL ์กฐ๊ฐ์œผ๋กœ ์„ ์–ธ์ ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ฝ”๋กœ์ผ€์ด์…˜์„ ์ง€์›ํ•˜๋Š” React Query์™€ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์นญํ•˜๋Š” ์ž‘์—…์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ์‹œ๊ฐ„ ๋™์•ˆ ํŠธ๋ฆฌ ํƒ์ƒ‰์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

    Relay ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ์ดํ„ฐ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ตœ์ ํ™”๋œ GraphQL ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ฟผ๋ฆฌ๋Š” ๋Ÿฐํƒ€์ž„์— ๊ฒฝ๋กœ ๋ฐ”์šด๋”๋ฆฌ(๋˜๋Š” ํŠน์ • ์ง„์ž…์ )์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Relay๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํฐ ํŠธ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋งŽ์€ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋‹ค์†Œ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ DX ์†์„ฑ์„ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด GraphQL, ํด๋ผ์ด์–ธํŠธ ์ธก ๋Ÿฐํƒ€์ž„ ๋ฐ ๊ณ ์„ฑ๋Šฅ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๋” ๋„“์€ ํ™˜๊ฒฝ์—์„œ ๋ฆฌ์•กํŠธ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋น„์Šทํ•œ ํŒจํ„ด์„ ๋”ฐ๋ฅด๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐจ์„ ์ฑ…

์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์™€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ์š”?

๋ฐ”๋กœ Remix๋‚˜ Next์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์˜ ์ค‘์ฒฉ ๊ฒฝ๋กœ(nested routes) ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ์€ URL์— ๋งคํ•‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ URL์˜ ์ค‘์ฒฉ๋œ ์„ธ๊ทธ๋จผํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ ํ•˜์œ„ ํŠธ๋ฆฌ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ์ด ๋งคํ•‘์„ ํ†ตํ•ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํŠน์ • URL์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์™€ ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ ์ด๋Ÿฌํ•œ ์บก์Аํ™”๋Š” ๋…๋ฆฝ์ ์ธ ํ•˜์œ„ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์˜ค๋ฅ˜ ๊ฒฝ๊ณ„๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ URL์„ ํ™•์ธํ•˜์—ฌ ๋ฐ์ดํ„ฐ์™€ ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ SPA ์ „ํ™˜์ด ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๋ณ‘๋ ฌํ™”

์„œ์ŠคํŽœ์Šค, ๋™์‹œ(concurrent) ๋ชจ๋“œ, ์ŠคํŠธ๋ฆฌ๋ฐ์ด ์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์„œ์ŠคํŽœ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ ํ•˜์œ„ ํŠธ๋ฆฌ๊ฐ€ ๋กœ๋”ฉ UI๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋ Œ๋”๋ง์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ŠคํŠธ๋ฆฌ๋ฐ์—์„œ ๋ณด์•˜๋“ฏ์ด ๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด ๋” ๋นจ๋ฆฌ ์ „์†ก์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Remix์—์„œ๋Š” ์ด ํŒจํ„ด์ด ๊ฒฝ๋กœ ์ˆ˜์ค€ ๋ฐ์ดํ„ฐ ๋กœ๋”์˜ defer ํ•จ์ˆ˜๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

// Remix API๋Š” ์ค‘์ฒฉ๋œ ๋กœ๋”๊ฐ€ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œ๋˜๋Š” ๊ฒฝ๋กœ ๊ฒฝ๊ณ„์—์„œ
// ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์นญํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
export function loader ({ params }) {
	// ๋ฐ์ดํ„ฐ ํŽ˜์นญ์„ ์‹œ์ž‘ํ•˜์ง€๋งŒ ๋ Œ๋”๋ง์„ ๋ง‰์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
	const productReviewsPromise = fetchReview(params.id)
	// ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š”๋ฐ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
	const product = await fetchProduct(params.id)

	return defer({ product, productReviewsPromise })
}

export default function ProductPage() {
	const { product, productReviewsPromise }  = useLoaderData()
	return (
		<>
			<ProductView product={product}>
			<Suspense fallback={<LoadingSkeleton />}>
				<Async resolve={productReviewsPromise}>
					{reviews => <ReviewsView reviews={reviews} />}
				</Async>
			</Suspense>
		</>
	)
}

Next์˜ RSC๋Š” ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์˜ ๋น„๋™๊ธฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ ํŒจํ„ด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

// ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์œ ์‚ฌํ•œ ํŒจํ„ด์˜ ์˜ˆ์‹œ ์ž…๋‹ˆ๋‹ค.
export default async function Product({ id }) {
	// ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜์ง€๋งŒ ๋ Œ๋”๋ง์„ ๋ง‰์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
	const productReviewsPromise = fetchReview(id)
	// ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๋ Œ๋”๋ง์„ ๋ง‰๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
	const product = await fetchProduct(id)
	return (
		<>
			<ProductView product={product}>
			<Suspense fallback={<LoadingSkeleton />}>
				{/* use() ํ›…์œผ๋กœ ๋‚ด๋ถ€์˜ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ์–ธ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค. */}
				<ReviewsView data={productReviewsPromise} />
			</Suspense>
		</>
	)
}

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์›์น™์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์นญํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๊ฐ€๊นŒ์šด ๋กœ๋”์™€ RSC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

๋ถˆํ•„์š”ํ•œ ๋Œ€๊ธฐ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜์—ฌ ํŽ˜์ด์ง€๊ฐ€ ๋‹จ๊ณ„์ ์œผ๋กœ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉฐ, ์ด๋Š” ์„œ์ŠคํŽœ์Šค๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

RSC ์ž์ฒด์—๋Š” ๊ฒฝ๋กœ ๊ฒฝ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋ฅผ ์ด‰์ง„ํ•˜๋Š” ๊ณ ์œ ํ•œ API๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ตฌ์กฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆœ์ฐจ์ ์ธ ๋„คํŠธ์›Œํฌ ์›Œํ„ฐํด์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋‚ด์žฌํ™”ํ•˜๋ฉด์„œ, ๋” ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•จ๊ณผ ๋™์‹œ์— ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜๋‚˜ ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ฐ€๋Šฅ์„ฑ(foot-gun)์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ท ํ˜•์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฒˆ์—ญ์ž ์ฃผ : foot-gun์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฐœ์— ๋Œ€ํฌ๋ฅผ ๋งž์ถ”๋“ฏ์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‹ค์ˆ˜๋กœ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜ ๋ฐ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์ž์œ ๋กœ์›€๊ณผ ์œ ์—ฐ์„ฑ์ด ๋†’์•„์งˆ์ˆ˜๋ก ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ๋†’์•„์ง‘๋‹ˆ๋‹ค.

RSC๋ฅผ ๋ฐ์ดํ„ฐ์— ๊ฐ€๊น๊ฒŒ ๋ฐฐํฌํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์›Œํ„ฐํด์— ๋น„ํ•ด ์ˆœ์ฐจ์  ์›Œํ„ฐํด์˜ ์˜ํ–ฅ์ด ํฌ๊ฒŒ ์ค„์–ด๋“ ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŒจํ„ด์„ ๊ฐ•์กฐํ•˜๋Š” ๊ฒƒ์€ RSC๊ฐ€ URL์„ ํŠน์ • ์ปดํฌ๋„ŒํŠธ์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์šฐํ„ฐ์™€ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

RSC์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์ „์— ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ์ดํ•ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ณ€ํ˜•

ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ํŒจ๋Ÿฌ๋‹ค์ž„์—์„œ ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์€ ์ผ์ข…์˜ ํ‘œ์ค€ํ™”๋œ ์ €์žฅ์†Œ(์˜ˆ: Redux store) ๋‚ด๋ถ€์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์—์„œ ๋ณ€ํ˜•(mutation)์€ ์ข…์ข… ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํด๋ผ์ด์–ธํŠธ ์บ์‹œ๋ฅผ ์ตœ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ณด๋‚ด ์„œ๋ฒ„์˜ ์›๊ฒฉ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ๋งŽ์€ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ํ•„์š”ํ–ˆ๊ณ , The new wave of React state management์—์„œ ์‚ดํŽด๋ณด์•˜๋˜ ๋ชจ๋“  ์˜ˆ์™ธ ์ผ€์ด์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

Hook์˜ ๋“ฑ์žฅ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์˜ˆ์™ธ ์ผ€์ด์Šค์— ํŠนํ™”๋œ Redux RTK ๋ฐ React Query์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์™ธ๋ถ€๋กœ ์ „์†กํ•˜๊ณ , ๋ฆฌ์•กํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๊ฐ’์ด ์ „ํŒŒ๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋™์•ˆ ๋น„ํšจ์œจ์ ์ธ ์ˆœ์ฐจ์  ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์‰ฝ๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฆฌ์•กํŠธ์˜ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ์„œ๋ฒ„๊นŒ์ง€ ํ™•์žฅ๋˜๋ฉด ์ด ๊ธฐ์กด ํŒจํ„ด์€ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€”๊นŒ์š”?

์ด โ€œํ”„๋ŸฐํŠธ์—”๋“œ ํ›„๋ฉดโ€ ์Šคํƒ€์ผ ์ฝ”๋“œ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์ด ์‹ค์ œ ๋ฐฑ์—”๋“œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” Remix์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฏธ์ง€๋กœ, ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ MPA(๋‹ค์ค‘ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ-์‘๋‹ต ๋ชจ๋ธ์„ ํ–ฅํ•ด ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

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

remix์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„

์ด ์ „ํ™˜์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์›น์˜ ๋‹ค์Œ ์ „ํ™˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ํŒจํ„ด์€ ์‹คํ—˜์ ์ธ โ€œ์„œ๋ฒ„ ์•ก์…˜ ํ•จ์ˆ˜โ€๋ฅผ ํ†ตํ•ด RSC์—๋„ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ์˜ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ์„œ๋ฒ„๋กœ ํ™•์žฅ๋˜๋Š” ๊ฒฝ์šฐ, ์š”์ฒญ-์‘๋‹ต ๋ชจ๋ธ์ด ์ ์ง„์ ์œผ๋กœ ํ–ฅ์ƒ๋œ ํ˜•ํƒœ๋กœ ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ข‹์€ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฉ˜ํƒˆ ๋ชจ๋ธ์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ธฐ์กด์˜ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ์ดํ•ดํ•˜๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ์ˆœ์ „ํžˆ ํด๋ผ์ด์–ธํŠธ ์ธก ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๋ฆฌ์•กํŠธ์˜ ๋ฉ˜ํƒˆ ๋ชจ๋ธ์€ ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ Œ๋”๋ง ํŠธ๋ฆฌ์— ๊นŠ์ด ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

RSC(React Server Components)๋Š” ์„œ๋ฒ„๋ฅผ ๋‹จ์ˆœํ•œ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์ผ๊ธ‰ ์‹œ๋ฏผ(first-class citizen)์œผ๋กœ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” ๊ฐ•๋ ฅํ•œ ์™ธ๋ถ€ ๋ ˆ์ด์–ด๋ฅผ ๊ฐ–์ถ”์–ด ๋ฐฑ์—”๋“œ๊ฐ€ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์— ๋‚ด์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ์ง„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜์˜ ๋ณ€ํ™”๋Š” ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ธฐ์กด์˜ ๋ฉ˜ํƒˆ ๋ชจ๋ธ์— ๋งŽ์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋šœ๋ ทํ•œ ๋‘ ๊ฐ€์ง€ ํšจ๊ณผ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์–ธ๊ธ‰ํ•ด ์˜จ ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ํŒจํ„ด์˜ ์ œ๊ณต๊ณผ ์ž๋™ ์ฝ”๋“œ ๋ถ„ํ• ์ž…๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌ์ถ• ๋ฐ ์ œ๊ณต์˜ ํ›„๋ฐ˜๋ถ€์—์„œ๋Š” ์ข…์†์„ฑ ๊ด€๋ฆฌ, ๊ตญ์ œํ™”, ์ตœ์ ํ™”๋œ A/B ํ…Œ์ŠคํŠธ์™€ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก ํ™˜๊ฒฝ์œผ๋กœ ํ•œ์ •๋  ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์€ ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ ์ตœ์ ํ™”ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ 18์˜ ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ RSC(React Server Components)๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฉ˜ํƒˆ ๋ชจ๋ธ์˜ ํ•œ ๊ฐ€์ง€ ํš๊ธฐ์ ์ธ ๋ณ€ํ™”๋Š” ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.

RSCs(React Server Components)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ์ „์ฒด์— ๊ฑธ์ณ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ชจ์Šต์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฝ์ž…๋˜๋Š” โ€œ๊ตฌ๋ฉ(holes)โ€œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

rsc

์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ์•„๋ž˜๋กœ ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ „์†ก์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž ํ•˜๋“œ์›จ์–ด์™€ ๋‹ฌ๋ฆฌ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋ฅผ ํ›จ์”ฌ ๋” ๋งŽ์ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ์˜ ๋ฟŒ๋ฆฌ๋Š” ์„œ๋ฒ„์— ์‹ฌ๊ฒจ ์žˆ๊ณ , ์ค„๊ธฐ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ€๋กœ์งˆ๋Ÿฌ ํ™•์žฅ๋˜๋ฉฐ, ์žŽ์€ ์‚ฌ์šฉ์ž ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ํ‘ธ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด ํ™•์žฅ๋œ ๋ชจ๋ธ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์˜ ์ง๋ ฌํ™” ๊ฒฝ๊ณ„๋ฅผ ์ธ์‹ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” โ€˜use clientโ€™ ์ง€์‹œ๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

์„œ๋ฒ„ ์•ก์…˜ ํ•จ์ˆ˜

ํ”„๋ŸฐํŠธ์—”๋“œ ์˜์—ญ์„ ์„œ๋ฒ„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•˜๋ฉด์„œ ๋งŽ์€ ํ˜์‹ ์ ์ธ ์•„์ด๋””์–ด๊ฐ€ ๋ชจ์ƒ‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์˜ ๋ฏธ๋ž˜๋ฅผ ์—ฟ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ GraphQL์ด๋‚˜ ๋Ÿฐํƒ€์ž„์— ๋น„ํšจ์œจ์ ์ธ ์›Œํ„ฐํด์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ์ปดํฌ๋„ŒํŠธ์™€์˜ ์ฝ”๋กœ์ผ€์ด์…˜์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”?

์„œ๋ฒ„ ํ•จ์ˆ˜์˜ ์˜ˆ๋Š” ๋ฆฌ์•กํŠธ ๊ณ„์—ด์˜ ๋ฉ”ํƒ€ํ”„๋ ˆ์ž„์›Œํฌ์ธ Qwik city์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ์•„์ด๋””์–ด๊ฐ€ ๋ฆฌ์•กํŠธ(Next) ๋ฐ Remix์—์„œ ํƒ๊ตฌ๋˜๊ณ  ๋…ผ์˜๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Wakuwork ๋ ˆํผ์ง€ํ† ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ๋ณ€ํ˜•์„ ์œ„ํ•œ ๋ฆฌ์•กํŠธ ์„œ๋ฒ„ โ€œ์•ก์…˜ ํ•จ์ˆ˜โ€๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ PoC(๊ฐœ๋… ์ฆ๋ช…)๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๋˜ํ•œ ์ด ํƒ๊ตฌ์—์„œ๋Š” ์ตœ๊ณ ์˜ DX์™€ ๊ฒฐํ•ฉ๋œ ์ตœ๊ณ ์˜ UX๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณต์žก์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ณ ๋„ํ™”๋œ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๊ฐ€ ์ˆ˜๋ฐ˜๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

โ€œ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ฑ์ทจํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ด๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ๋˜๋Š” ๊ฐ€์น˜์— ์ง‘์ค‘ํ•˜๊ณ  ๋„๊ตฌ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ง€๋‚˜์น˜๊ฒŒ ์ง‘์ค‘ํ•˜์ง€ ๋งˆ์„ธ์š” - John Carmackโ€

๋ฆฌ์•กํŠธ ์ƒํƒœ๊ณ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋„˜์–ด ์ง„ํ™”ํ•จ์— ๋”ฐ๋ผ, ์šฐ๋ฆฌ ์•„๋ž˜์™€ ์œ„์— ๋†“์ธ ์ถ”์ƒํ™”๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

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

์ง„์ž๊ฐ€ ํ”๋“ค๋ฆด ๋•Œ๋งˆ๋‹ค ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ๋ผ์šด๋“œ์˜ ๋ฐ˜๋ณต์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์ง€์‹๊ณผ ๊ฒฝํ—˜์„ ์–ป์Šต๋‹ˆ๋‹ค. ์ด์ „ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ์—ฌ์ „ํžˆ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ์ด ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹คํ–‰์Šค๋Ÿฌ์šด ์ ์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ ์  ๋” ๋งŽ์€ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ ˆ์ถฉ์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด ์ ˆ์ถฉ์ ์€ ์ตœ์ ํ™”๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ์ตœ์ ํ™”๋œ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์ด ๊ฒฐํ•ฉ๋˜๋Š” ์ง€์ ์ด๋ฉฐ, SPA์˜ ๋ณต์žกํ•œ ๋ชจ๋ธ๊ณผ MPA์˜ ๋‹จ์ˆœํ•œ ๋ชจ๋ธ์ด ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋กœ ๊ฒฐํ•ฉ๋˜๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค.

์ฐธ์กฐ




๐Ÿš€ ํ•œ๊ตญ์–ด๋กœ ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์•„ํ‹ฐํด์„ ๋น ๋ฅด๊ฒŒ ๋ฐ›์•„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด Korean FE Article(https://kofearticle.substack.com/)์„ ๊ตฌ๋…ํ•ด์ฃผ์„ธ์š”!


[Ykss]
Written by@[Ykss]
๊ณ ์ด๊ฒŒ ๋‘์ง€ ์•Š๊ณ  ํ˜๋ ค๋ณด๋‚ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์ž.

GitHubInstagramLinkedIn