April 16, 2024
์๋ฌธ : Navigating the future of frontend
์ต์ ํ๋ฐํธ์๋ ๋ฉํ ํ๋ ์์ํฌ๋ฅผ ์ดํดํ๊ณ , ๊ณผ๊ฑฐ์ ํ์ฌ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ฐ๊ฒฐํด ๋ณด์ธ์.
ํ๋ฐํธ์๋ ์ํ๊ณ๋ ์ ํ๊ธฐ์ ์์ต๋๋ค. ๋ ์ค๋ฅด๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์๋ค์ ๊ฒฝ์ํ๋ ํ๋ ์์ํฌ์ ๊ฐ๋ ๋ค, ์ง์ง์๋ค, ๋ค์ํ ์ ํธ๋ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ก ์ด๋ฃจ์ด์ง ๋ณต์กํ ํ๊ฒฝ์ ํ์ํ๊ณ ์์ต๋๋ค.
์ค๋๋ , ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ํํธ์จ์ด์ ๋ง์ ๋ถ๋ถ์ด ์น๊ณผ ์น ๊ธฐ์ ์ ์ด์ฉํ์ฌ ์คํ๋ฉ๋๋ค.
์๋ฐ ์ ํ๋ฆฟ๋ถํฐ ํ๋์, ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธ์ํ ๋ฐ์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ๋ธ๋ผ์ฐ์ , ํ๋ฉด ํฌ๊ธฐ, ๋๋ฐ์ด์ค ๊ธฐ๋ฅ, ๋คํธ์ํฌ ์ํ, ๋์์ง๋ ์ฌ์ฉ์ ๊ธฐ๋์น๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ง์ ๋๊ตฌ๊ฐ ๊ฐ๋ฐ๋์์ต๋๋ค.
ํ์ง๋ง ๋ณธ๊ฒฉ์ ์ธ ์ํํธ์จ์ด ๋ฐฐํฌ ํ๋ซํผ์ ์ถ๊ตฌํ๋ ๊ณผ์ ์์ ์น์ ๊ทผ๋ณธ์ ์ธ ์ ์ฝ ์กฐ๊ฑด์ ๋ณํ์ง ์์์ต๋๋ค.
์ด ๊ธ์์๋ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉํ ํ๋ ์์ํฌ๊ฐ ์ด๋ฌํ ์ ์ฝ์ ์ด๋ป๊ฒ ๊ทน๋ณตํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ปดํ์ผ, ๋ผ์ฐํ , ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ๋ณ๊ฒฝ, ์บ์ฑ, ๋ฌดํจํ์ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์์๋ค์ด ์ด๋ป๊ฒ ๊ฒฐํฉ๋๋์ง์ ๋ํ ๋์ ์์ค์ ๋ฉํ ๋ชจ๋ธ์ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌ์กํธ ์๋ฒ ์ปดํฌ๋ํธ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํฌํจํ ์๋ก์ด ์ํคํ ์ฒ ํจํด์ ๋ ์ ์ดํดํ ์ ์์ต๋๋ค.
์ธ๋ถ ์ฌํญ์๋ ํญ์ ๋ณต์กํ๊ณ ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์์ง๋ง, ํ๋ ์์ํฌ ์ฌ์ด์์ ๋์ ๋ณด์ด๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ตํฉ์ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ง์ง๋ง์๋ ํ๋ ์์ํฌ์ ํฅ๋ง์ฑ์ ๋ฅผ ๋์ด ์ง์๋๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ํ๋ฉด์ ์ธ API๋ฅผ ๊ฐ์ถ๊ณ , ํ๋ฐํธ์๋ ์ํ๊ณ๊ฐ ๋์๊ฐ ๋ฐฉํฅ์ ๋ ์ ์ดํดํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์น ํ๋ซํผ์ ์์ ๋๊ตฌ๋ค์ด ๊ตฌ์ถ๋๋ ํฌ๊ด์ ์ธ ๊ณ์ธต์ด๋ฉฐ ๋ณํ ์๋๊ฐ ๋๋ฆฝ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ๋ซํผ์ด ๊ฐ์ ๋๋ฉด์ ๋ ๋์ ์์ค์ ์ถ์ํ๊ฐ ํ์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ํ๋ซํผ์ด ํญ์ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋๋ค. ํ๋์๊ฐ ์ฌ๋ผ์ง๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ํ๋ถํ ์ธํฐ๋ํฐ๋ธ ๊ฒฝํ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ธฐ์ ๋ก ๊ทธ ๊ณต๋ฐฑ์ ๋ฉ์ฐ๊ณ ์์ต๋๋ค.
์ง๋ 10๋ ๊ฐ์ ๊ธฐ์ ๋ถ์ ๋ง์ ์กฐ์ง์ด ์น์ ๊ณ ๊ฐ๊ณผ ์ง์ ๋ง์ฃผํ๋ ํต๋ก๋ก ํ์ฉํจ์ ๋ฐ๋ผ, ์ด์ ์ธ๋์ ์น ๊ฐ๋ฐ์์๋ ๋์กฐ์ ์ผ๋ก ๋๊บผ์ด ํด๋ผ์ด์ธํธ ๋ฐ์คํฌํฑ ๊ฐ๋ฐ๊ณผ ์ ์ฌํ ํ๋ฐํธ์๋ ์ ๋ฌธํ(specialization)๊ฐ ์ด๋ฃจ์ด์ก์ต๋๋ค.
์ค๋๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ์ธ ์ต๊ทค๋ฌ, ๋ฆฌ์กํธ, ๋ทฐ, ์ค๋ฒจํธ, ์๋ฆฌ๋, ํต(Qwik) ๋ฑ์ ํด๋ผ์ด์ธํธ ์ธก ์ํธ ์์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด์, ๋ฐ์ดํฐ ๋ณํ์ ๋ฐ๋ผ ์ผ๊ด๋๊ฒ ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ธ๋ถ ์ฌํญ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์ฅ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ๋ ผ์์ ์ฌ์ง๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์์ฑ์ ๋ค๋ฃจ๋ ์ต์์ ๋ฐฉ๋ฒ, ๊ธฐ๋ฅ๋ณด๋ค ํ ํ๋ฆฟ์ ๋ํ ์ ํธ๋, ๋ณต์ก์ฑ์ ๋ํ ์ ํธ๋ ๋ฑ์ด ๊ทธ ์์ ๋๋ค. ๊ทธ๋ฌ๋ ํฐ ํ์์๋ ์ ์ฌํ ๊ฐ๋ ์ผ๋ก ์๋ ด๋๋ฉฐ ๋น์ทํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํฐ ์ฃผ์ ์ค ํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ ํ๋ ์์ํฌ๋ฅผ ๊ตฌ์ถํ๋ ๋ฉํ ํ๋ ์์ํฌ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ ๊ฐ์ ๋ณดํธ์ ์ธ ์ฃผ๊ธฐ๋ฅผ ์ดํดํจ์ผ๋ก์จ ์ฐ๋ฆฌ์ ์กฐ์ฌ๋ฅผ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
๋๊ตฌ์ ๊ธฐ๋ฅ์ ์์ด๋์ด๋ฅผ ํํํ๋ ๋ฅ๋ ฅ์ ๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด ๋๊ตฌ๋ ๋์ฑ ๋ณต์กํด์ง๋๋ค.
๋๊ตฌ์ ์ ํฉ์ฑ์ ๋๊ตฌ๊ฐ ์ฃผ์ด์ง ์ํฉ์ ์ ํฉํ์ง ์ฌ๋ถ์ ๋๋ค. ์กฐ์ง์ ๋งฅ๋ฝ์์ ์ด๋ ์์ฃผ ํจ์ ์ ๋น ์ง๊ฑฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด์, ๊ฐ๋ฅํ ํ ๋ง์ ์ฌ๋๋ค์ด ๋ง์กฑํ ์ ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ฅ๋ ฅ์ ํฅ์์ํค๋ ํ์ ์ ์ฃผ๊ธฐ๋ ๋ณต์ก์ฑ๊ณผ ํผ๋์ ์ด๋ํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ก ์ธํด ๊ธฐ๋ฅ์ ํต์ ํ๊ฑฐ๋ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ์ถ์ํ๊ฐ ๊ตฌ์ถ๋๋ ์ฃผ๊ธฐ๋ก ์ด์ด์ง๋๋ค. ์ด์ ๋ํ ๋์์ผ๋ก ๋ณด๋ค ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ ์ ํธํ๋ ๋ฐ๋ ์ถ์ธ๋ ์ข ์ข ๋ํ๋ฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํผ๋ก(fatigue) ํ์์ ์ฌ๋ฌ ๊ธฐ์ ์ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ ์ฌ์ด์์ ์ ํํ๊ณ ํจ๊ป ์๋ํ๋๋ก ๋ง๋ค์ด์ผ ํ๋ ๊ณผ์ ์์ ๋น๋กฏ๋ฉ๋๋ค.
๋ฒ๋ค๋ง์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ๋์ ์ ํ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
๋ฒ๋ค๋ง ์ถ์ํ๋ ํ ๋ฒ์ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ์ถ์ํ ์์ค์ด ๋์์ ธ ๊ฐ๋ฐ์๋ฅผ ๋ถํธํ๊ฒ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ด๋ฌํ ๊ฒ๋ค์ด ๋๋ฌด ๋๋ฆฌ๊ฑฐ๋ ์ ํ์ ์ด๋ผ๊ณ ์ธ์๋๋ฉด, ๊ฐ ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ฌ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ ํ๋ ์๋ก์ด ์ฃผ๊ธฐ๊ฐ ์์๋ฉ๋๋ค.
์๊ฐ์ด ์ง๋๋ฉด์ ์ด๋ฌํ ์ง์์ ์ธ ๋ฐ๋ณต๊ณผ ํจ์ ์ ๊ณ ํต์ ๊ฒฝํํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ ๋ฌด์์ด ์ค์ํ๊ณ ๋ฌด์์ด ์ค์ํ์ง ์์์ง ์๊ฒ ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธก ์ปดํฌ๋ํธ ํ๋ ์์ํฌ์์ ์๋ ๊ฐ์ ๋ฐ๋ณต์ ํตํด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋๊ตฌ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฌถ๋ ์์ฒด์ ์ธ โ๋ฉํโ ํ๋ ์์ํฌ๊ฐ ์๊ฒผ์ต๋๋ค. ๋ฆฌ์กํธ์ ๋ง๊ณ ์๋ก์ด API๋ ์ด๋ฌํ ์์ ์์ค์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ์ค ํ๋์ ํตํฉํ๊ธฐ ์ํด ๋ถ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์๋ํ ๊ฒ์ ๋๋ค.
โํญ ๋๊ฒ ๊ธธ์ ์ดํดํ๋ค๋ฉด, ๋ชจ๋ ๊ฒ์์ ๊ทธ๊ฒ์ ๋ณผ ์ ์์ ๊ฒ์ด๋คโ - ๋ฏธ์ผ๋ชจํ ๋ฌด์ฌ์
์ปดํจํฐ ์์คํ ์ ๋ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ ์ฐ์ฐ๊ณผ ์ ์ฅ์ ๋๋ค.
์์คํ ์ ์ฑ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐํ๋ ์ฐ์ฐ๊ณผ ์คํ ๋ฆฌ์ง์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฑ์ ์ ์ถ๋ ฅ(I/O) ์์ ์ ์ํด ์ ์ฝ๋ฉ๋๋ค.
์น์์๋ ์ด๋ฌํ ๊ทผ๋ณธ์ ์ธ ์ ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ๋จ์ผ ์ค๋ ๋, ์ฌ์ฉ์์ ์๋ฒ ๊ฐ์ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ผ๋ก ๋ํ๋ฉ๋๋ค.
์น์ ๋ชจ๋ ์ฐ๊ฒฐ์๋ ์์ฒญ-์๋ต ํจํด์ ๋ฐ๋ฅด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํฌํจ๋ฉ๋๋ค. ์๋ฒ๋ ํญ์ ์ฒซ ๋ฒ์งธ ํธ์ถ ํฌํธ์ ๋๋ค(CDN์์ ์ ์ ํ์ผ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค). ์ด๋ฌํ ์์ ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ด๋ป๊ฒ ๋ถ์ฐํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์ฅ๋จ์ ์ด ๋ฐ์ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ์์ ์ฐ์ฐ์ ์ํํ๋ฉด ๋น ๋ฅธ ์ํธ ์์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, ๋๋ฌด ๋ง์ผ๋ฉด ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋ตํ์ง ์๊ฒ ๋ฉ๋๋ค. ์๋ฒ์๋ ์ด๋ฌํ ์ ์ฝ์ด ์์ง๋ง ์๋ฒ์ ์์ ์ ์์ฒญํ๋ฉด ๋คํธ์ํฌ ์ง์ฐ์ด ๋ฐ์ํฉ๋๋ค. ์น์์ ์ธํฐ๋ํฐ๋ธํ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ฉด ์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด์ ๊ท ํ์ ๋ง์ถ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ ๋ค๋ฅธ ํ์ ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋ ๋ฅ๋ ฅ์ ๋๋ค.
์น์ ์ฝ๊ธฐ ์ ์ฉ ์ ์ ๋ฌธ์๋ก ์์๋์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ฐ์ดํฐ๋ฅผ ์ง์ํ๊ณ ๋์ ์ผ๋ก HTML์ ์์ฑํ๊ธฐ ์์ํ์ต๋๋ค. ์ ๋ขฐํ ์ ์๋ ํผ(form) ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ฐ๊ธฐ ๊ธฐ๋ฅ์ ์ํํ ์ ์๊ฒ ๋์ด, ์๋ก์ด ์ข ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์น์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด ๋ชจ๋ธ์์๋ ํด๋ผ์ด์ธํธ์์์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ด ๋๊ธฐ์ HTTP ์์ฒญ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ์ฐ๊ธฐ ํ ๊ฒฝํ์ ๋ํ ์ ๋ฐ์ดํธ๋ ์๋ฒ๊ฐ ์๋ก ์์ฑ๋ ๋ฌธ์๋ก ์๋ตํจ์ ๋ฐ๋ผ ๋๋ต์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค(coarse-grained). ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฅผ ํ์ํ๊ธฐ ์ํด ์์ฒด์ ์ผ๋ก ๋ค์ ๋ก๋ํฉ๋๋ค.
๊ฒฐ๊ตญ, ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ XMLHttpRequest๋ฅผ ๋์ ํ์ต๋๋ค. ์ด์ ์ฌ์ฉ์ ์์ ์ ํ์ด์ง์ ๊ด๋ จ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ๋๋ ์ธ๋ถํ๋ ๋น๋๊ธฐ์ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํด์ก์ต๋๋ค.
์ด ๋ ๊ฐ์ง ๊ฒฝ์ฐ ๋ชจ๋, ๋ ๋๋ง๋๋ ๋ด์ฉ์ ๋ฐ์ดํฐ ์ถ์ฒ๋ ์๋ฒ์ ์ํด ๊ตฌ๋๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ์ ๋๋ค.
์ด์ ์ฐ๋ฆฌ๋ ์ด ์ด์ผ๊ธฐ๋ฅผ ์ ์๊ณ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ ํ๋ฆฟ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ ์ ์ ๋ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ด๋ํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ ํด๋ผ์ด์ธํธ ์ฃผ๋๋ก ๋ฐ๋๋ฉด์ ๋น ๋ฅธ ๋๊ด์ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํด์ก๊ณ , ์ด๋ก ์ธํด ๊ธฐ์ ๋คํธ์ํฌ๋ฅผ ์จ๊ธฐ๊ฒ ๋์์ต๋๋ค.
์ด๋ ์ง๋ 10๋ ๊ฐ ์ ๊ณ์ ์ง์ ํ ๋ง์ ์ฌ๋๋ค์ด ์ด ๋ชจ๋ธ์ ์ฑํํ ์ฃผ๋ ์ด์ ์ ๋๋ค. ์๋๊ฐ ์๋ช ์ธ ์ ๊ณ์์ ๊ธฐ๋ฅ์ด ๋์ด๋ ์๋ก ๋ชจ๋ ์ฝ๋๋ฅผ ์ ์ฅํ ๊ณณ์ ๋จ ํ ๊ณณ๋ฟ์ ๋๋ค.
๋จ์ผ ๋จธ์ ์ ์ฌ์ฉํ๋ ์ ๊ทผ ๋ฐฉ์์ด ์ฑ๋ฅ์ ์ ์ฝ์ด ์๊ธฐ๋ฉด ์ด๋ฅผ ํฌ๊ธฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ถ์ฐ ์์คํ ์ ์์ญ์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ ์ฉ ์ ๊ทผ ๋ฐฉ์์ ๋ฉํ ๋ชจ๋ธ์ ๋ฐฑ์๋์ ๋น๋๊ธฐ์ ์ผ๋ก ๋๊ธฐํ๋๋ ์ฅ๊ธฐ ์คํ(long-running) ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ต๋๋ค.
์๋ฒ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ก์ ์ ํ์ ๋๋ถ๋ถ์ โํ๋ฐํธ์๋ ๋ค์ชฝโ ์ฝ๋๊ฐ ์๋ฒ๋ก ๋ค์ ์ด๋ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ค์ํ ๋ฉํ ๋ชจ๋ธ ๋ณํ ์ค ํ๋์ ๋๋ค.
๋ค๋ฅธ ์๋ฒ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์์ ์ฐจ์ด์ ์ ํ๋ถํ ํด๋ผ์ด์ธํธ ์ธก ์ํธ ์์ฉ๊ณผ ์์ ์ ์ธ ํ์ ๊ธฐ๋ฅ์ด ์ ์ง๋๋ค๋ ์ ์ ๋๋ค.
๋์ผํ ํ๋ ์์ํฌ์ ์ ํ ๋ด์์ ์๋ฒ ์ค์ฌ ํจํด์ ์ฑ๋ฅ ํน์ฑ๊ณผ ํด๋ผ์ด์ธํธ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ฅ์ ์ธ์ ์ด๋ป๊ฒ ํ์ฉํด์ผ ํ๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ํผ๋์ด ๋ฐ์ํฉ๋๋ค.
๋ฆฌ์กํธ ์๋ฒ ์ปดํฌ๋ํธ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ํตํฉํ์ฌ ์กฐํฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ์ ํตํฉ๋ ์์ฑ ๊ฒฝํ์ ์ถ๊ตฌํ๋ฉฐ ๋์๊ฐ๋๋ค. ์ด๋ ์ ๊ณ์์ ๊ฐ์ฅ ์ง๋ฐฐ์ ์ธ ํ๋ ์์ํฌ์ ๋ํ ์ค์ํ ๋ณํ์ ๋๋ค.
๋ค๋ฅธ ์ธ์ด ์ํ๊ณ์์๋ ๋น์ทํ ๊ฐ๋ ์ ๋ชจ์ํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด C#์ Blazor, Clojure์ Electric, Rust์ Leptos๋ ๋น์ทํ ์์ด๋์ด๋ฅผ ์ถ๊ตฌํฉ๋๋ค.
๋ณต์กํ ์ธ๋ถ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์, ์ ์ง๊ธ ์ด๋ฐ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋์ง ์ดํดํด ๋ด ์๋ค.
์ฑ๋ฅ ํฅ์ ์ธ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์์ ์น ๊ฐ๋ฐ์ ์๋ก์ด ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๊ฒ ๋ ๋ช ๊ฐ์ง ํต์ฌ ์์๋ฅผ ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค.
์น์ ๊ณต์ฉ์ด๋ก์, ์๋ฐ์คํฌ๋ฆฝํธ๋งํผ ๋ณดํธ์ ์ธ ์ธ์ด๋ ์์ต๋๋ค.
Node.js๊ฐ ๋ฑ์ฅํ์ ๋ ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋์์ ์คํ๋๋ ๋ํ(isomorphic) ์ฝ๋๋ฅผ ์์ฑํ ์ ์์์ต๋๋ค. Meteor์ ๊ฐ์ ์ ๊ตฌ์ ์ธ ์ด๊ธฐ ํ์คํ ํ๋ ์์ํฌ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ๊ทน์ ์ผ๋ก ์์ฉํ์ต๋๋ค.
Meteor๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๊ฐ ๋งค์ฐ ๋ค๋ฅธ ํ๊ฒฝ์ด๋ผ๋ ์ฌ์ค์ ์ถ์ํํ์ฌ ํ์คํ ๋ฐ์์ฑ๊ณผ RPC๋ฅผ ๊ฐ์ถ ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ์ด๊ธฐ ์์์์ต๋๋ค.
๋น์ ์ด ์ฌ์ธ์ ์ ๊ทผ ๋ฐฉ์์ ์ต์ํ์ ๋ทฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๋ฆฌ์กํธ์ ๊ฐ์ด ๊ฐ์ ์ด ์ ๊ณ ์ ์ฐํ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ ค ์ ๊ณ์์ ์ ์ ์จ์ ์์์ต๋๋ค.
๊ทธ ์ดํ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ ์์ฒญ๋ ์ํฅ๋ ฅ์ ๋ฐํํ์ฌ ๋ง์ ๊ฐ๋ฐ์์ ์กฐ์ง์์ ์ฌ์ค์ ํ์ค์ผ๋ก ์๋ฆฌ ์ก์์ต๋๋ค.
tPRC ๋ฐ T3 ์คํ๊ณผ ๊ฐ์ ๋๊ตฌ๋ ๋ํ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋, ํ์ , ์คํค๋ง ๋ฐ ์คํ ๋ชจ๋ธ์ ๋์ผํ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉํจ์ผ๋ก์จ ์๋ํฌ์๋ ํ์ ์์ ์ฑ์ ์ ๊ณตํฉ๋๋ค.
์ปดํ์ผ๋ฌ๋ ์์ฑํ ์ฝ๋๋ฅผ ๋์ค์ ์คํํ ์ ์๋๋ก ๋ณํ, ์ค๋น ๋ฐ ์ต์ ํํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ์๊ฐํ ์ ์์ต๋๋ค. ๋๊ท๋ชจ ํ๋ฐํธ์๋ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์ ๊ณตํ๊ธฐ์์ ์น์์ ์ด๋ฌํ ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง๋ฅผ ๋ค๋ฃน๋๋ค.
๋ฒ๋ค๋ฌ์ ์ปดํ์ผ๋ฌ ๊ธฐ์ ์ด ๊พธ์คํ ๋ฐ์ ํ๋ฉด์ ์ฒ์๋ถํฐ ๋ค์ ์์ฑ๋ ๋น ๋ฅธ ์ฐจ์ธ๋ ๋ฒ๋ค๋ฌ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ๋ฐ๋์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ๊ทธ๋ํ ๊ด๋ฆฌ์ ๋งค์ฐ ๋ฅ์ํด์ก์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ํตํด ํ๋ ์์ํฌ๋ ์๋ก ๋ค๋ฅธ ๋ฐํ์์ ์คํ๋๋ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ์ฉ ๋ชจ๋ ๊ทธ๋ํ๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฝ๋ ์ถ์ถ ์์ด๋์ด๋ ํตํฉ๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ ์ ํ๊ฒฝ์ ์๋๋ ฅ์ด ๋๋ฉฐ, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ผ์ด๋๋ ๋ง์ ๋ง๋ฒ๊ณผ๋ ๊ฐ์ต๋๋ค.
Suspense
๋ ๋๋ฌ์ต๋๋ค.Suspense๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ดํดํ๋ ๊ฒ์ ๋ฆฌ์กํธ ํ๋ ์์ํฌ์์ ๋ ์ค๋ฅด๋ ์๋ฒ ์ฐ์ ๋ฉํ ๋ชจ๋ธ์ ํ์ ํ๋ ๋ฐ ํต์ฌ์ ๋๋ค. ์๋ฆฌ๋, ๋ทฐ, ํ๋ฆฌ์กํธ, ์์คํธ๋ก์ ๊ฐ์ ๋ค๋ฅธ ํ๋ ์์ํฌ์์๋ ์ด์ ์ ์ฌํ ๋ณํ์ด ๋ชจ์๋๊ณ ์์ต๋๋ค.
์ฌ์ฉ์ ๊ฒฝํ ๊ด์ ์์์ ํต์ฌ ์ธ์ฌ์ดํธ๋ ๋ฐ์ดํฐ ์ง์ฝ์ ์ธ ๊ฒฝํ์ ๋ก๋ฉ ๋จ๊ณ๋ฅผ ๋ณด๋ค ์๋์ ์ผ๋ก ์ค๊ณํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ฑ๋ฅ ๊ด์ ์์์ ํต์ฌ ์ธ์ฌ์ดํธ๋ Suspense
๊ฐ ๋ฆฌ์์ค ๋ก๋ฉ๊ณผ ๋ ๋๋ง์ ๋ณ๋ ฌํ๋ฅผ ์ ๊ณตํ๋ค๋ ์ ์
๋๋ค.
Facebook์ BigPipe ๊ฐ๋ ์์ ์๊ฐ์ ์ป์ ์ด ๊ธฐ๋ฅ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ํด ์ํ์ธ ๋์ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ HTML์ ๋ ๋๋งํ๋ ๋๊ธฐ์ ๋๊ธฐ ์๊ฐ์ ์ค์ฌ์ค๋๋ค.
๋์ ํด๋ผ์ด์ธํธ๋ ๋ธ๋ผ์ฐ์ ์์ HTML์ ํ์ฑํ ๋ ํด๋น ํ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ๊ธ๊ผด, CSS, JS์ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๋ค์ด๋ก๋ํ๊ธฐ ์์ํ ์ ์์ต๋๋ค. ์ด ๊ณผ์ ์ ์๋ฒ๊ฐ ๋ณ๋ ฌ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๋์ ์งํ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์์ ์๋ฒ ์ค์ฌ์ โํ์น ํ ๋ ๋๋งโ ๋ชจ๋ธ์์ TTFB(Time to first byte)์ ๋ํ ์ํฅ์ ์ค์ด๊ณ ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ํ์ธํธ(Largest Contentful Paint, LCP)์ ์๋๊ฐ ๋๋ ค์ง๋๋ค.
ํ์ง๋ง ๋จ์ํ <head>
๋ฅผ ๋น ๋ฅด๊ฒ ๋น์์ ๋ชจ๋ ๊ฒ์ ํด๋ผ์ด์ธํธ์์ ๋น๋๊ธฐ ๋ก๋ฉํ๋ ๊ฒ๊ณผ ๋น๊ตํ์ฌ, ๋จ๊ณ์ ๋ก๋ฉ ๋จ๊ณ๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ์ ์ฝ๋๊ฐ ํญํฌ์ฒ๋ผ ๋ก๋๋๋ฉด์ ํ์ด์ง ์ํ์ผ๋ก ์์น ์๋ ๋ก๋ฉ ์์ด์ฝ(Throbber)์ด โํ์ฝ์ฒ๋ผโ ํ์ฐ๋์ด ๋์ ๋ ์ด์์ ๋ณํ(Cumulative Layout Shift, CLS)๋ฅผ ์ด๋ํ๋ ๊ฒ๊ณผ๋ ๋์กฐ์ ์
๋๋ค.
์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์ธ์๋ RSC๋ ์ง๋ ฌํ๋ ๊ฐ์ DOM์ ๋ค์ด๋ก๋ ํ ์ ์๊ฒ ํฉ๋๋ค. ๊ธฐ์ ์ ๊ด์ ์์ ๋ณผ ๋ ์ป์ ์ ์๋ ์ธ์ฌ์ดํธ๋ Suspense๊ฐ ๋ ๋๋ง์ด ๋น๋๊ธฐ์์ด๊ณ ์์๊ฐ ์์ด ์คํธ๋ฆฌ๋ฐ๋ ๋, ์ผ๊ด๋ ๋ ๋๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๋ ๊ฒ์ ๋๋ค.
์ผ๊ด์ฑ(Consistency)์ด๋ ํ์๋๋ ๋ด์ฉ์ด ํ์ฌ ์์ค๋ฅผ ์ ํํ๊ฒ ๋ฐ์ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์์์์ UI๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ํ์ํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ฐ์ DOM๊ณผ ์๊ทธ๋(signals)์ ์ด๋ฅผ ์ํ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ฐจ์ด์ ์ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด, ๊ฐ์ DOM์ โ๋ทฐ๋ฅผ ๋ณ๊ฒฝโํ๋ฏ๋ก ๋๋ต์ ์ผ๋ก ์๋ํ๋ ๋ฐ๋ฉด, ์๊ทธ๋์ โ๋ชจ๋ธ์ ๋ณ๊ฒฝโํ๋ฏ๋ก ์ธ๋ถํ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ ์ ๊ทผ ๋ฐฉ์์๋ ์๋ก ๋ค๋ฅธ ์ฅ๋จ์ ์ด ์์ต๋๋ค.
Suspense
๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ปดํฌ๋ํธ ํธ๋ฆฌ๊ฐ ๋ก๋๋ ๋ ๋ฆฌ์์ค๊ฐ I/O ๋ฐ์ด๋ ์์
์ผ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋๋ ๋ ๋ ๋๋ง ์ผ๊ด์ฑ ๋ฌธ์ ๋ฅผ ๋ค๋ฅธ ๊ฐ๋์์ ํด๊ฒฐํฉ๋๋ค.
์ฆ, ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์์ค์ ์๋ต์ ์คํธ๋ฆฌ๋ฐํ ์ ์๊ณ , ๋คํธ์ํฌ๋ฅผ ํตํด ๋์ฐฉํ๋ ๊ฒ์ด ์์์ ์๊ด์์ด ์ผ์ด๋ ๋ ์๋์ผ๋ก ๊ฒฝํฉ ์กฐ๊ฑด์ ๊ด๋ฆฌํ๊ณ ํ๋ ์ด์คํ๋ DOM ์ฝํ ํธ๋ฅผ ์ต์ข DOM ์ฝํ ํธ๋ก ๊ต์ฒดํ ํ์๊ฐ ์์ต๋๋ค.
๋ํ ๋น๋ ํ์ ์ปดํ์ผ๋ฌ์ ์๋ฆฌํ๊ฒ ๊ฒฐํฉํ์ฌ ๋ถ๋ถ ์ฌ์ ๋ ๋๋ง๊ณผ ๊ฐ์ ์๋ก์ด ๋ ๋๋ง ๋ฐฉ๋ฒ์ ๋ง๋ค ์๋ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์์ ๋ฐ์ ํ๋ ๋์ ์น์ ๊ตฌ๋ํ๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ๋ ๋น ๋ฅด๊ฒ ์งํํ์ต๋๋ค.
์๋ฒ ๋ฐํ์์์ ๋ธ๋ผ์ฐ์ ๋ก์ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ฅผ ์ง์ํ ์ ์๋ ๋ฐฑ์๋ ์ธํ๋ผ๊ฐ ํ์ํฉ๋๋ค.
ํ์ฌ ๋ง์ ์๋ฒ ์ธํ๋ผ ์ ๊ณต์ ์ฒด๊ฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค. ์๋ฒ๋ฆฌ์ค ๋ฐ ์ฃ์ง ์ปดํจํ ์ ์ธ๊ธฐ์ ํจ๊ป ์ฃ์ง ๋ฐ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์์ ๋น ๋ฅด๊ฒ ์์ํ๊ณ ์คํํ ์ ์๋๋ก ๊ตฌ์ถ๋ Deno, Bun, txki.js, LLRT์ ๊ฐ์ ์๋ก์ด ๋ฐํ์์ด ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ fetch ๋ฐ ReadableStream๊ณผ ๊ฐ์ ์น ํ์ค API๋ฅผ ๊ตฌํํ๊ณ ์์ต๋๋ค. ๋ชจ๋ ๊ธฐ๋ณธ ์ธํ๋ผ์ ๋ณต์ก์ฑ์ ์ถ์ํํ๋ ์๋ฃจ์ ์ ๊ฐ์ถ โํ๋ฐํธ์๋ ํด๋ผ์ฐ๋โ ์ ๊ณต์ ์ฒด๊ฐ ๋ฑ์ฅํ๊ณ ์์ต๋๋ค.
โ์ฐ ์ ์์ผ๋ก ๊ฐ๋ ๊ธธ์ ํ๋๊ฐ ์๋๋ผ๋ ๊ฒ์ ์ดํดํด์ผ ํฉ๋๋ค.โ - ๋ฏธ์ผ๋ชจํ ๋ฌด์ฌ์
๋ผ์ฐํ ์ ๋ค์ํ ๊ณ์ธต์ ๊ฑธ์ณ ๊ธฐ์ด์ ์ธ ์ญํ ์ ํฉ๋๋ค. ์ธํฐ๋ท๊ณผ ์น์ ์ผ๋ จ์ ๋ผ์ฐํฐ๋ก ๋ณผ ์ ์์ต๋๋ค. ๋ผ์ฐํฐ๋ ๋ชจ๋ ํ๋ ์์ํฌ์ ์ค์ถ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ผ์ฐํฐ๋ ๋น๋ ์ ์ปดํ์ผ๋ฌ์ ์ฒซ ๋ฒ์งธ ์ง์ ์ ์ด์ ์ด๊ธฐ ์์ฒญ์ ์์์ ์ด๋ฉฐ ์ดํ ๋ง์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ๋ชฉ์ ์ง์ ๋๋ค.
URL(๋ฐ QR์ฝ๋)์ ํธ์์ฑ๊ณผ ๊ณต์ ๊ฐ๋ฅ์ฑ์ ์ํํธ์จ์ด ๋ฐฐํฌ ๋ฉ์ปค๋์ฆ์ผ๋ก์ ์น์ ์ฑ๊ณต์ ์์ด ๊ธฐ๋ณธ์ด ๋ฉ๋๋ค. ๋ผ์ฐํฐ๋ ๋ก๋ํด์ผ ํ๋ ์ฝ๋์ ๋ฐ์ดํฐ์ ๋ํ URL์ ์ฐ๊ฒฐํ๋ ์ฐ๊ฒฐ๊ณ ๋ฆฌ์ ๋๋ค.
๋ผ์ฐํฐ๋ฅผ URL์ ์ํ ๊ด๋ฆฌ์๋ก, ๋ผ์ฐํธ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๊ณต์ ๊ฐ๋ฅํ ๋์์ผ๋ก ์๊ฐํ๋ ๊ฒ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋๋ค. URL์ ํ์ํ ๋ ์ด์์๊ณผ ๋ก๋ํด์ผ ํ ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ์ ๋ํ ๊ธฐ๋ณธ ์ ๋ ฅ์ด๋ฏ๋ก ๋ผ์ฐํฐ๋ ํ์์ ์ธ ์์ ์ ๋๋ค.
๋ผ์ฐํฐ๋ ๋ฐ์ดํฐ ํ์นญ ๋ฐ ์บ์ฑ, ๋ณ๊ฒฝ ๋ฐ ์ฌ๊ฒ์ฆ๊ณผ ๊ฐ์ ์ค์ํ ์์ ๊ณผ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ผ์ฐํฐ์ ์์น์ ์์ ์ํ ์์น๋ ํ๋ฐํธ์๋ ์ํคํ ์ฒ์ ๊ธฐ๋ณธ์ ๋๋ค.
๊ธฐ์กด์ ์๋ฒ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์์๋ ๋ผ์ฐํฐ๊ฐ ์์ฒญ์ URL์ ๋งคํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ HTML ํ ํ๋ฆฟ์ ๋ ๋๋งํฉ๋๋ค. URL ๊ฐ ์ ํ ์ ์ ๋ฌธ์๊ฐ ์์ฑ๋๋ฉฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก ๊ณ ์นจํด์ผ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์์๋ ๋ผ์ฐํฐ์ ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ค์ด๋ก๋๋์ด, ๋ชจ๋ ๊ฒ์ด ๋ถํธ์คํธ๋ฉ๋ ํ ๋งํฌ ํด๋ฆญ ๋ฐ ๋ค๋ก/์์ผ๋ก ํ์ ์ด๋ฒคํธ์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ํ์คํ ๋ฆฌ ๋ณ๊ฒฝ์ ์์ ํ๊ธฐ ์์ํฉ๋๋ค.
์ฌ๊ธฐ์์ ์๋ก์ด ๋ฌธ์๋ฅผ ์์ฒญํ๋ ๋์ URL์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ์กด ๋ฌธ์์ ๋ค์ ๋ ๋๋งํ๋ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ ์ฝ๋์ ๋งคํํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ ์ SPA ์ํคํ ์ฒ์ ํต์ฌ์ ๋๋ค. ๋ผ์ฐํ ์ ํ์ ํด๋ผ์ด์ธํธ์ ํ์ฌ ์ํ๋ฅผ ์ ์งํ๋ฏ๋ก ๊ธฐ์กด JS, CSS ๋ฐ ๊ธฐํ ๋ฆฌ์์ค๋ฅผ ๋ค์ ํ๊ฐํ ํ์๊ฐ ์์ต๋๋ค. ์ ํ์ด ์ด๋ฃจ์ด์ง๊ธฐ ์ ์ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์์ต๋๋ค. ๋ํ ๋ผ์ฐํ ์ ํ ์ฌ์ด์ ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค(์ด์ ์ ์ฌํ UX ํจํด์ด ํ๋ซํผ์ ๋ด์ฅ๋์ด ์์ต๋๋ค).
๋๋ถ๋ถ์ ๋ฉํ ํ๋ ์์ํฌ๋ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ ์ ์ ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ์งํ๋ฉด์ ์๋ฒ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์กฐํฉํ์ฌ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๊ตฌ๋ถ์ Qwik๊ณผ RSC ์ํคํ ์ฒ๊ฐ ์ทจํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ผ ํฌ๋ฏธํด์ง๊ธฐ ์์ํฉ๋๋ค.
ํ๋์ ๋์ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ ์ ์ผ๋ฐ์ ์ธ ํจํด์ด์์ต๋๋ค. ์ฆ, ๋ผ์ฐํฐ๊ฐ ํธ๋ฆฌ์ ์ด๋ ๊ณณ์์๋ ๋ผ์ฐํธ๋ฅผ ์ปดํฌ๋ํธ๋ก ๋ ๋๋งํ๋ ๋ฐฉ์์ด์์ต๋๋ค.
์ด ์ค๊ณ๋ ๋ฐํ์์ <Redirect />
์ปดํฌ๋ํธ ๋ ๋๋ง๊ณผ ๊ฐ์ด ๋งค์ฐ ์ ์ฐํ๊ณ ๋์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ค ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ์ง ์๊ธฐ ์ํด์๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ๋ ๋๋งํ์ฌ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
์ค์ ๋ก ์ด ํจํด์ ์ฌ์ฉํ๋ ๋ง์ ํด๋ผ์ด์ธํธ ์ค์ฌ ์ปดํฌ๋ํธ ์ํคํ ์ฒ๋ ์๋นํ ์์ ํด๋ผ์ด์ธํธ-์๋ฒ ๋คํธ์ํฌ ์ํฐํด์ ๋ถ๋ชํ๊ฒ ๋ฉ๋๋ค.
์ํฐํด์ ์ผ๋ จ์ ์์ฐจ์ ์ธ ๋คํธ์ํฌ ์์ฒญ์ผ๋ก, ๊ฐ ์์ฒญ์ ์ด์ ์์ฒญ์ ์๋ฃ ์ฌ๋ถ์ ์์กด์ ์ ๋๋ค. ์ํฐํด์ ๋คํธ์ํฌ ํญ์ ์จ์ด ์๋ ์กฐ์ฉํ ์ฑ๋ฅ ์ ํ ์์ธ์ ๋๋ค.
๋ฉํ ํ๋ ์์ํฌ ๋ผ์ฐํฐ๋ ์ ์ ์ผ๋ก ์ ์๋ ๋ผ์ฐํธ ์ ์์ ์๋ ดํฉ๋๋ค.
ํ์ผ ์์คํ ๊ธฐ๋ฐ ๋ผ์ฐํ ์ ํด๋ ๊ตฌ์กฐ๋ฅผ URL์ ๋งคํํ ๋ค์, URL์ ํด๋น ํด๋์ ํน์ ํ์ผ์ ๋งคํํ๋ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ์ปดํ์ผ๋ฌ๋ ํ์ผ ์์คํ ์ ํ์ํ์ฌ ๋ผ์ฐํธ๋ฅผ ์์ฑํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ์์ ๋ชจ๋ ๋ผ์ฐํธ๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ณ ํ์ ์์ ์ฑ์ ๊ฐ์ถ ๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
์ด๋ฌํ ๋ผ์ฐํธ ์ ์๋ ์์ฐ์ค๋ฝ๊ฒ ๊ณ์ธต์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ์ฑํฉ๋๋ค. ๋๋ถ๋ถ์ ๋ผ์ฐํฐ๋ URL ์ธ๊ทธ๋จผํธ๋ฅผ ํด๋น ๊ตฌ์ฑ ์์ ํ์ ํธ๋ฆฌ์ ๋งคํํ๋ ์ค์ฒฉ๋ ๋ผ์ฐํธ ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ์ด ์ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ URL์ ํ์ฉํ๋ ๊ฒ์ด ๋ง์ ์๋ฒ ์ฐ์ ๋ฐ์ดํฐ ๋ก๋ฉ ํจํด์์ ์ด๋ป๊ฒ ํต์ฌ์ ์ธ์ง ๋ค์์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
URL์ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ๋งคํํ ํ์๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํด์ผ ํฉ๋๋ค. ์ง๊ธ๊น์ง ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ๋ฉํ ํ๋ ์์ํฌ์ ํฐ ์ฃผ์ ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ํ๋ถํ ํด๋ผ์ด์ธํธ ์ธก ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ฅ์ ํฌ๊ธฐํ์ง ์์ผ๋ฉด์ ์๋ฒ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ํ์ ์ฑ๋ฅ ์ด์ ์ ์กฐํ์ํค๋ ๊ฒ์ ๋๋ค.
์ฝ๋ก์ผ์ด์ ์ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ํฐ ๋ถ๋ถ์ด๋ฉฐ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์์ฒด ๋ฐ์ดํฐ ์ข ์์ฑ์ ๊ด๋ฆฌํ๋ ์ปดํฌ๋ํธ์ ์ด์์ฑ, ์ฆ ์์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์๋ ํธ๋ ์ด๋ ์คํ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ๊ตฌ์ฑ ์ ๋ถํ์ํ ์ํฐํด์ด ๋ฐ์ํ ์ํ์ด ์์ต๋๋ค. ๋ฐ๋ฉด์ ํ์นญ์ ํตํด ํ๋กญ(๋๋ ํ๋ก๋ฏธ์ค)์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๊ฒ์ ๋ผ์ฐํธ ์์ค๊น์ง ๋์ด์ฌ๋ ค์ง๋๋ค.
์์ Relay๊ฐ ๋ฐ์ด๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ โํ๋ฐํธ์๋ ๋ค์ชฝโ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ผ๊ณ ๋ง์๋๋ ธ์ต๋๋ค. ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ์ ์ฝ๋ก์ผ์ด์ ์ ํ์ฉํ์ง๋ง, ํ์นญ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ณต์ก์ฑ๊ณผ ๋ฒ๋ค ํฌ๊ธฐ ๋น์ฉ์ด ๋ฐ์ํ๋ฉฐ GraphQL์ด ํ์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ํ์นญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํ๊ฑฐ๋ GraphQL์ ์ฌ์ฉํ์ง ์๊ณ ์๋ฒ๋ก ์ด๋ํ ๋ ์ด๋ฌํ ์ฅ๋จ์ ์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์๋์ง ์์๋ด ์๋ค.
ํ๋ฐํธ์๋๋ฅผ ์ํ ๋ฐฑ์๋(Backend For Frontend, BFF)๋ ์๋น์ค ์งํฅ ๋ฐฑ์๋ ํ๊ฒฝ์์ ์ต์ํ ๋์์ธ ํจํด์ ๋๋ค.
๊ธฐ๋ณธ ์์ด๋์ด๋ ๋ง์ถคํ ๋ฐฑ์๋ ์๋น์ค๊ฐ ๊ฐ ํด๋ผ์ด์ธํธ ํ๋ซํผ(์น, ๋ชจ๋ฐ์ผ, CLI ๋ฑ) ๋ฐ๋ก ๋ค์ ์์นํ์ฌ ํด๋น ํ๋ฐํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ค๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด HTMX์ ๊ฐ์ ์๋ฒ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฐฑ์๋๋ AJAX ์คํ์ผ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ ์์ ํด๋ผ์ด์ธํธ์๊ฒ HTML ๋ถ๋ถ์ผ๋ก ์๋ตํฉ๋๋ค.
RSC์ ๊ฒฝ์ฐ, ํ๊ฒฝ์ ๋ฐ๋ผ ์ง๋ ฌํ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ์์ ํด๋ผ์ด์ธํธ ๋๋ ๋ค์ด์ดํธ ์ค์ธ ๋๊บผ์ด ํด๋ผ์ด์ธํธ์ ๋ฐํํ๋ ๋ง์ถคํ ๋ฐฑ์๋์ ๋๋ค.
์๋ฒ์์ ์ด ๊ณ์ธต์ ์คํํ ๋์ ๋น๊ตํ์ฌ ๋ช ๊ฐ์ง ์ด์ ์ ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค.
URL ์ํ ํ์ฉ - ๋ฐ์ํ ์์คํ ์์ ์ํ ๊ด๋ฆฌ์ ํฉ๊ธ๋ฅ ์ ์ต์ํ์ ์ํ ํํ์ ์ ์ฅํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ์ํ๋ฅผ ๋์ถํ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ์์น์ URL์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ฐ๋ณ URL ์ธ๊ทธ๋จผํธ๋ ์ปดํฌ๋ํธ ์๋ธ ํธ๋ฆฌ์ ๊ทธ ๋ด๋ถ์ ์ปดํฌ๋ํธ์ ํ์ฌ ์ํ์ ๋งคํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ ํ์ฌ ๊ฒ์ ํํฐ ๋๋ ํ์ฌ ์ ํ๋ ์ต์ ์ ๋งคํ๋ ์ ์์ต๋๋ค.
์ฑ๋ฅ ๊ด์ ์์ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฉด ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ด ๋ฐ์ดํฐ๊ฐ ์๋ ์๋ฒ์ ๊ฐ๊น์ด ๊ณณ์์ ๋ชจ๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์์ ์คํํ ๋์ฏค์ด๋ฉด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ค์ ์์ฒญํ ํ์ ์์ด ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ํ๋ณดํ ์ ์์ต๋๋ค. ์ด๋ ์ด๊ธฐ ๋ก๋ฉ๊ณผ ์ดํ ์ ํ์ ๋ชจ๋ ์ ๋ฆฌํ ์์น์ ๋๋ค.
๋ํ URL์ ํตํ ๊ณต์ ๊ฐ๋ฅํ ๋งํฌ๋ฅผ ํตํด ํ์๋๋ ์ฝํ ์ธ ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๊ณต์ ์ ๋ค๋ฅธ ์ฌ๋๋ค๋ ์ ํํ ํํฐ, ์คํ ๋ชจ๋ธ ๋ฑ์ ๋ณผ ์ ์๋๋ก ํ๋ ๋ฐฐํฌ ๋ฉ์ปค๋์ฆ์ผ๋ก์ ์น์ ํ์ ์ต๋ํ ํ์ฉํ๊ณ ์๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํฉ๋๋ค.
์ด๋ฅผ ์ผ๋์ ๋๊ณ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒฝ์ฐ, URL์ ํน์ ์ข ๋ฅ์ ํด๋ผ์ด์ธํธ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ์ ์ข์ ์ฅ์์ ๋๋ค.
์ด๋ฌํ ๊ณ์ธต์ ํด๋ผ์ด์ธํธ ๋ฐ์ผ๋ก ์ฎ๊ธฐ๋ฉด ๋ ๋ง์ ์์ ์ ์ํํ๊ณ ์๋ฒ์ ๋ ๋ง์ ์บ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ๊ธฐ๋ณธ ์์น์ ๋ ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๊ฐ๋ฅํ ํ ๋ง์ ์์ ์ ๋ฏธ๋ฆฌ ์ํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅํ๋ ๊ฒ์ ๋๋ค.
์บ์์๋ ์ฌ๋ฌ ์ ํ์ด ์์ผ๋ฉฐ ์บ์ ๋ด์๋ ๋ ๊น์ ๊ณ์ธต์ด ์์ผ๋ฏ๋ก ๋์ ์์ค์์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
ํผ๋ธ๋ฆญ ์บ์๋ ๋ฐ์ดํฐ๊ฐ ๋ฏผ๊ฐํ๊ฑฐ๋ ๊ฐ์ธํ๋์ง ์์ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ ๋น๋์ HTML ์ถ๋ ฅ์ด ์บ์๋๋ ํผ๋ธ๋ฆญ CDN์ ๋ค ์ ์์ต๋๋ค.
ํ๋ผ์ด๋น ์บ์๋ ๊ฐ๋ณ ์ฌ์ฉ์(๋๋ ๋ณ๋์ ์ฌ์ฉ์ ๊ทธ๋ฃน)๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ๋ฐ์ดํฐ์ ํด๋ผ์ด์ธํธ ์ธก ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์ ๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ค์ดํฐ๋ธ HTTP ์บ์๋ฅผ ๋ค ์ ์์ต๋๋ค.
๋ชจ๋ ์์คํ ์์ ๋ณต์ก์ฑ์ ์ฃผ์ ์์ธ ์ค ํ๋๋ ์ํ ๊ด๋ฆฌ์ ๋๋ค. ํ๋ฐํธ์๋์์๋ ํ๋ฐํธ์๋์ ์ํธ์์ฉํ๋ ์๊ฒฉ ๋ฐ์ดํฐ์์ ๋๊ธฐํ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ, ์ด๋ ์ฌ์ค์ ์ผ์ข ์ ์บ์ ๊ด๋ฆฌ์ ๋๋ค.
์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ๋ธ๋ผ์ฐ์ ์ ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์๋ฅผ ๋ทฐ์ ๋ฐ์ดํฐ ์ถ์ฒ๋ก ์ฌ์ฉํ๋ฉด ๋น ๋ฅธ ์ํธ ์์ฉ์ ์ํ ๋๊ด์ ์ธ ์ฐ๊ธฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์บ์๊ฐ ์์ ๋๋ง๋ค ์บ์๊ฐ ์ด๋ป๊ฒ ๋ฌดํจํ๋๋์ง ์ดํดํด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ธก ์บ์์ ์ํธ ์์ฉํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด ๊ณ์ธต์ ์๋ฒ๋ก ์ฎ๊ธด๋ค๋ ๊ฒ์ ๋ทฐ(view)์ ๊ธฐ๋ณธ ์์ค๋ฅผ ์ฎ๊ธด๋ค๋ ์๋ฏธ์ ๋๋ค. ํด๋ผ์ด์ธํธ ๋ชจ๋ธ์์ ์บ์ ๊ด๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ํ๋๋์ง ์ดํด๋ณด์์ผ๋ ์ด์ ์๋ฒ ์ฐ์ ๋ชจ๋ธ์์ ์บ์ ๊ด๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ํ๋๋์ง ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค.
โ์ ํต์ ์ธโ ์์ฒญ-์๋ต ๋ชจ๋ธ์์๋ ์ ๋ฐ์ดํธ ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋ฌธ์๋ฅผ ๋ ๋๋งํด์ผ ํ๋ฏ๋ก ์ ๋ฐ์ดํธ ์๋ฒ ์ํ์ ์ฐ๊ธฐ๊ฐ ํ์๊ณผ ์ฐ๊ด๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํจํด์ POST, redirect, GET ์์ฒญ ํ๋ฆ์ ๋๋ค.
<!-- ๋ธ๋ผ์ฐ์ ๋ "action"์ ์ ๋ฌ๋ URL๋ก ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. -->
<form action="form_action.php" method="post">
<!-- ํ๋ -->
</form>
๋๋ถ๋ถ์ ํ๋ ์์ํฌ๋ ์ด ํจํด์ ๊ธฐ๋ณธ์ผ๋ก ์ฐ๊ธฐ ์์ ์ ์ํํ๋ ๊ฒ์ผ๋ก ์๋ ดํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด SPA(PESPA)๋ฅผ ์ ์ง์ ์ผ๋ก ํฅ์๋๊ธฐ ์ฝ๋๋ก ๋ง๋ญ๋๋ค.
ํผ์ ์ก์ (action) ์์ฑ์ ๋ธ๋ผ์ฐ์ ์์ ์ ์กํ ํผ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ์๋ํฌ์ธํธ์ URL์ ์ฌ์ฉํฉ๋๋ค. Remix ๋ฐ Sveltekit๊ณผ ๊ฐ์ ํ๋ ์์ํฌ๋ ํผ ๋ฐ์ดํฐ๋ฅผ ๋ผ์ฐํ ์์ค ์๋ฒ ์ก์ ์ผ๋ก ์ ์กํฉ๋๋ค. ๋ฐ๋ฉด Next์ SolidStart๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ด๋ ๊ณณ์์๋ ์๋ฒ ์ก์ ์ ํธ์ถํ ์ ์์ผ๋ฏ๋ก RPC์ ๋ ์ ์ฌํฉ๋๋ค.
์๋ฒ ์ํ(๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ๋ชจ๋ ์๋ฒ ์บ์)์ ์ฐ๊ธฐ๊ฐ ์๋ฃ๋๋ฉด ํด๋ผ์ด์ธํธ ํ๋ ์์ํฌ๋ ์ ๋ฌธ์๋ฅผ ๋ฐํํ๋ ๋์ ๋ฐ์์ฑ ์์คํ ์ ์ฌ์ฉํ์ฌ ์๋ต์ ๋ค๋ฅด๊ฒ ํ๊ณ ํ์ด์ง๋ฅผ ๊ทธ ์๋ฆฌ์์ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋จ์ํ ๋ฐ์ดํฐ ๋์ ๋ทฐ๋ก ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ๋ ์ป์ ์ ์๋ ํ ๊ฐ์ง ์ด์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ๋ฆฌ๋๋ ์ ์ ๋ฐ์ ํ ๋ ๋ค๋ฅธ GET์ ์ํํ ํ์ ์์ด, ๋จ์ผ ์๋ฒ ์๋ณต์ผ๋ก ์ ๋ฐ์ดํธ๋ UI๋ฅผ ๋ฐํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ค์์ ์ดํด๋ณด๊ฒ ๋ ๋ฆฌ์กํธ ์๋ฒ ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ง ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ํด๋ผ์ด์ธํธ ์ธก ์บ์๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋นํด ํจ์ฌ ๊ฐ๋จํ๋ฉฐ ๋ฐ์ดํฐ ํ์นญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฒ๋ค๋งํ ํ์๋ ์์ต๋๋ค. ํ์ง๋ง ์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ์์ฒญ-์๋ต ๋ชจ๋ธ์ ๋ผ์ฐํธ(๋๋ ์ค์ฒฉ๋ ๋ผ์ฐํธ) ์์ค์์ ๋๋ต์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ์ํํฉ๋๋ค.
์ด๋ ๋๋ถ๋ถ์ ๊ฒฝํ์ ์ ํฉํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ํ์ง๋ง ํน์ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ ์ธ๋ถํ๋ ์บ์ ๊ด๋ฆฌ ๋ฐ ํด๋ผ์ด์ธํธ ์ธก ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ด์ ์ด ํ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ํด๋ง์ ํ๊ฑฐ๋ ๋๋ต์ ์ธ ์์ฒญ-์๋ต ํ๋ฆ์ด ๋น๋ ์ค์ธ ๋ด์ฉ๊ณผ ์ ๋งคํ๋์ง ์์, ์ฐ๊ธฐ ์ ์๋ฒ ์ปดํฌ๋ํธ๋ loader
ํจ์๋ฅผ ๋ค์ ์คํํ์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ ๋ฑ์ด ์ด์ ํด๋นํฉ๋๋ค.
๋ชจ๋ ๊ทธ๋ํ์์ ์ด๋์๋ ์ฌ์ฉํ ์ ์๋ ์๋ฒ ์ก์ ์ ์ฅ์ ์ ์๋ฏธ ์๋ ์ ๊ทผ ๋ฐฉ์์ ํผํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ ์ก์ ์ ๊ฒฐ๊ณผ๋ก ํด๋ผ์ด์ธํธ ์ธก ์บ์๋ฅผ ํ์ด๋๋ ์ดํธํ ์ ์์ต๋๋ค.
// RPC ์คํ์ผ ์๋ฒ ์ก์
์ ์ฌ์ฉํ ํด๋ผ์ด์ธํธ ํ์นญ ๋ฐ ์บ์ฑ
useQuery({
queryKey: ['cool-beans'],
// ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ ์ด๋ ํ ํจ์
queryFn: () => myServerActionThatReturnsJson(),
});
์ด ์์ญ์๋ ํจ์ฌ ๋ ๋ง์ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ผ๋ฏ๋ก ๋ ๋ง์ ์๊ฐ์ด ํ์ํฉ๋๋ค. ์๋ฒ ์ก์ ๊ณผ ๊ฒฐํฉ๋ ๋ฆฌ์กํธ ์๋ฒ ์ปดํฌ๋ํธ๊ฐ ์ ๊ณตํ๋ ๋ช ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ค๋ฅธ ์๋ก์ด ๊ธฐ์ ๊ณผ์ ๊ต์ฐจ์ ์ ์ดํดํ๋ ๊ฒ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๊ฒ ์ต๋๋ค.
๋ฆฌ์กํธ ์๋ฒ ์ปดํฌ๋ํธ๋ ์ค์ํ ํจ๋ฌ๋ค์์ ์ ํ์ ๋๋ค. ์ด๊ธฐ ๋จ๊ณ์์๋ ๊ฐ๋ ํํ๋ ๋ฐฉ๋ฒ์ด ๋ค์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
์์ผ๋๋ ์ํคํ ์ฒ์ ๊ด์ ์์ ๋ณด๋ฉด, Nuxt๋ Deno์ Fresh์ ๊ฐ์ ๋ค๋ฅธ ํ๋ ์์ํฌ ์ํ๊ณ์์๋ ๋ฆฌ์กํธ์๋ ๋ค๋ฅธ ๋ค์ํ ํํ์ ์๋ฒ ์ปดํฌ๋ํธ๊ฐ ํ๊ตฌ๋๊ณ ์์ต๋๋ค.
๋ฆฌ์กํธ์ ๋ชจ๋ ํธ๋ ์ด๋ ์คํ๋ ์ปดํฌ๋ํธ ๋ชจ๋ธ๊ณผ ๊ทธ์ ํจ๊ป ์ ๊ณต๋๋ ์ปดํฌ๋ํธ์ ๊ตฌ์ฑ ๋ฅ๋ ฅ์ ๋ณด์กดํ๊ธฐ ์ํ ๊ฒ์์ ๋ฐ์ํฉ๋๋ค. ์ํคํ ์ฒ ์์ค์์ ์ด๋ฅผ ์ดํดํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ปดํฌ๋ํธํ๋ BFF๋ก ์ดํดํ๋ ๊ฒ์ ๋๋ค.
ํด๋ผ์ด์ธํธ์ ๊ด์ ์์ RSC๋ ์ ์ ๋น๋ ์ค ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ์๋ฒ์์ ๋ฏธ๋ฆฌ ์คํ๋๋ ์ปดํฌ๋ํธ์ ๋๋ค.
๊ฐ๋จํ ๋ฉํ ๋ชจ๋ธ์ ์ง๋ ฌํ๋ ์ปดํฌ๋ํธ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ปดํฌ๋ํธ์ ์ถ๋ ฅ์ ์ง๋ ฌํํ์ฌ ๋ฉ์ธ ์ค๋ ๋์์ ๋ฆฌ์กํธ๋ฅผ ์คํํ๋ ์์ด๋์ด๋ ์ด๋์ ๋ ์๊ฐ์ด ์ง๋ ํ์ ๋ฑ์ฅํ ๊ฒ์ ๋๋ค.
์ด ์๋ก์ด ๊ธฐ๋ฅ์ ํตํด ๋ฆฌ์กํธ๋ ๋ค์ํ ์ํคํ ์ฒ ์คํ์ผ์ ํํํ ์ ์์ต๋๋ค.
๋ฏธ๋ฆฌ ๊ตฌ์ถ๋ ์ ์ ์ฌ์ดํธ, HTMX ์คํ์ผ์ AJAX ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ ์ค์ฌ ์ํคํ ์ฒ, ์ ์ง์ ์ผ๋ก ๊ฐ์ ๋ SPA, ๋จ์ผ ์ง์ ์ ์ ๊ฐ์ง ์์ํ๊ฒ ํด๋ผ์ด์ธํธ ๋ ๋๋ง๋ SPA ๋ฑ ๋ค์ํ ์ํคํ ์ฒ๋ฅผ ํํํ ์ ์์ต๋๋ค. ๋๋ ํน์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ชจ๋ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ ์ฌ์ ์ธ ์ฑ๋ฅ ์ด์ ์ธ์๋ ์ด๋ฌํ ์ ๋์ ์ธ ์ํคํ ์ฒ์ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์ ์ฌ์ ์ด์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์๋ฒ ์ปดํฌ๋ํธ๋ ์ ์ฒด ์คํ ๊ธฐ๋ฅ์ ๊ณต์ ์ ํฉ์ฑ ๋ฐ ์๋ก์ด ์ข ๋ฅ์ ํ๋ฐํธ์๋ ์์ฑ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ ์กฐ์ง ๋ด์์ ํ๋ฐํธ์๋ ํ๊ณผ ๋ฐฑ์๋ ํ์ ๋ถ๋ฆฌํ๋ ๋ชจ๋ธ์ ํ์คํ ์์ง ์ฌ๋ผ์ด์ค ๋๋ ์คํธ ์ค๋ ๋๋ก ์์ ํ๋ ํ์ ๋ง๊ฒ ์กฐ์ ํ๋ ์๋ก์ด ๋ฐฉ์์ ๋๋ค.
ํ์คํ๋ ์ธํ๋ผ๋ฅผ ๊ฐ์ถ ๋๊ท๋ชจ ์กฐ์ง์ ๊ฒฝ์ฐ, ์ ํ ํ์์ ์ฌ์ฉํ๊ณ ํฉ์ฑํ ์ ์๋ ํ์คํ ํ๋ซํผ ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ ํ๋ ๊ฒ์ด ํ๋นํ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. ์ฐํฉ๋ ๋ชจ๋ธ(federated model)์์ RSC์ ์ถ๋ ฅ์ ํฉ์ฑํ๋ ๊ธฐ๋ฅ๋ ์๋กญ๊ฒ ๋ ์ค๋ฅด๋ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋๋ค.
์ด๊ฒ์ด ์์ฝ์์คํ ์์ค์์ ์ด๋ป๊ฒ ์๋ํ ์ง๋ ๋ช ํํ์ง ์์ง๋ง, ์ปดํฌ๋ํธ API ๋์์ธ์ ํฅ๋ฏธ๋ก์ด ๋ณํ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํจํค์ง๋ ์๋ฒ ์ํฐํด์ ํผํ๊ธฐ ์ํด ๋ผ์ฐํธ ์์ค๊น์ง ๋์ด์ฌ๋ฆด ์ ์๋ ํ๋ฆฌ๋ก๋ ํจ์๋ฅผ ๋ด๋ณด๋ผ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ ์๋ก์ด ํจ๋ฌ๋ค์์ด๊ธฐ ๋๋ฌธ์ ์์ง ๋ง์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ๊ตฌํด์ผ ํ๋ฉฐ, ํจ์ ์ ์ฐพ์์ผ ํฉ๋๋ค.
์ด ๊ฐ๋ ์ AirBnb ๋ฐ Uber์ ๊ฐ์ ์ผ๋ถ ๋ํ ์กฐ์ง์์ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ํ๋ฐํธ์๋์ ์๋ฒ ๊ธฐ๋ฐ ๋ ๋๋ง์ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ๊ธฐ ์ํด ํ์ฉํ๊ณ ์์ต๋๋ค.
react-strict-dom์ ๋์ ์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ RSC๋ฅผ ์กฐํฉํ์ฌ ์ด๋ฌํ ์์ด๋์ด๋ฅผ ์น์ ๋์ด AR ๋ฐ ๊ณต๊ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ฐ์ ์๋ก์ด ํ๋ซํผ์ ํฌํจํ ํ๋ซํผ ์ ๋ฐ์ ๋ณด๋ค ์ฝ๊ฒ ํ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
์์ฑํ AI์ ๋ฏธ๋๊ฐ ์ด ๋ถ์ผ์์ ์ด๋ป๊ฒ ์ ๊ฐ๋ ์ง ์์ธกํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ํ์ง๋ง ์ด ๊ธฐ์ ์ ์์ผ๋ก ๊ณ์ ๋ฐ์ ํ ๊ฒ์ ๋๋ค. ์ด ๋ชจ๋ธ์์ ์๋กญ๊ฒ ๋ ์ค๋ฅด๋ ๊ธฐ๋ฅ์ ๊ณ ๋๋ก ๊ฐ์ธํ๋๊ณ ํ๋ถํ ์ธํฐ๋ ํฐ๋ธ ๊ฒฝํ์ ์ค์๊ฐ์ผ๋ก ์์ฑํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๋ณด๋ค ํ์ค์ ์ธ ์๋ก ๋ ๋๋งํ ์ปดํฌ๋ํธ๋ฅผ ํ์ ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ์ํฉ์ ๋ค ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฐ์ง ์ ํ์ ์ธํฐ๋ํฐ๋ธ ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ฒ๋ค๋ก ๋ฌถ์ด์ผ ํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ UI ์ปดํฌ๋ํธ์ ์๋ ๋ฌดํ์ ๋์ด๋ ์ ์๊ธฐ ๋๋ฌธ์(์: CMS ์ฝํ ์ธ ์ ํ), ์ด๋ฌํ ์ ํ์ ๋์ ๋ ๋๋ง์ ๋ชจ๋ ์ฝ๋๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ผ ํ๊ฑฐ๋ ํด๋ผ์ด์ธํธ์์ ์ฌ๋ฌ ์ปดํฌ๋ํธ ์ ํ์ ์ง์ฐ ๋ก๋ํ ๋ ์ง์ฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ปดํฌ๋ํธ๋ฅผ ์๋ํฌ์๋๋ก ์ฌ์ฉํ๋ฉด ๋๊ท๋ชจ ๋ฒ๋ค์ ๋๋ฆฌ์ง ์๊ณ ๋ ์ปดํฌ๋ํธ๋ฅผ ์คํธ๋ฆฌ๋ฐํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ฌ๊ธฐ์ ํฅ๋ฏธ๋ก์ด ํ๊ตฌ๋ AI ํจ์ ํธ์ถ์ ์ฌ์ฉํ์ฌ ์๋ฒ ์ก์ ์ ์ ์ฐ์ฑ๊ณผ ํจ๊ป ์ง๋ ฌํ๋ ์ธํฐ๋ ํฐ๋ธ ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ๋ ๊ฒ์ ๋๋ค.
์ด ๊ธ์์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๋ ์ด์ด ์ค ์ผ๋ถ์ ๋ํด์๋ง ๋ค๋ฃจ์์ต๋๋ค. WebAssembly๋ WebGPU์ ๊ฐ์ ๊ธฐ์ ์ด ์์์น ๋ชปํ ๋ฐฉ์์ผ๋ก ์์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋งํ ๊ฒ๋ ์๊ณ , ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ์ธ๋ถ์ ๋ค๋ฅธ ์ํ๊ณ์์ ์ํ๋ฅผ ๊ฐ์ง(stateful) ์๋ฒ ์ ๊ทผ ๋ฐฉ์์ด๋ ๋ก์ปฌ ์ฐ์ ๊ฐ๋ฐ์ ๋ฑ์ฅ๊ณผ ํจ๊ป ํธ๋ ์ด๋์คํ๊ฐ ์์ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ชจ๋ ๊ธฐ์ ์ ์ต์ ์ ์ ์๋ค๋ ๊ฒ์ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์ผ์ ๋๋ค. ํ์ง๋ง ์๋๋นํ๊ธฐ ์ฝ๊ธฐ๋ ํฉ๋๋ค.
๊ฐ๋ฐ์ ํ์์ ์ธ ๊ธฐ์ ์ ๋ฌธ์ ์ ๋ด์ฌ์ ๋ณต์ก์ฑ๊ณผ ๊ทธ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์์ ๋ฐ์ํ๋ ๋ถ์์ ์ธ ๋ณต์ก์ฑ์ ์๋ณํ๋ ๊ฒ์ ๋๋ค. ํ๋ฐํธ์๋ ์ ์ ๋ค์๊ฒ๋ ๊ธฐ๋ณธ์ ์ด๊ณ ๋ณํ์ง ์๋ ๊ฐ๋ ์ ์ด์ ์ ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์์ง๋์ด๋ง(๊ทธ๋ฆฌ๊ณ ์ธ์)์ ํฐ ๋ถ๋ถ์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ํ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์์ ํ์ ์๊ตฌ ์ฌํญ์ ๋ํด ๋ ๋ง์ด ์์๋ก ๋ ๋์ ์ ์ถฉ์์ ๋์ถํ ์ ์๊ณ ๊ฒฐ์ ์ ๋ํ ํ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๊ธฐ์ ์ ๋ฐ์ ์ ์ดํดํ๋ ๋ฐ ์์ด ์ค์ํ ์ธ์ฌ์ดํธ๋ ๊ธฐ์ ์ ๋ฐ์ ์ด ํญ์ ๋ชจ๋ ๊ฒ์ ๋ํ ์ง๋ณด๋ฅผ ์๋ฏธํ์ง๋ ์๋๋ค๋ ๊ฒ์ ๋๋ค.
ํ์ ์ ํ ๋จ๊ณ์ ์๋ ๊ธฐ๋ฅ์ด๋ ์ ๊ทผ ๋ฐฉ์์ด ์ฌ๋ฌ๋ถ์ด ๋ง๋ค๊ณ ์ ํ๋ ๊ฒ์ ๋ฑ ๋ง์ ์ ์์ผ๋ฉฐ, ๊ทธ๋ ๋ค๋ฉด ๊ณ์ ๊ตฌ์ถํด ๋๊ฐ๋ฉฐ, ํ์ด์ด ์ฌ๋ฌ๋ถ๊ณผ ํจ๊ป ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๐ ํ๊ตญ์ด๋ก ๋ ํ๋ฐํธ์๋ ์ํฐํด์ ๋น ๋ฅด๊ฒ ๋ฐ์๋ณด๊ณ ์ถ๋ค๋ฉด Korean FE Article(https://kofearticle.substack.com/)์ ๊ตฌ๋ ํด์ฃผ์ธ์!