DEVLOG
CSR๊ณผ SSR์ ์ฐจ์ด์ , ์ธ์ ๋ฌด์์ ์ฌ์ฉํด์ผ ํ ๊น? ๋ณธ๋ฌธ
CSR๊ณผ SSR์ ์ฐจ์ด์ , ์ธ์ ๋ฌด์์ ์ฌ์ฉํด์ผ ํ ๊น?
meroriiDev 2023. 5. 12. 15:54
๐ ๋ชฉ์ฐจ
Next.js ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฒ ๋ ์ด์ ๋ฅผ ์ ๋ฆฌํ๋ค๋ณด๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๋ถํฐ ๊ณ์ํด์ ์ ๋ฆฌํด๋๊ฐ๊ณ ์ถ์ด์ ๊ธ์ ๊ณ์ ์์์ ์ฅํ๋ฉฐ ์ ๊ธ์ ์์ฑํ๊ธฐ๊น์ง ๋ฒ์จ 3๋ฒ์งธ ๊ธ,,,
CSR๊ณผ SSR์ ์ฐจ์ด๋ถํฐ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํฉ๋๋ค!
๐ก ๋ ๋๋ง์ด๋ ๋ฌด์์ผ๊น?
CSR : Client Side Rendering
SSR : Server Side Rendering
CSR๊ณผ SSR,,,
๋ ๋๋ง ๋ฐฉ์์ ์ฐจ์ด์ ์ด๋ ๊ฒ์ ์๊ฒ ๋๋ฐ ๊ทธ๋ ๋ค๋ฉด ๋ ๋๋ง์ด๋ ๋ฌด์์ ์๋ฏธํ๋๊ฑธ๊น?
๋จผ์ ๋ ๋๋ง์ด๋, ์๋ฒ๋ก๋ถํฐ ๋ด์ฉ์ ๋ฐ์ ๋ธ๋ผ์ฐ์ ์ ๋ฟ๋ ค์ฃผ๋ ๊ณผ์ ์
๋๋ค.
HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฑ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ๋ฌธ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ถ๋ ฅ๋๋ ๊ณผ์ ์ ๋งํฉ๋๋ค.
๋ ๋๋ง๊ณผ์
- Loader ๊ฐ ์๋ฒ๋ก ๋ถํฐ ์ ๋ณด๋ค์ ๋ถ๋ฌ์ต๋๋ค.
- ํ์ฑ์ ํตํด ๋ฌธ์๋ฅผ DOM(Document Object Model), CSSOM(CSS Object Model)์ ๋ง๋ญ๋๋ค.
- DOM๊ณผ CSSOM์ ์ด์ฉํ์ฌ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- ๋ ์ด์์ ์์น ์ง์
- ๋ ์ด์์ ๋จ๊ณ๊ฐ ๋๋๋ฉด ๋ ๋ํธ๋ฆฌ๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ง๋๋ค.
๋ ๋๋ง์ ๋ํด์ ์์๋ณด๋ค๊ฐ ์๊ฒ๋๊ฑด๋ฐ,,
๋ ๋๋ง์ด ์๋ฃ๋ ์ํ์์ ์ฌ์ฉ์์ ์ธํฐ๋์
์ ์ํด ํ๋ฉด์ ์ผ๋ถ ์์ญ์ด ๋ณ๊ฒฝ๋๋ค๋ฉด, ๋ฆฌํ๋ก์ฐ ๋๋ ๋ฆฌํ์ธํธ๊ฐ ๋ฐ์ํ๋๋ฐ ๋ ๋๋ง๊ณผ ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ๊ธ์ด ์ ์ ๋ฆฌ๋์ด์๋ ๋ธ๋ก๊ทธ์์ ํ๋ฒ์ฏค ์ฝ์ด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค :)
๊ทธ๋ ๋ค๋ฉด CSR ๊ณผ SSR์ ์ด๋ฌํ ๋ ๋๋ง ๋ฐฉ์์ ์ด๋ค ๋ถ๋ถ์ด ๋ค๋ฅด๊ณ ์ด๋ค ์ฅ๋จ์ ์ด ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
๐ก CSR (Client Side Rendering)
CSR์ ํด๋ผ์ด์ธํธ์์ ๋ ๋๋ง์ ํ๋ ๋ฐฉ์์ผ๋ก ์๋ฒ๋ ์์ฒญ์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ์ HTML๊ณผ JS๋ฅผ ๋ณด๋ด์ฃผ๊ณ , ํด๋ผ์ด์ธํธ๋ ๊ทธ๊ฒ์ ๋ฐ์ ๋ ๋๋ง์ ์์ํฉ๋๋ค.
CSR์ ์ฒซ ๋ก๋ฉ์์ ํ์ด์ง๋ฅผ ๋ชจ๋ ๋ถ๋ฌ์จ ํ ์ฌ์ฉ์์ ํ๋์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ์๋ฒ๋ก๋ถํฐ ๋ฐ์์ ์ ์ฒด ๋ฆฌ๋ก๋ฉ ์์ด ํ๋ฉด์ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ SPA(REACT)๋ CSR๋ฐฉ์์
๋๋ค.
CSR๋ฐฉ์ ์งํ๊ณผ์
- User๊ฐ Website ์์ฒญ์ ๋ณด๋.
- CDN์ด HTML ํ์ผ๊ณผ JS๋ก ์ ๊ทผํ ์ ์๋ ๋งํฌ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ธ๋ค.
- ํด๋ผ์ด์ธํธ๋ HTML๊ณผ JS๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๋๋ค. (์ด๋ SSR๊ณผ ๋ฌ๋ฆฌ ์ ์ ๋ ์๋ฌด๊ฒ๋ ๋ณผ ์ ์๋ค.)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ฐ๋๋ค.
- ๋ค์ด์ด ์๋ฃ๋ JS๊ฐ ์คํ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ํ API๊ฐ ํธ์ถ๋๋ค. (์ด๋ ์ ์ ๋ค์ placeholder๋ฅผ ๋ณด๊ฒ๋๋ค.)
- ์๋ฒ๊ฐ API๋ก๋ถํฐ์ ์์ฒญ์ ์๋ตํ๋ค.
- API๋ก๋ถํฐ ๋ฐ์์จ data๋ฅผ placeholder ์๋ฆฌ์ ๋ฃ์ด์ค๋ค. ์ด์ ํ์ด์ง๋ ์ํธ์์ฉ์ด ๊ฐ๋ฅํด์ง๋ค.
์ฅ์
- CSR์ ์ด๋ฏธ ์ฒซ ํ์ด์ง ๋ก๋ฉํ ๋ ๋๋จธ์ง ๋ถ๋ถ์ ๊ตฌ์ฑํ๋ ์ฝ๋๋ฅผ ๋ฐ์์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ๋ก๋ฉ์ ์ ์ธํ ํ์ด์ง ์ด๋์ ๊ฒฝ์ฐ ๊ตฌ๋์๋๊ฐ SSR๋ณด๋ค ๋น ๋ฅด๋ค.
- ์ฌ์ฉ์์ ํ๋์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ๋ฆฌ๋ก๋ฉ ์์ด ๋ค์ ์ฝ์ด๋ค์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ธก์์ ๋ ๋๋งํ์ฌ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ์ฝ์ด๋ค์ด๋ ๊ฒ๋ณด๋ค ๋น ๋ฅธ ์ธํฐ๋ ์ ์ ๊ธฐ๋ํ ์ ์๋ค.
๋จ์
- ์ด๊ธฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ฐ์์ ํด๋ผ์ด์ธํธ์์ ๋ ๋๋งํ๊ธฐ๋๋ฌธ์ ์ด๊ธฐ ๊ตฌ๋์๋๊ฐ ๋๋ฆฌ๋ค.
- ๊ฒ์์์ง ์ต์ ํ(SEO)๊ฐ ์ด๋ ต๋ค.
๐ก SSR (Server Side Rendering)
SSR์ ์๋ฒ์์ ๋ ๋๋ง์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ค์๋งํด ์๋ฒ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ์ด์ง๋ฅผ ๋ชจ๋ ๊ตฌ์ฑํ ํ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ์์ ๋๋ค.
SSR๋ฐฉ์ ์งํ๊ณผ์
- User๊ฐ Website ์์ฒญ์ ๋ณด๋.
- Server๋ 'Ready to Render'. ์ฆ, ์ฆ์ ๋ ๋๋ง ๊ฐ๋ฅํ htmlํ์ผ์ ๋ง๋ ๋ค.
(๋ฆฌ์์ค ์ฒดํฌ, ์ปดํ์ผ ํ ์์ฑ๋ HTML ์ปจํ ์ธ ๋ก ๋ง๋ ๋ค.)- ํด๋ผ์ด์ธํธ์ ์ ๋ฌ๋๋ ์๊ฐ, ์ด๋ฏธ ๋ ๋๋ง ์ค๋น๊ฐ ๋์ด์๊ธฐ ๋๋ฌธ์ HTML์ ์ฆ์ ๋ ๋๋ง ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ดํธ ์์ฒด๋ ์กฐ์ ๋ถ๊ฐ๋ฅํ๋ค. (Javascript๊ฐ ์ฝํ๊ธฐ ์ ์ด๋ค.)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ฐ๋๋ค.
- ๋ค์ด ๋ฐ์์ง๊ณ ์๋ ์ฌ์ด์ ์ ์ ๋ ์ปจํ ์ธ ๋ ๋ณผ ์ ์์ง๋ง ์ฌ์ดํธ๋ฅผ ์กฐ์ ํ ์๋ ์๋ค. ์ด๋์ ์ฌ์ฉ์ ์กฐ์์ ๊ธฐ์ตํ๊ณ ์๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ Javascript ํ๋ ์์ํฌ๋ฅผ ์คํํ๋ค.
- JS๊น์ง ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผ ๋์๊ธฐ ๋๋ฌธ์ ๊ธฐ์ตํ๊ณ ์๋ ์ฌ์ฉ์ ์กฐ์์ด ์คํ๋๊ณ ์ด์ ์น ํ์ด์ง๋ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง๋ค.
์ฅ์
- ์ด๊ธฐ ๋ก๋ฉ์ ํ์ํ ๋ถ๋ถ์ HTML๊ณผ ์คํฌ๋ฆฝํธ๋ง ๋ถ๋ฌ์ค๊ฒ ๋์ด ์ด๊ธฐ ๋ก๋ฉ์๋๊ฐ CSR๋ณด๋ค ๋ ๋น ๋ฅด๋ค.
- ๊ฒ์์์ง ์ต์ ํ(SEO)๊ฐ ์ฉ์ดํ๋ค.
์ ์ด์ ์๋ฒ ์ฌ์ด๋์์ ์ปดํ์ผ๋์ด ํด๋ผ์ด์ธํธ๋ก ๋์ด์ค๊ธฐ ๋๋ฌธ์ ํฌ๋กค๋ฌ์ ๋์ํ๊ธฐ ์ฉ์ดํ๋ค.
๋จ์
- ํ์ด์ง ์ด๋์์ ์ด๊ธฐ ๋ก๋ฉ์ ์งํํ ๊ณผ์ ์ ๋๊ฐ์ด ์คํํ๊ฒ ๋์ด ํ์ด์ง ์ด๋์ ๋ก๋ฉ ์๋๊ฐ CSR์ ๋นํด ๋๋ฆฌ๋ฉฐ, ํ์ด์ง๊ฐ ๊น๋นก์ธ๋ค.
- ๋งค๋ฒ ์๋ฒ์ ์์ฒญ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์์์ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
๐ก CSR vs SSR
๐๐ป SSR๊ฐ ์ข์์
- SEO(serach engine optimization : ๊ฒ์ ์์ง ์ต์ ํ)๊ฐ ํ์ํ ๋
- ๋คํธ์ํฌ๊ฐ ๋๋ฆด ๋ (CSR์ ํ๋ฒ์ ๋ชจ๋ ๊ฒ์ ๋ถ๋ฌ์ค์ง๋ง SSR์ ๊ฐ ํ์ด์ง๋ง๋ค ๋๋ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ)
- ์ต์ด ๋ก๋ฉ์ด ๋นจ๋ผ์ผํ๋ ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐ ํ ๋
- ๋ฉ์ธ ์คํฌ๋ฆฝํธ๊ฐ ํฌ๊ณ ๋ก๋ฉ์ด ๋งค์ฐ ๋๋ฆด ๋
CSR์ ๋ฉ์ธ์คํฌ๋ฆฝํธ๊ฐ ๋ก๋ฉ์ด ๋๋๋ฉด API๋ก ๋ฐ์ดํฐ ์์ฒญ์ ๋ณด๋ธ๋ค. ํ์ง๋ง SSR์ ํ๋ฒ์ ์์ฒญ์ ์์ ๋ ๋๊ฐ ๊ฐ๋ฅํ ํ์ด์ง๊ฐ ๋์์จ๋ค. - ์น ์ฌ์ดํธ๊ฐ ์ํธ์์ฉ์ด ๋ณ๋ก ์์ ๋
๐๐ป CSR์ด ์ข์์
- SEO๊ฐ ๊ตณ์ด ํ์ํ์ง ์์ ๋
- ๋คํธ์ํฌ๊ฐ ๋น ๋ฅผ ๋
- ์๋ฒ์ ์ฑ๋ฅ์ด ์ข์ง ์์ ๋
- ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค์ผ ํ๋ ๋ฐ์ดํฐ์ ์์ด ๋ง์ ๋ (๋ก๋ฉ์ฐฝ์ ๋์ธ ์ ์๋ ์ฅ์ ์ด ์๋ค.)
- ๋ฉ์ธ ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ๋ฒผ์ธ ๋
- ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์์ ์ํธ์์ฉํ ๊ฒ๋ค์ด ๋ง์ ๋. (์์ ๋ ๋๋ง ๋์ง ์์์ ์ฌ์ฉ์์ ํ๋์ ๋ง๋ ๊ฒ์ด ๊ฒฝํ์ ์คํ๋ ค ์ ๋ฆฌํจ.)